From mboxrd@z Thu Jan 1 00:00:00 1970 From: Changli Gao Subject: Re: [RFC] sched: implement the exclusive wait queue as a LIFO queue Date: Wed, 28 Apr 2010 21:42:12 +0800 Message-ID: References: <1272430986-20436-1-git-send-email-xiaosuo@gmail.com> <20100428081545.GA19027@windriver.com> <8482.1272446987@redhat.com> <20100428132135.GA22268@shareable.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: David Howells , Yong Zhang , Xiaotian Feng , Ingo Molnar , Alexander Viro , Andrew Morton , "Eric W. Biederman" , Davide Libenzi , Roland Dreier , Stefan Richter , Peter Zijlstra , "David S. Miller" , Eric Dumazet , Christoph Lameter , Andreas Herrmann , Thomas Gleixner , Takashi Iwai , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org To: Jamie Lokier Return-path: In-Reply-To: <20100428132135.GA22268@shareable.org> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Wed, Apr 28, 2010 at 9:21 PM, Jamie Lokier wro= te: > Changli Gao wrote: >> >> fs/eventpoll.c: 1443. >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 wait.flags |= =3D WQ_FLAG_EXCLUSIVE; >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __add_wait_q= ueue(&ep->wq, &wait); > > The same thing about assumptions applies here. =C2=A0The userspace pr= ocess > may be waiting for an epoll condition to get access to a resource, > rather than being a worker thread interchangeable with others. Oh, the lines above are the current ones. So the assumptions applies and works here. > > For example, userspace might be using a pipe as a signal-safe lock, o= r > signal-safe multi-token semaphore, and epoll to wait for that pipe. > > WQ_FLAG_EXCLUSIVE means there is no point waking all tasks, to avoid = a > pointless thundering herd. =C2=A0It doesn't mean unfairness is ok. The users should not make any assumption about the waking up sequence, neither LIFO nor FIFO. > > The LIFO idea _might_ make sense for interchangeable worker-thread > situations - including userspace. =C2=A0It would make sense for pipe > waiters, socket waiters (especially accept), etc. Yea, and my following patches are for socket waiters. > > Do you have any measurements which showing the LIFO mode performing > better than FIFO, and by how much? > I didn't do any test yet. But some work done by LSE project years ago showed that it is better. http://lse.sourceforge.net/io/aionotes.txt " Also in view of better cache utilization the wake queue mechanism is LIFO by default. (A new exclusive LIFO wakeup option has been introduced for this purpos= e)" --=20 Regards=EF=BC=8C Changli Gao(xiaosuo@gmail.com)