summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1997-02-24 12:50:29 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1997-02-24 12:50:29 +0000
commit6fb0505fc2c8797b7da79745e775e74a9fbf19e4 (patch)
treebd788bf73e175adaf711d52f1e9b54671d932dc5 /sys
parent1f84de064087bc3f31c630ae887c54e763d3a426 (diff)
implement BUFCACHEPERCENT and take care with kva space
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/powerpc/powerpc/machdep.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/arch/powerpc/powerpc/machdep.c b/sys/arch/powerpc/powerpc/machdep.c
index fce1130babf..0eb035ec7fb 100644
--- a/sys/arch/powerpc/powerpc/machdep.c
+++ b/sys/arch/powerpc/powerpc/machdep.c
@@ -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)