Heads up - sync changes under test in master
Matthew Dillon
dillon at apollo.backplane.com
Fri Oct 11 00:50:05 PDT 2013
The filesystem flush/sync code has undergone some pretty significant
changes in master that might result in instability, which will be fixed
as issues are found. The new sync code segregates dirty vnodes from
clean vnodes in order to allow the flush/sync code to only scan
potentially dirty vnodes instead of scanning all cached vnodes (which
can run in the millions on a modern machine). This greatly reduces the
scan overhead of sync.
The new code also handles dirty pages and that is where there might be
some instability. Theoretically when a VM page is dirtied or entered
into a pmap in a manner that might allow it to become dirty, the related
vnode will be placed on the syncer list. If there are bugs here it could
prevent a vnode with data dirtied via mmap() from being properly flushed.
Testing continues. Being able to get this all to work well is important
for scaling the vnode cache. Our opteron test box, for example, has
128G of ram and the kernel is allowed to cache over 7 million vnodes in
that case. Even nominal configurations with 16G of ram are allowed to
cache over 1 million vnodes. Without these changes, the 'sync' command
can tie up some important locks for several seconds just to figure out
that it doesn't have to do anything.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Users
mailing list