Messages in this thread | | | Date | Mon, 23 Apr 2001 23:34:35 +0200 | From | Andrea Arcangeli <> | Subject | Re: [PATCH] rw_semaphores, optimisations try #3 |
| |
On Mon, Apr 23, 2001 at 09:35:34PM +0100, D . W . Howells wrote: > This patch (made against linux-2.4.4-pre6) makes a number of changes to the > rwsem implementation: > > (1) Everything in try #2 > > plus > > (2) Changes proposed by Linus for the generic semaphore code. > > (3) Ideas from Andrea and how he implemented his semaphores.
I benchmarked try3 on top of pre6 and I get this:
---------------------------------------------- RWSEM_GENERIC_SPINLOCK y in rwsem-2.4.4-pre6 + your latest #try3
rw
reads taken: 5842496 writes taken: 3016649 reads taken: 5823381 writes taken: 3006773
r1
reads taken: 13309316 reads taken: 13311722
r2
reads taken: 5010534 reads taken: 5023185
ro
reads taken: 3850228 reads taken: 3845954
w1
writes taken: 13012701 writes taken: 13021716
wo
writes taken: 1825789 writes taken: 1802560
---------------------------------------------- RWSEM_XCHGADD y in rwsem-2.4.4-pre6 + your latest #try3
rw
reads taken: 5789542 writes taken: 2989478 reads taken: 5801777 writes taken: 2995669
r1
reads taken: 16922653 reads taken: 16946132
r2
reads taken: 5650211 reads taken: 5647272
ro
reads taken: 4956250 reads taken: 4959828
w1
writes taken: 15431139 writes taken: 15439790
wo
writes taken: 813756 writes taken: 816005
graph updated attached. so in short my fast path is still quite faster (r1/w1), slow path is comparable now (I still win in all tests but wo which is probably the less interesting one in real life [write contention]). I still have room to improve the wo test [write contention] by spending more icache btw but it probably doesn't worth.
Andrea [unhandled content-type:image/png] | |