Notes:
One of the largest places for BKL contention in 2.4 is ext2_get_block().
On my 2-way, dbench causes around 4% of combined CPU time just spinning
on the lock_kernel() in ext2_get_block(). On bigger machines it
just gets worse.
Al Viro produced
patch for 2.5 to address this problem
I've done a fairly straightforward backport to the 2.4 tree.
But, I'm not sure how it interacts with the VFS patches which came
earlier in 2.5. It is quite stable on my 2-way; definitely no deadlocks.
I'll be testing it on larger machines soon. I don't expect it to
go into the mainline kernel right away, but I would like the secondary
tree maintainers to pick it up and let people pound on it.
You can see the lockmeter data here:
http://www.sr71.net/ibm/bkl-ext2-dbench/ You may notice that
the data from my patch show a slight drop in throughput (~2%). However,
my testing conditions were less than ideal and the drop can probably
be attributed to statistical error.
|