Date: Tue, 17 Jul 2007 19:47:31 +0800 (KRAST) From: Eugene Grosbein <eugen@grosbein.pp.ru> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/114654: [patch] make vm_page_max_wired tunnable at run time Message-ID: <200707171147.l6HBlVgX001527@grosbein.pp.ru> Resent-Message-ID: <200707171150.l6HBo3LO076203@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 114654 >Category: kern >Synopsis: [patch] make vm_page_max_wired tunnable at run time >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jul 17 11:50:02 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Eugene Grosbein >Release: FreeBSD 6.2-STABLE i386 >Organization: Svyaz-Service JSC >Environment: System: FreeBSD grosbein.pp.ru 6.2-STABLE FreeBSD 6.2-STABLE #0: Tue Jul 17 19:23:09 KRAST 2007 eu@grosbein.pp.ru:/usr/obj/usr/local/src/sys/DADV i386 >Description: The kernel limits number of pages mlock()'ed by a process to one third of vm.stats.vm.v_free_count to prevent damage from broken processes. However, sometimes there is a need to allow a process to mlock() more than half of free pages pool, one example is /usr/ports/sysutils/memtest. Let's make vm_page_max_wired tunnable at run time. >How-To-Repeat: I've installed second 1Gb memory module to my system and want to quick-check (most part of) it. I've raised kern.maxdsize but the kernel still does not allow memtest to mlock() so many pages. Yes, I know the best method is to boot the system from floppy of CD with special memory tester. But I'd glad to see this way allowed too. >Fix: Running kernel with the following patch, I may increase sysctl vm.max_wired value upto, say, 1.5Gb for the system having 2Gb RAM and still run memtest from X.org's xterm session (top shows "1802M Free" here). --- sys/vm/vm_pageout.c.orig Tue Jul 17 19:18:56 2007 +++ sys/vm/vm_pageout.c Tue Jul 17 19:33:52 2007 @@ -203,6 +203,8 @@ int vm_pageout_page_count = VM_PAGEOUT_PAGE_COUNT; int vm_page_max_wired; /* XXX max # of wired pages system-wide */ +SYSCTL_INT(_vm, OID_AUTO, max_wired, + CTLFLAG_RW, &vm_page_max_wired, 0, "System-wide limit to wired page count"); #if !defined(NO_SWAPPING) static void vm_pageout_map_deactivate_pages(vm_map_t, long); Eugene Grosbein >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707171147.l6HBlVgX001527>