This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] New condvar implementation that provides stronger ordering guarantees.


On Sat, 2015-07-11 at 15:35 +0200, OndÅej BÃlka wrote:
> On Fri, Jul 03, 2015 at 04:00:55PM +0200, Torvald Riegel wrote:
> > On Fri, 2015-07-03 at 13:28 +0200, OndÅej BÃlka wrote:
> > > On Fri, Jul 03, 2015 at 11:03:25AM +0200, Torvald Riegel wrote:
> > > > On Thu, 2015-07-02 at 23:48 +0200, OndÅej BÃlka wrote:
> > > > Yes, we may not just be dealing with short critical sections.  However,
> > > > if we have long critical sections on the waiter side, and broadcast or
> > > > many signals wake many waiters, then some potential slowdown due to
> > > > contention is less important because the program isn't scalable in the
> > > > first place (ie, has many long critical sections that need to be
> > > > serialized).  Specifically, one of the long critical sections will get
> > > > the lock; while it has it, the others will sort things out, in parallel
> > > > with the critical section that is running.  That means we may do some
> > > > extra work, but it won't slow down the critical section that has the
> > > > lock.
> > > >
> > > My argument was that a other method is from different thread but waiters
> > > could be fast. So it could be hard to distinguish between these.
> > > 
> > > A extra work matters if program used multiple threads effectively and
> > > could run computation instead of rescheduling threads that will only
> > > find lock locked. 
> > 
> > If a program relies on threads waiting to acquire a lock to give up the
> > compute resource so that it can run other stuff instead, the program
> > isn't using threads efficiently.  It's oversubscribing the machine, and
> > the context switches will matter more than a bit of contention.
> >
> Thats false as it doesn't have to be one program at all, it could affect
> different process on machine.

Same thing, it's inefficient in this case too.  Granted, many programs
just assume that they have the machine completely for themselves, and
that's often the case -- but that doesn't mean that this is optimal
behavior in general.  Providing abstractions to make this easier to be
handled correctly is future work.




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]