By Jonathan Corbet
January 12, 2011
One of the most significant changes for 2.6.38 will not be an obviously
user-visible feature; it is, instead, the
dcache scalability patch set by Nick Piggin.
These patches rework the virtual filesystem layer in some tricky ways,
eliminating a number of longstanding scalability problems. The changes
were significant enough that Linus
paused the
merge window for a couple of days after merging them, saying:
It's scary because this is some very core code, and the new RCU
lookup model is way more clever and subtle than the old dentry_lock
spinlock.
But it's rather impressive and I really wanted to merge it, because
some of the performance numbers are pretty stunning. For example, a
hot-cache "find . -size" on my home directory (which basically just
does name lookups to get the stat information for every file
recursively) became 35% faster. And that's the _unthreaded_
case. Not some odd high-end scalability thing, and not some
recompiled binary taking advantage of new facilities. Pathname
lookup is just simply faster.
This code mostly works, but early testers have reported an issue or two,
and there are likely to be some subtle problems remaining still. This
might be a good time for people running development kernels to have
especially good backups. Also, as Nick noted, out-of-tree filesystems will need some
changes to work with new VFS.
(
Log in to post comments)