aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2001-08-22 00:50:46 +0000
committerPeter Wemm <peter@FreeBSD.org>2001-08-22 00:50:46 +0000
commit3d6fde76ed8a05fa335fdf605bdaad091a54f268 (patch)
tree4e4d92b87bd67d43cdb0f039cc3945d89e2f020e
parentc412ee3a284c4c5e0757c056908db7424f455223 (diff)
downloadsrc-3d6fde76ed8a05fa335fdf605bdaad091a54f268.tar.gz
src-3d6fde76ed8a05fa335fdf605bdaad091a54f268.zip
Introduce two new sysctl's.. vm.kvm_size and vm.kvm_free. These are
purely informational and can give some advance indications of tuning problems. These are i386 only for now as it seems that the i386 is the only one suffering kvm pressure.
Notes
Notes: svn path=/head/; revision=82121
-rw-r--r--sys/amd64/amd64/pmap.c21
-rw-r--r--sys/i386/i386/pmap.c21
2 files changed, 42 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index f2d447f1bb42..7a32c98bb330 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -83,6 +83,7 @@
#include <sys/sx.h>
#include <sys/user.h>
#include <sys/vmmeter.h>
+#include <sys/sysctl.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
@@ -1366,6 +1367,26 @@ retry:
if (ptdpg && !pmap_release_free_page(pmap, ptdpg))
goto retry;
}
+
+static int
+kvm_size(SYSCTL_HANDLER_ARGS)
+{
+ unsigned long ksize = VM_MAX_KERNEL_ADDRESS - KERNBASE;
+
+ return sysctl_handle_long(oidp, &ksize, 0, req);
+}
+SYSCTL_PROC(_vm, OID_AUTO, kvm_size, CTLTYPE_LONG|CTLFLAG_RD,
+ 0, 0, kvm_size, "IU", "Size of KVM");
+
+static int
+kvm_free(SYSCTL_HANDLER_ARGS)
+{
+ unsigned long kfree = VM_MAX_KERNEL_ADDRESS - kernel_vm_end;
+
+ return sysctl_handle_long(oidp, &kfree, 0, req);
+}
+SYSCTL_PROC(_vm, OID_AUTO, kvm_free, CTLTYPE_LONG|CTLFLAG_RD,
+ 0, 0, kvm_free, "IU", "Amount of KVM free");
/*
* grow the number of kernel page table entries, if needed
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index f2d447f1bb42..7a32c98bb330 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -83,6 +83,7 @@
#include <sys/sx.h>
#include <sys/user.h>
#include <sys/vmmeter.h>
+#include <sys/sysctl.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
@@ -1366,6 +1367,26 @@ retry:
if (ptdpg && !pmap_release_free_page(pmap, ptdpg))
goto retry;
}
+
+static int
+kvm_size(SYSCTL_HANDLER_ARGS)
+{
+ unsigned long ksize = VM_MAX_KERNEL_ADDRESS - KERNBASE;
+
+ return sysctl_handle_long(oidp, &ksize, 0, req);
+}
+SYSCTL_PROC(_vm, OID_AUTO, kvm_size, CTLTYPE_LONG|CTLFLAG_RD,
+ 0, 0, kvm_size, "IU", "Size of KVM");
+
+static int
+kvm_free(SYSCTL_HANDLER_ARGS)
+{
+ unsigned long kfree = VM_MAX_KERNEL_ADDRESS - kernel_vm_end;
+
+ return sysctl_handle_long(oidp, &kfree, 0, req);
+}
+SYSCTL_PROC(_vm, OID_AUTO, kvm_free, CTLTYPE_LONG|CTLFLAG_RD,
+ 0, 0, kvm_free, "IU", "Amount of KVM free");
/*
* grow the number of kernel page table entries, if needed