Date: Mon, 10 Feb 2003 14:25:46 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Alfred Perlstein <bright@mu.org> Cc: Morten Rodal <morten@rodal.no>, phk@phk.freebsd.dk, David Schultz <dschultz@uclink.Berkeley.EDU>, arch@FreeBSD.ORG Subject: Re: Our lemming-syncer caught in the act. Message-ID: <200302102225.h1AMPkTE023700@apollo.backplane.com> References: <20030210091317.GD5165@HAL9000.homeunix.com> <37473.1044868995@critter.freebsd.dk> <20030210204523.GF12240@slurp.rodal.no> <20030210205443.GA88781@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
:* Morten Rodal <morten@rodal.no> [030210 12:45] wrote: :> :> I upgraded my workstation to 5.0-RELEASE shortly after it became :> available, and there is one thing that keeps bugging me. When I :> delete a file that is large, say >600MB, the system performance and :> interactivity will drop remarkebly. : :This happens on my machine as well, a complete shot in the dark fix :that I would try is to find where syncer loops and purposefully have :it drop and pick up Giant between batches of work. : :-Alfred Try reproducing the problem with kernel profiling turned on. The syncer is not likely to be the cause of the large file removal issue, since that involves only bitmaps. The cause is more likely to be softupdate's bitmap dependancies. Try turning off softupdates and see if that improves performance. Softupdates creates some rather nasty buffer cache issues due to the number of buffers it removes from management. Also, dependancies prevent the buffer cache from being able to flush a buffer. The buffer cache was not really designed to deal with flushes which don't undirty a buffer or large numbers of buffers being temporarily removed from management. The syncer is more likely to be the cause of performance issues during large file data operations. Because the syncer holds onto the vnode lock you can get into a situation where lookup()s cause a directory locking chain to reach the root directory which has the effect of stalling just about everything. Either Net or OpenBSD solved this problem by doing partial fsyncs instead of full fsyncs to avoid holding onto the vnode lock for insanely long periods of time. Another solution would be to use the namei cache to lock path names from create/remove/rename ops so the directory vnodes do not have to be locked for the duration of a path lookup. If the directory vnode is not exclusively locked then a race-to-root will not happen due to some random file vnode being locked for a long period of time. -Matt Matthew Dillon <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200302102225.h1AMPkTE023700>