On Tue, May 22, 2018 at 02:31:42PM -0700, Linus Torvalds wrote: > On Tue, May 22, 2018 at 2:17 PM Peter Zijlstra <pet...@infradead.org> wrote: > > > qrwlock is a fair lock and should not exhibit writer starvation. > > We actually have a special rule to make it *not* be fair, in that > interrupts are allowed to take the read lock if there are readers - even if > there are waiting writers.
Urgh, right.. would be interesting to know how much of that is happening in that workload. I assumed the readers were mostly due to the syscalls the reporter talked about, and those should not trigger that case. > > You basically want to spin-wait with interrupts enabled, right? > > That was the intent of my (untested) pseudo-code. It should work fine. Note > that I used write_trylock() only, so there is no queueing (which also > implies no fairness). > > I'm not saying it's a _good_ idea. I'm saying it might work if all you > worry about is the irq-disabled part. Right, if you make it unfair and utterly prone to starvation then yes, you can make it 'work'.