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