aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64/amd64/vm_machdep.c
diff options
context:
space:
mode:
authorMike Silbersack <silby@FreeBSD.org>2003-12-27 07:52:47 +0000
committerMike Silbersack <silby@FreeBSD.org>2003-12-27 07:52:47 +0000
commit5eda9873e9bf43e016f731be0b21f3c318dc542c (patch)
tree98b609cd809b91f8fe99dba49d5591243871a9a2 /sys/amd64/amd64/vm_machdep.c
parent30b48d7f6de2d40c9ead5862ee207592f1ff2e10 (diff)
downloadsrc-5eda9873e9bf43e016f731be0b21f3c318dc542c.tar.gz
src-5eda9873e9bf43e016f731be0b21f3c318dc542c.zip
Track current and peak sfbuf usage, export the values via sysctl.
Notes
Notes: svn path=/head/; revision=123884
Diffstat (limited to 'sys/amd64/amd64/vm_machdep.c')
-rw-r--r--sys/amd64/amd64/vm_machdep.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c
index fad5c4efe313..ef1979099864 100644
--- a/sys/amd64/amd64/vm_machdep.c
+++ b/sys/amd64/amd64/vm_machdep.c
@@ -99,6 +99,7 @@ static struct {
} sf_freelist;
static u_int sf_buf_alloc_want;
+extern int nsfbufspeak, nsfbufsused;
/*
* Finish a fork operation, with process p2 nearly set up.
@@ -473,6 +474,8 @@ sf_buf_alloc(struct vm_page *m)
if (sf != NULL) {
SLIST_REMOVE_HEAD(&sf_freelist.sf_head, free_list);
sf->m = m;
+ nsfbufsused++;
+ nsfbufspeak = max(nsfbufspeak, nsfbufsused);
}
mtx_unlock(&sf_freelist.sf_lock);
return (sf);
@@ -502,6 +505,7 @@ sf_buf_free(void *addr, void *args)
sf->m = NULL;
mtx_lock(&sf_freelist.sf_lock);
SLIST_INSERT_HEAD(&sf_freelist.sf_head, sf, free_list);
+ nsfbufsused--;
if (sf_buf_alloc_want > 0)
wakeup_one(&sf_freelist);
mtx_unlock(&sf_freelist.sf_lock);