syncer causing latency spikes

John Baldwin jhb at freebsd.org
Wed Jul 17 20:15:51 UTC 2013


On Wednesday, July 17, 2013 3:18:52 pm Konstantin Belousov wrote:
> On Wed, Jul 17, 2013 at 02:07:55PM -0400, Mark Johnston wrote:
> > During such an fsync, DTrace shows me that syncer sleeps of 50-200ms are
> > happening up to 8 or 10 times a second. When this happens, a bunch of
> > postgres threads become blocked in vn_write() waiting for the vnode lock
> > to become free. It looks like the write-clustering code is limited to
> > using (nswbuf / 2) pbufs, and FreeBSD prevents one from setting nswbuf
> > to anything greater than 256.
> Syncer is probably just a victim of profiling.  Would postgres called
> fsync(2), you then blame the fsync code for the pauses.
> 
> Just add a tunable to allow the user to manually-tune the nswbuf,
> regardless of the buffer cache sizing.  And yes, nswbuf default max
> probably should be bumped to something like 1024, at least on 64bit
> architectures which do not starve for kernel memory.

Also, if you are seeing I/O stalls with mfi(4), then you might need a
firmware update for your mfi(4) controller.  cc'ing smh@ who knows more about 
that particular issue (IIRC).

-- 
John Baldwin


More information about the freebsd-stable mailing list