Messages in this thread |  | | | From | Changli Gao <> | | Date | Wed, 28 Apr 2010 21:42:12 +0800 | | Subject | Re: [RFC] sched: implement the exclusive wait queue as a LIFO queue |
| |
On Wed, Apr 28, 2010 at 9:21 PM, Jamie Lokier <jamie@shareable.org> wrote: > Changli Gao wrote: >> >> fs/eventpoll.c: 1443. >> wait.flags |= WQ_FLAG_EXCLUSIVE; >> __add_wait_queue(&ep->wq, &wait); > > The same thing about assumptions applies here. The userspace process > 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, or > 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. It 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. It 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 purpose)"
-- Regards, Changli Gao(xiaosuo@gmail.com) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |