From owner-freebsd-questions@FreeBSD.ORG Sat Apr 12 23:23:43 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35C971065671 for ; Sat, 12 Apr 2008 23:23:43 +0000 (UTC) (envelope-from freebsd@sopwith.solgatos.com) Received: from parsely.rain.com (parsely.rain.com [199.26.172.196]) by mx1.freebsd.org (Postfix) with ESMTP id A350A8FC1B for ; Sat, 12 Apr 2008 23:23:42 +0000 (UTC) (envelope-from freebsd@sopwith.solgatos.com) Received: from sopwith.solgatos.com (uucp@localhost) by parsely.rain.com (8.11.4/8.11.4) with UUCP id m3CNNYV52776; Sat, 12 Apr 2008 16:23:34 -0700 (PDT) (envelope-from freebsd@sopwith.solgatos.com) Received: from localhost by sopwith.solgatos.com (8.8.8/6.24) id XAA15989; Sat, 12 Apr 2008 23:22:01 GMT Message-Id: <200804122322.XAA15989@sopwith.solgatos.com> To: Giorgos Keramidas , Mel In-reply-to: Your message of "Sun, 13 Apr 2008 00:58:15 +0300." <87zlry7n2g.fsf@kobe.laptop> Date: Sat, 12 Apr 2008 16:22:01 +0100 From: Dieter Cc: freebsd-questions@freebsd.org Subject: Re: 6.2 -> 7.0 now mlock(2) fails X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd@sopwith.solgatos.com List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Apr 2008 23:23:43 -0000 > > vm.max_wired looks like a sysctl, but sysctl doesn't know about it. > > sysctl: unknown oid 'vm.max_wired' > > Yes, indeed. I posted before looking at the diffs between RELENG_7 and > CURRENT. The sysctl is only present in 8.0-CURRENT: This is 7.0-RELEASE amd64 with 2 GiB of memory. > Can you run your first process, which successfully wires the pages, and > then capture the output of: > > sysctl vm.stats > > Finally, run the second process, even if it fails to wire the pages, and > capture vm.stats once more. vm.stats.vm.v_wire_count: 65381 1st mlock() succeeded vm.stats.vm.v_wire_count: 107541 vm.stats.vm.v_wire_count: 108053 2nd mlock() succeeded vm.stats.vm.v_wire_count: 150289 sysctl vm.stats after 1st mlock vm.stats.misc.zero_page_count: 9 vm.stats.misc.cnt_prezero: 0 vm.stats.vm.v_kthreadpages: 0 vm.stats.vm.v_rforkpages: 0 vm.stats.vm.v_vforkpages: 61095 vm.stats.vm.v_forkpages: 500877 vm.stats.vm.v_kthreads: 53 vm.stats.vm.v_rforks: 0 vm.stats.vm.v_vforks: 1500 vm.stats.vm.v_forks: 10313 vm.stats.vm.v_interrupt_free_min: 2 vm.stats.vm.v_pageout_free_min: 34 vm.stats.vm.v_cache_max: 27346 vm.stats.vm.v_cache_min: 13673 vm.stats.vm.v_cache_count: 23845 vm.stats.vm.v_inactive_count: 333862 vm.stats.vm.v_inactive_target: 20509 vm.stats.vm.v_active_count: 38937 vm.stats.vm.v_wire_count: 107552 vm.stats.vm.v_free_count: 2082 vm.stats.vm.v_free_min: 3241 vm.stats.vm.v_free_target: 13673 vm.stats.vm.v_free_reserved: 709 vm.stats.vm.v_page_count: 506803 vm.stats.vm.v_page_size: 4096 vm.stats.vm.v_tfree: 3855063 vm.stats.vm.v_pfree: 1167842 vm.stats.vm.v_dfree: 0 vm.stats.vm.v_tcached: 36604461 vm.stats.vm.v_pdpages: 19297552 vm.stats.vm.v_pdwakeups: 1487 vm.stats.vm.v_reactivated: 12640 vm.stats.vm.v_intrans: 94 vm.stats.vm.v_vnodepgsout: 0 vm.stats.vm.v_vnodepgsin: 17321874 vm.stats.vm.v_vnodeout: 0 vm.stats.vm.v_vnodein: 1083844 vm.stats.vm.v_swappgsout: 103 vm.stats.vm.v_swappgsin: 18 vm.stats.vm.v_swapout: 82 vm.stats.vm.v_swapin: 15 vm.stats.vm.v_ozfod: 1168 vm.stats.vm.v_zfod: 1048335 vm.stats.vm.v_cow_optim: 988 vm.stats.vm.v_cow_faults: 512546 vm.stats.vm.v_vm_faults: 7379324 vm.stats.sys.v_soft: 7443350 vm.stats.sys.v_intr: 75873519 vm.stats.sys.v_syscall: 73866688 vm.stats.sys.v_trap: 7860542 vm.stats.sys.v_swtch: 38018384 vm.stats.object.bypasses: 4390 vm.stats.object.collapses: 42617 sysctl vm.stats after 2nd mlock vm.stats.misc.zero_page_count: 0 vm.stats.misc.cnt_prezero: 0 vm.stats.vm.v_kthreadpages: 0 vm.stats.vm.v_rforkpages: 0 vm.stats.vm.v_vforkpages: 61130 vm.stats.vm.v_forkpages: 507440 vm.stats.vm.v_kthreads: 53 vm.stats.vm.v_rforks: 0 vm.stats.vm.v_vforks: 1501 vm.stats.vm.v_forks: 10425 vm.stats.vm.v_interrupt_free_min: 2 vm.stats.vm.v_pageout_free_min: 34 vm.stats.vm.v_cache_max: 27346 vm.stats.vm.v_cache_min: 13673 vm.stats.vm.v_cache_count: 19546 vm.stats.vm.v_inactive_count: 294108 vm.stats.vm.v_inactive_target: 20509 vm.stats.vm.v_active_count: 39177 vm.stats.vm.v_wire_count: 151123 vm.stats.vm.v_free_count: 2067 vm.stats.vm.v_free_min: 3241 vm.stats.vm.v_free_target: 13673 vm.stats.vm.v_free_reserved: 709 vm.stats.vm.v_page_count: 506803 vm.stats.vm.v_page_size: 4096 vm.stats.vm.v_tfree: 3866824 vm.stats.vm.v_pfree: 1173921 vm.stats.vm.v_dfree: 0 vm.stats.vm.v_tcached: 36645336 vm.stats.vm.v_pdpages: 19338429 vm.stats.vm.v_pdwakeups: 1490 vm.stats.vm.v_reactivated: 12652 vm.stats.vm.v_intrans: 94 vm.stats.vm.v_vnodepgsout: 0 vm.stats.vm.v_vnodepgsin: 17321874 vm.stats.vm.v_vnodeout: 0 vm.stats.vm.v_vnodein: 1083844 vm.stats.vm.v_swappgsout: 103 vm.stats.vm.v_swappgsin: 18 vm.stats.vm.v_swapout: 82 vm.stats.vm.v_swapin: 15 vm.stats.vm.v_ozfod: 1306 vm.stats.vm.v_zfod: 1094325 vm.stats.vm.v_cow_optim: 988 vm.stats.vm.v_cow_faults: 517672 vm.stats.vm.v_vm_faults: 7433323 vm.stats.sys.v_soft: 7447748 vm.stats.sys.v_intr: 75923001 vm.stats.sys.v_syscall: 73890104 vm.stats.sys.v_trap: 7872847 vm.stats.sys.v_swtch: 38067580 vm.stats.object.bypasses: 4408 vm.stats.object.collapses: 43060 This is LP64, so naturally gcc complained a bit. It was faster to throw in a sizeof() printf than to wade through the header files. #include #include #include #include #include #include int main(int unused_argc, char **unused_argv) { struct rlimit rl; printf("sizeof rl.rlim_cur = %ld\n", sizeof(rl.rlim_cur)); printf("sizeof rl.rlim_max = %ld\n", sizeof(rl.rlim_max)); if( -1 == getrlimit(RLIMIT_MEMLOCK, &rl) ) err(EX_OSERR, "Cannot get limit"); printf("memlock.current=%lu\n", rl.rlim_cur); printf(" memlock.max=%lu\n", rl.rlim_max); return EX_OK; } sizeof rl.rlim_cur = 8 sizeof rl.rlim_max = 8 memlock.current=9223372036854775807 memlock.max=9223372036854775807 Insanely large numbers, that don't change after a mlock(). That can't be right.