Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Aug 2001 00:13:09 -0700 (PDT)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Peter Wemm <peter@wemm.org>, <cvs-committers@FreeBSD.ORG>, <cvs-all@FreeBSD.ORG>
Subject:   Re: cvs commit: src/sys/boot/common loader.8 src/sys/conf options src/sys/i386/i386 machdep.c src/sys/i386/include param.h src/sys/kern subr_param.c src/sys/sys buf.h src/sys/vm swap_pager.c 
Message-ID:  <200108210713.f7L7D9d60995@earth.backplane.com>
References:   <20010821141007.Y1177-100000@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help

:is in bytes, so `physmem_est / BKVASIZE' is normally 0 and nbuf is adjusted
:_up_ to maxbcache / BKVASIZE (default 12500) on almost all machines.  On
:a machine with 32MB of RAM, this caused severe thrashing, and eventually
:hangs and a panic, after about 20MB of RAM was firmly allocated to buffers.

    This is the pre-existing code.  It looks severely broken in general:

        /*
         * Discount the physical memory larger than the size of kernel_map
         * to avoid eating up all of KVA space.
         */
        if (kernel_map->first_free == NULL) {
                printf("Warning: no free entries in kernel_map.\n");
                physmem_est = physmem;
        } else
                physmem_est = min(physmem, kernel_map->max_offset -
                    kernel_map->min_offset);

    since kernel_map->max_offset - min_offset is in bytes, and physmem is
    in pages.

    I'll change everything to pages.

						-Matt

:
:Index: machdep.c
:===================================================================
:RCS file: /home/ncvs/src/sys/i386/i386/machdep.c,v
:retrieving revision 1.470
:diff -u -1 -r1.470 machdep.c
:--- machdep.c	20 Aug 2001 00:41:11 -0000	1.470
:+++ machdep.c	21 Aug 2001 00:57:50 -0000
:@@ -316,4 +314,3 @@
: 			nbuf += (physmem_est - 16384) * 2 / (factor * 5);
:-
:-		if (maxbcache && nbuf > physmem_est / BKVASIZE)
:+		if (maxbcache != 0 && nbuf > maxbcache / BKVASIZE)
: 			nbuf = maxbcache / BKVASIZE;
:
:Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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