Re: RFC on fixing mutex spinning on owner
From: Nicholas Mc Guire <hidden>
Date: 2016-03-17 09:09:17
Also in:
lkml
On Thu, Mar 17, 2016 at 08:36:05AM +0100, Peter Zijlstra wrote:
On Wed, Mar 16, 2016 at 10:17:51PM -0400, Steven Rostedt wrote:quoted
Actually, the preempt off section here is not really an issue: rcu_read_lock(); while (owner_running(lock, owner)) { if (need_resched()) break; cpu_relax_lowlatency(); } rcu_read_unlock(); Although preemption may be disabled, that "need_resched()" check will break out of the loop if a higher priority task were to want to run on this CPU. I probably should add a hook there to let the preemptoff tracer know that this is not an issue.Urgh, there's a lot of such spin loops all over, that's going to be a pain to annotate all.
scanning for that patter with a quite relaxed spatch did not
turn up more than a hand full:
@resched_spin exists@
position p;
@@
(
* while@p (...) {
...
if (need_resched() || ...)
break;
...
\(cpu_relax\|cpu_relax_lowlatency\)();
}
|
* while@p (!need_resched()) {
...
\(cpu_relax\|cpu_relax_lowlatency\)();
}
)
@script:python@
p << resched_spin.p;
@@
print "%s:%s " % (p[0].file,p[0].line)
is this making some wrong assumptions here or is this
really so infrequent ?
thx!
hofrat