On FreeBSD-current (to become 3.0) there is a sysctl variable
vfs.numdirtybuffers which tells you the current number of dirty buffers (I
patched the systat program to show it in the -vmstat display).

There are two other variables vfs.lodirtybuffers and vfs.hidirtybuffers
which can be tuned to avoid all dirty buffers being flushed to disk only
each X seconds by update. Flushing starts when numdirtybuffers >
hidirtybuffers and flushing ends when numdirtybuffers < lodirtybuffers. By
carefully choosing these values you can avoid that only update does sync()s
which can take multiple seconds to complete.