From owner-freebsd-bugs@FreeBSD.ORG Tue Jul 17 11:50:03 2007 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E32CC16A400 for ; Tue, 17 Jul 2007 11:50:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id C389413C4A8 for ; Tue, 17 Jul 2007 11:50:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.1/8.14.1) with ESMTP id l6HBo3as076219 for ; Tue, 17 Jul 2007 11:50:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.1/8.14.1/Submit) id l6HBo3LO076203; Tue, 17 Jul 2007 11:50:03 GMT (envelope-from gnats) Resent-Date: Tue, 17 Jul 2007 11:50:03 GMT Resent-Message-Id: <200707171150.l6HBo3LO076203@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Eugene Grosbein Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AA7DB16A407 for ; Tue, 17 Jul 2007 11:47:36 +0000 (UTC) (envelope-from eugen@grosbein.pp.ru) Received: from grosbein.pp.ru (grgw.svzserv.kemerovo.su [213.184.64.166]) by mx1.freebsd.org (Postfix) with ESMTP id 0979213C4BB for ; Tue, 17 Jul 2007 11:47:34 +0000 (UTC) (envelope-from eugen@grosbein.pp.ru) Received: from grosbein.pp.ru (localhost [127.0.0.1]) by grosbein.pp.ru (8.14.1/8.14.1) with ESMTP id l6HBlW0Y001528 for ; Tue, 17 Jul 2007 19:47:32 +0800 (KRAST) (envelope-from eugen@grosbein.pp.ru) Received: (from eugen@localhost) by grosbein.pp.ru (8.14.1/8.14.1/Submit) id l6HBlVgX001527; Tue, 17 Jul 2007 19:47:31 +0800 (KRAST) (envelope-from eugen) Message-Id: <200707171147.l6HBlVgX001527@grosbein.pp.ru> Date: Tue, 17 Jul 2007 19:47:31 +0800 (KRAST) From: Eugene Grosbein To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/114654: [patch] make vm_page_max_wired tunnable at run time X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jul 2007 11:50:04 -0000 >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: