Date: Wed, 17 Jul 2013 16:15:35 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-stable@freebsd.org Cc: Konstantin Belousov <kostikbel@gmail.com>, smh@freebsd.org, Mark Johnston <markj@freebsd.org> Subject: Re: syncer causing latency spikes Message-ID: <201307171615.35484.jhb@freebsd.org> In-Reply-To: <20130717191852.GS5991@kib.kiev.ua> References: <20130717180720.GA8289@charmander> <20130717191852.GS5991@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307171615.35484.jhb>