Thread (14 messages) 14 messages, 6 authors, 2016-03-17

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help