Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 May 2009 23:07:13 -0400
From:      Ben Kelly <ben@wanderview.com>
To:        Kip Macy <kmacy@freebsd.org>
Cc:        Adam McDougall <mcdouga9@egr.msu.edu>, current@freebsd.org, Larry Rosenman <ler@lerctr.org>
Subject:   Re: Fatal trap 12: page fault panic with recent kernel with ZFS
Message-ID:  <68B339AA-75CF-41FC-9E09-81D20D6F1FBA@wanderview.com>
In-Reply-To: <3c1674c90905181945g179173b9rb064e8b37ba7148@mail.gmail.com>
References:  <20090518145614.GF82547@egr.msu.edu> <alpine.BSF.2.00.0905181031240.35767@thebighonker.lerctr.org> <alpine.BSF.2.00.0905181830490.1756@borg> <3c1674c90905181659g1d20f0f1w3f623966ae4440ec@mail.gmail.com> <alpine.BSF.2.00.0905181906001.2008@borg> <20090519012202.GR82547@egr.msu.edu> <3c1674c90905181826p787a346cie90429324444a9c4@mail.gmail.com> <1F20825F-BD11-40D1-9024-07F6E707DD08@wanderview.com> <3c1674c90905181945g179173b9rb064e8b37ba7148@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On May 18, 2009, at 10:45 PM, Kip Macy wrote:
> On Mon, May 18, 2009 at 7:34 PM, Ben Kelly <ben@wanderview.com> wrote:
>> On May 18, 2009, at 9:26 PM, Kip Macy wrote:
>> On the low memory front it seems like the arc needs a way to tell  
>> the pager
>> to mark some vnodes inactive.  I've seen many cases where the arc  
>> size
>> greatly exceeded the target, but it couldn't evict any memory  
>> because all
>> its buffers were still referenced.  This seems to behave a little  
>> better
>> with code that increments vm_pageout_deficit and signals the  
>> pageout daemon
>> when the arc is too far above its target.  The normal buffer cache  
>> seems to
>> do this as well when its low on memory.
>
>
> Good point. Patches welcome. Otherwise I'll look in to it when I get  
> the chance.

I do some of that in this patch:

   http://www.wanderview.com/svn/public/misc/zfs/zfs_kmem_limit.diff

But I trigger it based on kmem thresholds.  See arc_reclaim_pages().

I can try to put together a smaller patch tomorrow evening that  
signals the pager based on size vs. c target.  The main reason I  
didn't implement it in my previous patch was because I was concerned  
with the arc being prevented from growing at all once its been  
shrunk.  It only grows when size exceeds its current target by a  
certain amount.  This may require some careful balancing or hysteresis  
or something.

Thanks.

- Ben



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?68B339AA-75CF-41FC-9E09-81D20D6F1FBA>