Skip site navigation (1)Skip section navigation (2)
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>