On Tue, 2015-02-03 at 11:43 -0800, Tim Chen wrote: > On Tue, 2015-02-03 at 09:54 -0800, Jason Low wrote: > > On Tue, 2015-02-03 at 09:16 -0800, Tim Chen wrote: > > > > > > > > > > > > + if (READ_ONCE(sem->owner)) > > > > > > + return true; /* new owner, continue spinning */ > > > > > > + > > > > > > > > > > Do you have some comparison data of whether it is more advantageous > > > > > to continue spinning when owner changes? After the above change, > > > > > rwsem will behave more like a spin lock for write lock and > > > > > will keep spinning when the lock changes ownership. > > > > > > > > But recall we still abort when need_resched, so the spinning isn't > > > > infinite. Never has been. > > > > > > > > > Now during heavy > > > > > lock contention, if we don't continue spinning and sleep, we may use > > > > > the > > > > > clock cycles for actually running other threads. > > > > > > > > Under heavy contention, time spinning will force us to ultimately block > > > > anyway. > > > > > > The question is under heavy contention, if we are going to block anyway, > > > won't it be more advantageous not to continue spinning so we can use > > > the cycles for useful task? > > > > Hi Tim, > > > > Now that we have the OSQ logic, under heavy contention, there will still > > only be 1 thread that is spinning on owner at a time. > > That's true. We cannot have the lock grabbed by a new write > contender as any new writer contender of the lock will be > queued by the OSQ logic. Only the > thread doing the optimistic spin is attempting write lock. > In other word, switching of write owner of the rwsem to a new > owner cannot happen.
Another thread can still obtain the write lock in the fast path though right? We try to obtain the write lock once before calling rwsem_down_write_failed(). -- 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/

