aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2021-10-17 12:48:50 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2021-10-17 12:49:29 +0000
commit0f559a9f097b9eea318e970155fb23e37af07c4e (patch)
treeaaf4c019ba5f0b0edd5b5f0aa21622ca41968460
parent70774c637b87eac1d9a94bb960e6f5242dad9e43 (diff)
downloadsrc-0f559a9f097b9eea318e970155fb23e37af07c4e.tar.gz
src-0f559a9f097b9eea318e970155fb23e37af07c4e.zip
Make vmdaemon timeout configurable
Make vmdaemon timeout configurable, so that one can adjust how often it runs. Here's a trick: set this to 1, then run 'limits -m 0 sh', then run whatever you want with 'ktrace -it XXX', and observe how the working set changes over time. Reviewed By: kib Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D22038
-rw-r--r--sys/vm/vm_swapout.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/sys/vm/vm_swapout.c b/sys/vm/vm_swapout.c
index eaa6b9618426..008dd6f00cbc 100644
--- a/sys/vm/vm_swapout.c
+++ b/sys/vm/vm_swapout.c
@@ -153,6 +153,11 @@ SYSCTL_INT(_vm, OID_AUTO, swap_idle_threshold2, CTLFLAG_RW,
&swap_idle_threshold2, 0,
"Time before a process will be swapped out");
+static int vm_daemon_timeout = 0;
+SYSCTL_INT(_vm, OID_AUTO, vmdaemon_timeout, CTLFLAG_RW,
+ &vm_daemon_timeout, 0,
+ "Time between vmdaemon runs");
+
static int vm_pageout_req_swapout; /* XXX */
static int vm_daemon_needed;
static struct mtx vm_daemon_mtx;
@@ -374,17 +379,15 @@ vm_daemon(void)
int breakout, swapout_flags, tryagain, attempts;
#ifdef RACCT
uint64_t rsize, ravailable;
+
+ if (racct_enable && vm_daemon_timeout == 0)
+ vm_daemon_timeout = hz;
#endif
while (TRUE) {
mtx_lock(&vm_daemon_mtx);
msleep(&vm_daemon_needed, &vm_daemon_mtx, PPAUSE, "psleep",
-#ifdef RACCT
- racct_enable ? hz : 0
-#else
- 0
-#endif
- );
+ vm_daemon_timeout);
swapout_flags = vm_pageout_req_swapout;
vm_pageout_req_swapout = 0;
mtx_unlock(&vm_daemon_mtx);