Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Dec 2007 12:08:10 -0800
From:      Alfred Perlstein <alfred@freebsd.org>
To:        David G Lawrence <dg@dglawrence.com>
Cc:        freebsd-net@freebsd.org, freebsd-stable@freebsd.org, Bruce Evans <brde@optusnet.com.au>
Subject:   Re: Packet loss every 30.999 seconds
Message-ID:  <20071221200810.GY16982@elvis.mu.org>
In-Reply-To: <20071219171331.GH25053@tnn.dglawrence.com>
References:  <D50B5BA8-5A80-4370-8F20-6B3A531C2E9B@eng.oar.net> <20071217102433.GQ25053@tnn.dglawrence.com> <CD187AD1-8712-418F-9F49-FA3407BA1AC7@eng.oar.net> <20071220011626.U928@besplex.bde.org> <814DB7A9-E64F-4BCA-A502-AB5A6E0297D3@eng.oar.net> <20071219171331.GH25053@tnn.dglawrence.com>

next in thread | previous in thread | raw e-mail | index | archive | help
* David G Lawrence <dg@dglawrence.com> [071219 09:12] wrote:
> > >Try it with "find / -type f >/dev/null" to duplicate the problem  
> > >almost
> > >instantly.
> > 
> > I was able to verify last night that (cd /; tar -cpf -) > all.tar would
> > trigger the problem.  I'm working getting a test running with
> > David's ffs_sync() workaround now, adding a few counters there should
> > get this narrowed down a little more.
> 
>    Unfortunately, the version of the patch that I sent out isn't going to
> help your problem. It needs to yield at the top of the loop, but vp isn't
> necessarily valid after the wakeup from the msleep. That's a problem that
> I'm having trouble figuring out a solution to - the solutions that come
> to mind will all significantly increase the overhead of the loop.
>    As a very inadequate work-around, you might consider lowering
> kern.maxvnodes to something like 20000 - that might be low enough to
> not trigger the problem, but also be high enough to not significantly
> affect system I/O performance.

I apologize for not reading the code as I am swamped, but a technique
that Matt Dillon used for bufs might work here.

Can you use a placeholder vnode as a place to restart the scan?
you might have to mark it special so that other threads/things
(getnewvnode()?) don't molest it, but it can provide for a convenient
restart point.

-- 
- Alfred Perlstein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071221200810.GY16982>