Messages in this thread | | | Date | Sun, 7 Apr 2013 11:02:53 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [RFC PATCH] wfcqueue: implement __wfcq_enqueue_head() (v2) |
| |
* Eric Wong (normalperson@yhbt.net) wrote: > Mathieu Desnoyers <mathieu.desnoyers@efficios.com> wrote: > > Implement enqueue-to-head. It can run concurrently with enqueue, splice > > to queue, and iteration, but requires a mutex against dequeue and splice > > from queue operations. > > > > Useful for special-cases where a queue needs to have nodes enqueued into > > its head. > > > > This patch is only compile-tested. > > > > Changes since v1: > > * Don't require mutual exclusion between traversals and > > __wfcq_enqueue_head(). > > > > Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> > > Thanks! The first hunk (sync table comment) conflicted with > my __wfcq_enqueue patch, but other than that I could not benchmark any > regression with my 4-core machine with v4 of my > "epoll: avoid spinlock contention with wfcqueue" patch. > > All I needed was "s/__wfcq_prepend/__wfcq_enqueue_head/g" to my original > patch to use the updated API. > > I was worried about the cmpxchg at first, but it does not seem to hurt > performance on my 4-core system. In fact, it was slightly better > (but within margin of error) > > time ./eponeshotmt -c 1000000 -w 4 -t 4 -f 10 > real 0m 5.78s > user 0m 1.20s > sys 0m 21.90s > > Tested-by: Eric Wong <normalperson@yhbt.net> > > Hopefully somebody can test my epoll patches with more cores/threads :)
Thanks for testing. Taking care of your comments, and of memory barriers, brings me to send a v3 of this patch shortly. Testing is welcome!
Thanks,
Mathieu
-- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com
| |