svn commit: r251282 - head/sys/kern

Alfred Perlstein bright at mu.org
Mon Jun 3 09:24:31 UTC 2013


On 6/3/13 12:55 AM, Konstantin Belousov wrote:
> On Sun, Jun 02, 2013 at 09:27:53PM -0700, Alfred Perlstein wrote:
>> Hey Konstaintin, shouldn't this be scaled against the actual amount of
>> KVA we have instead of an arbitrary limit?
> The commit changes the buffer cache to scale according to the available
> KVA, making the scaling less dumb.
>
> I do not understand what exactly do you want to do, please describe the
> algorithm you propose to implement instead of my change.

Sure, how about deriving the hardcoded "32" from the maxkva a machine 
can have?

Is that possible?

-Alfred

>
>> -Alfred
>>
>> On 6/2/13 9:16 PM, Konstantin Belousov wrote:
>>> Author: kib
>>> Date: Mon Jun  3 04:16:48 2013
>>> New Revision: 251282
>>> URL: http://svnweb.freebsd.org/changeset/base/251282
>>>
>>> Log:
>>>     When auto-sizing the buffer cache, limit the amount of physical memory
>>>     used as the estimation of size, to 32GB.  This provides around 100K of
>>>     buffer headers and corresponding KVA for buffer map at the peak.
>>>     Sizing the cache larger is not useful, also resulting in the wasting
>>>     and exhausting of KVA for large machines.
>>>     
>>>     Reported and tested by:	bdrewery
>>>     Sponsored by:	The FreeBSD Foundation
>>>
>>> Modified:
>>>     head/sys/kern/vfs_bio.c
>>>
>>> Modified: head/sys/kern/vfs_bio.c
>>> ==============================================================================
>>> --- head/sys/kern/vfs_bio.c	Mon Jun  3 04:11:42 2013	(r251281)
>>> +++ head/sys/kern/vfs_bio.c	Mon Jun  3 04:16:48 2013	(r251282)
>>> @@ -560,7 +560,8 @@ kern_vfs_bio_buffer_alloc(caddr_t v, lon
>>>    			nbuf += min((physmem_est - 4096) / factor,
>>>    			    65536 / factor);
>>>    		if (physmem_est > 65536)
>>> -			nbuf += (physmem_est - 65536) * 2 / (factor * 5);
>>> +			nbuf += min((physmem_est - 65536) * 2 / (factor * 5),
>>> +			    32 * 1024 * 1024 / (factor * 5));
>>>    
>>>    		if (maxbcache && nbuf > maxbcache / BKVASIZE)
>>>    			nbuf = maxbcache / BKVASIZE;
>>>



More information about the svn-src-all mailing list