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. > > -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; > >
pgp1NVdVYHi0e.pgp
Description: PGP signature