implement BUFCACHEPERCENT and take care with kva space
authorderaadt <deraadt@openbsd.org>
Mon, 24 Feb 1997 12:50:28 +0000 (12:50 +0000)
committerderaadt <deraadt@openbsd.org>
Mon, 24 Feb 1997 12:50:28 +0000 (12:50 +0000)
sys/arch/powerpc/powerpc/machdep.c

index fce1130..0eb035e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.5 1997/02/05 01:33:54 rahnds Exp $      */
+/*     $OpenBSD: machdep.c,v 1.6 1997/02/24 12:50:28 deraadt Exp $     */
 /*     $NetBSD: machdep.c,v 1.4 1996/10/16 19:33:11 ws Exp $   */
 
 /*
@@ -465,16 +465,29 @@ allocsys(v)
        valloc(msqids, struct msqid_ds, msginfo.msgmni);
 #endif
 
+#ifndef BUFCACHEPERCENT
+#define BUFCACHEPERCENT 5
+#endif
        /*
         * Decide on buffer space to use.
         */
        if (bufpages == 0)
-               bufpages = (physmem / 20) / CLSIZE;
+               bufpages = (physmem / ((100/BUFCACHEPERCENT) / CLSIZE);
        if (nbuf == 0) {
                nbuf = bufpages;
                if (nbuf < 16)
                        nbuf = 16;
        }
+       /* Restrict to at most 70% filled kvm */
+       if (nbuf * MAXBSIZE >
+           (VM_MAX_KERNEL_ADDRESS-VM_MIN_KERNEL_ADDRESS) * 7 / 10)
+               nbuf = (VM_MAX_KERNEL_ADDRESS-VM_MIN_KERNEL_ADDRESS) /
+                   MAXBSIZE * 7 / 10;
+
+       /* More buffer pages than fits into the buffers is senseless.  */
+       if (bufpages > nbuf * MAXBSIZE / CLBYTES)
+               bufpages = nbuf * MAXBSIZE / CLBYTES;
+
        if (nswbuf == 0) {
                nswbuf = (nbuf / 2) & ~1;
                if (nswbuf > 256)