On Thu, 6 Oct 2005, Hugh Dickins wrote:
>
> That reminds me: ought cond_resched_lock to be doing something more?
I suspect the "need_resched()" case is sufficient in practice: it might
not be perfect, but let's face it, there's not a lot we can do.
It's true that the cpu_relax() basically does nothing except perhaps by
luck (and depending on CPU and memory setup). There's no good alternative,
though. You could make it more complex and change the cpu_relax() to
something like
i = random_backoff();
for (;;) {
cpu_relax();
if (spin_is_locked(lock))
break;
if (!need_lockbreak(lock))
break;
if (!--i)
break;
}
but I'd argue vehemently that you shouldn't do this unless you can see
real problems.
I doubt it's really a problem in practice. You have to have a really hot
spinlock that stays hot on one CPU (and most of them you can't even _make_
hot from user space), and I suspect we've fixed the ones that matter.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]