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