git: 0f559a9f097b - main - Make vmdaemon timeout configurable

From: Edward Tomasz Napierala <trasz_at_FreeBSD.org>
Date: Sun, 17 Oct 2021 12:52:58 UTC
The branch main has been updated by trasz:

URL: https://cgit.FreeBSD.org/src/commit/?id=0f559a9f097b9eea318e970155fb23e37af07c4e

commit 0f559a9f097b9eea318e970155fb23e37af07c4e
Author:     Edward Tomasz Napierala <trasz@FreeBSD.org>
AuthorDate: 2021-10-17 12:48:50 +0000
Commit:     Edward Tomasz Napierala <trasz@FreeBSD.org>
CommitDate: 2021-10-17 12:49:29 +0000

    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
---
 sys/vm/vm_swapout.c | 15 +++++++++------
 1 file 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);