Maximum blocksize for FFS?

Dieter BSD dieterbsd at engineer.com
Mon Dec 12 23:50:36 UTC 2011


Many recent disks have a 4KiB sector size, so newfs's default
2KiB frag size seems suboptimal for these drives. Newfs's man
page states: "The optimal block:fragment ratio is 8:1. Other
ratios are possible, but are not recommended, and may produce
poor results."  (It is not clear to me what the 8:1 ratio optimizes,
or exactly what poor results one should expect with a different ratio?)
Thus one would logically think of using 32 KiB blocksize 4KiB fragsize
at a minimum with these drives.

But, from a discussion in 2009:

Bruce Evans wrote:
> Any block size above the default (16K) tends to thrash and fragment buffer
> cache virtual memory.  This is obviously a good pessimization with lots of
> small files, and apparently, as you have found, it is a good pessimization
> with a few large files too.  I think severe fragmentation can easily take
> several seconds to recover from.  The worst case for causing fragmentaion
> is probably a mixture of small and large files.

This caused a *severe* performance problem and I was forced to reduce to
reduce my blocksize to 16KiB.  :-(

For data filesystems with large files (multi GB), there are many advantages
to using large blocksizes such as less space wasted on bookkeeping,
and faster fsck times.

So I'm wondering if this buffer cache virtual memory thrashing/fragmenting
problem has been fixed?  Is it safe to use 64KiB/8KiB yet?  IIRC I've
read concerns about thrashing/fragmenting due to different filesystems
having different sizes, say one filesystem being 16K/2K and another being
64k/8K?

Also, has the "bug in vfs_bio.c" been fixed? (64KiB blocksize can
hang the system)

Any other gottchas?


More information about the freebsd-performance mailing list