From 875b69507cd94ec1198d3d62a3f11b71b26cb756 Mon Sep 17 00:00:00 2001 From: zont Date: Mon, 28 Jan 2013 12:20:20 +0000 Subject: - Add sysctls to show number of stats scans. MFC after: 2 weeks --- sys/vm/vm_pageout.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'sys/vm/vm_pageout.c') diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 6f4c913..ac593a4 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -152,7 +152,9 @@ MTX_SYSINIT(vm_daemon, &vm_daemon_mtx, "vm daemon", MTX_DEF); #endif static int vm_max_launder = 32; static int vm_pageout_stats_max; +static int vm_pageout_stats; static int vm_pageout_stats_interval; +static int vm_pageout_full_stats; static int vm_pageout_full_stats_interval; static int vm_pageout_algorithm; static int defer_swap_pageouts; @@ -175,12 +177,18 @@ SYSCTL_INT(_vm, OID_AUTO, max_launder, SYSCTL_INT(_vm, OID_AUTO, pageout_stats_max, CTLFLAG_RW, &vm_pageout_stats_max, 0, "Max pageout stats scan length"); -SYSCTL_INT(_vm, OID_AUTO, pageout_full_stats_interval, - CTLFLAG_RW, &vm_pageout_full_stats_interval, 0, "Interval for full stats scan"); +SYSCTL_INT(_vm, OID_AUTO, pageout_stats, + CTLFLAG_RD, &vm_pageout_stats, 0, "Number of partial stats scans"); SYSCTL_INT(_vm, OID_AUTO, pageout_stats_interval, CTLFLAG_RW, &vm_pageout_stats_interval, 0, "Interval for partial stats scan"); +SYSCTL_INT(_vm, OID_AUTO, pageout_full_stats, + CTLFLAG_RD, &vm_pageout_full_stats, 0, "Number of full stats scans"); + +SYSCTL_INT(_vm, OID_AUTO, pageout_full_stats_interval, + CTLFLAG_RW, &vm_pageout_full_stats_interval, 0, "Interval for full stats scan"); + #if defined(NO_SWAPPING) SYSCTL_INT(_vm, VM_SWAPPING_ENABLED, swap_enabled, CTLFLAG_RD, &vm_swap_enabled, 0, "Enable entire process swapout"); @@ -1532,11 +1540,13 @@ vm_pageout_page_stats(void) pcount = cnt.v_active_count; fullintervalcount += vm_pageout_stats_interval; if (fullintervalcount < vm_pageout_full_stats_interval) { + vm_pageout_stats++; tpcount = (int64_t)vm_pageout_stats_max * cnt.v_active_count / cnt.v_page_count; if (pcount > tpcount) pcount = tpcount; } else { + vm_pageout_full_stats++; fullintervalcount = 0; } -- cgit v1.1