Deleted Added
full compact
vm_meter.c (219968) vm_meter.c (228449)
1/*-
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 16 unchanged lines hidden (view full) ---

25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
30 */
31
32#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 16 unchanged lines hidden (view full) ---

25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
30 */
31
32#include <sys/cdefs.h>
33__FBSDID("$FreeBSD: head/sys/vm/vm_meter.c 219968 2011-03-24 18:40:11Z jhb $");
33__FBSDID("$FreeBSD: head/sys/vm/vm_meter.c 228449 2011-12-13 00:38:50Z eadler $");
34
35#include <sys/param.h>
36#include <sys/systm.h>
37#include <sys/kernel.h>
38#include <sys/lock.h>
39#include <sys/mutex.h>
40#include <sys/proc.h>
41#include <sys/resource.h>

--- 8 unchanged lines hidden (view full) ---

50#include <vm/pmap.h>
51#include <vm/vm_map.h>
52#include <vm/vm_object.h>
53#include <sys/sysctl.h>
54
55struct vmmeter cnt;
56
57SYSCTL_UINT(_vm, VM_V_FREE_MIN, v_free_min,
34
35#include <sys/param.h>
36#include <sys/systm.h>
37#include <sys/kernel.h>
38#include <sys/lock.h>
39#include <sys/mutex.h>
40#include <sys/proc.h>
41#include <sys/resource.h>

--- 8 unchanged lines hidden (view full) ---

50#include <vm/pmap.h>
51#include <vm/vm_map.h>
52#include <vm/vm_object.h>
53#include <sys/sysctl.h>
54
55struct vmmeter cnt;
56
57SYSCTL_UINT(_vm, VM_V_FREE_MIN, v_free_min,
58 CTLFLAG_RW, &cnt.v_free_min, 0, "");
58 CTLFLAG_RW, &cnt.v_free_min, 0, "Minimum low-free-pages threshold");
59SYSCTL_UINT(_vm, VM_V_FREE_TARGET, v_free_target,
59SYSCTL_UINT(_vm, VM_V_FREE_TARGET, v_free_target,
60 CTLFLAG_RW, &cnt.v_free_target, 0, "");
60 CTLFLAG_RW, &cnt.v_free_target, 0, "Desired free pages");
61SYSCTL_UINT(_vm, VM_V_FREE_RESERVED, v_free_reserved,
61SYSCTL_UINT(_vm, VM_V_FREE_RESERVED, v_free_reserved,
62 CTLFLAG_RW, &cnt.v_free_reserved, 0, "");
62 CTLFLAG_RW, &cnt.v_free_reserved, 0, "Pages reserved for deadlock");
63SYSCTL_UINT(_vm, VM_V_INACTIVE_TARGET, v_inactive_target,
63SYSCTL_UINT(_vm, VM_V_INACTIVE_TARGET, v_inactive_target,
64 CTLFLAG_RW, &cnt.v_inactive_target, 0, "");
64 CTLFLAG_RW, &cnt.v_inactive_target, 0, "Pages desired inactive");
65SYSCTL_UINT(_vm, VM_V_CACHE_MIN, v_cache_min,
65SYSCTL_UINT(_vm, VM_V_CACHE_MIN, v_cache_min,
66 CTLFLAG_RW, &cnt.v_cache_min, 0, "");
66 CTLFLAG_RW, &cnt.v_cache_min, 0, "Min pages on cache queue");
67SYSCTL_UINT(_vm, VM_V_CACHE_MAX, v_cache_max,
67SYSCTL_UINT(_vm, VM_V_CACHE_MAX, v_cache_max,
68 CTLFLAG_RW, &cnt.v_cache_max, 0, "");
68 CTLFLAG_RW, &cnt.v_cache_max, 0, "Max pages on cache queue");
69SYSCTL_UINT(_vm, VM_V_PAGEOUT_FREE_MIN, v_pageout_free_min,
69SYSCTL_UINT(_vm, VM_V_PAGEOUT_FREE_MIN, v_pageout_free_min,
70 CTLFLAG_RW, &cnt.v_pageout_free_min, 0, "");
70 CTLFLAG_RW, &cnt.v_pageout_free_min, 0, "Min pages reserved for kernel");
71SYSCTL_UINT(_vm, OID_AUTO, v_free_severe,
71SYSCTL_UINT(_vm, OID_AUTO, v_free_severe,
72 CTLFLAG_RW, &cnt.v_free_severe, 0, "");
72 CTLFLAG_RW, &cnt.v_free_severe, 0, "Severe page depletion point");
73
74static int
75sysctl_vm_loadavg(SYSCTL_HANDLER_ARGS)
76{
77
78#ifdef SCTL_MASK32
79 u_int32_t la[4];
80

--- 184 unchanged lines hidden (view full) ---

265 "System virtual memory statistics");
266SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats");
267static SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0,
268 "VM meter sys stats");
269static SYSCTL_NODE(_vm_stats, OID_AUTO, vm, CTLFLAG_RW, 0,
270 "VM meter vm stats");
271SYSCTL_NODE(_vm_stats, OID_AUTO, misc, CTLFLAG_RW, 0, "VM meter misc stats");
272
73
74static int
75sysctl_vm_loadavg(SYSCTL_HANDLER_ARGS)
76{
77
78#ifdef SCTL_MASK32
79 u_int32_t la[4];
80

--- 184 unchanged lines hidden (view full) ---

265 "System virtual memory statistics");
266SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats");
267static SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0,
268 "VM meter sys stats");
269static SYSCTL_NODE(_vm_stats, OID_AUTO, vm, CTLFLAG_RW, 0,
270 "VM meter vm stats");
271SYSCTL_NODE(_vm_stats, OID_AUTO, misc, CTLFLAG_RW, 0, "VM meter misc stats");
272
273SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_swtch, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
274 &cnt.v_swtch, 0, vcnt, "IU", "Context switches");
275SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_trap, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
276 &cnt.v_trap, 0, vcnt, "IU", "Traps");
277SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_syscall, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
278 &cnt.v_syscall, 0, vcnt, "IU", "Syscalls");
279SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_intr, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
280 &cnt.v_intr, 0, vcnt, "IU", "Hardware interrupts");
281SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_soft, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
282 &cnt.v_soft, 0, vcnt, "IU", "Software interrupts");
283SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vm_faults, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
284 &cnt.v_vm_faults, 0, vcnt, "IU", "VM faults");
285SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_faults, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
286 &cnt.v_cow_faults, 0, vcnt, "IU", "COW faults");
287SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_optim, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
288 &cnt.v_cow_optim, 0, vcnt, "IU", "Optimized COW faults");
289SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_zfod, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
290 &cnt.v_zfod, 0, vcnt, "IU", "Zero fill");
291SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_ozfod, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
292 &cnt.v_ozfod, 0, vcnt, "IU", "Optimized zero fill");
293SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapin, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
294 &cnt.v_swapin, 0, vcnt, "IU", "Swapin operations");
295SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
296 &cnt.v_swapout, 0, vcnt, "IU", "Swapout operations");
297SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsin, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
298 &cnt.v_swappgsin, 0, vcnt, "IU", "Swapin pages");
299SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
300 &cnt.v_swappgsout, 0, vcnt, "IU", "Swapout pages");
301SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodein, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
302 &cnt.v_vnodein, 0, vcnt, "IU", "Vnodein operations");
303SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodeout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
304 &cnt.v_vnodeout, 0, vcnt, "IU", "Vnodeout operations");
305SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsin, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
306 &cnt.v_vnodepgsin, 0, vcnt, "IU", "Vnodein pages");
307SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
308 &cnt.v_vnodepgsout, 0, vcnt, "IU", "Vnodeout pages");
309SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_intrans, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
310 &cnt.v_intrans, 0, vcnt, "IU", "In transit page blocking");
311SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_reactivated, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
312 &cnt.v_reactivated, 0, vcnt, "IU", "Reactivated pages");
313SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdwakeups, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
314 &cnt.v_pdwakeups, 0, vcnt, "IU", "Pagedaemon wakeups");
315SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
316 &cnt.v_pdpages, 0, vcnt, "IU", "Pagedaemon page scans");
317SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tcached, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
318 &cnt.v_tcached, 0, vcnt, "IU", "Total pages cached");
319SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_dfree, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
320 &cnt.v_dfree, 0, vcnt, "IU", "");
321SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pfree, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
322 &cnt.v_pfree, 0, vcnt, "IU", "");
323SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tfree, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
324 &cnt.v_tfree, 0, vcnt, "IU", "");
325SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_size, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
326 &cnt.v_page_size, 0, vcnt, "IU", "");
327SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
328 &cnt.v_page_count, 0, vcnt, "IU", "");
329SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_reserved, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
330 &cnt.v_free_reserved, 0, vcnt, "IU", "");
331SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_target, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
332 &cnt.v_free_target, 0, vcnt, "IU", "");
333SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
334 &cnt.v_free_min, 0, vcnt, "IU", "");
335SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
336 &cnt.v_free_count, 0, vcnt, "IU", "");
337SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_wire_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
338 &cnt.v_wire_count, 0, vcnt, "IU", "");
339SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_active_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
340 &cnt.v_active_count, 0, vcnt, "IU", "");
341SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_target, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
342 &cnt.v_inactive_target, 0, vcnt, "IU", "");
343SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
344 &cnt.v_inactive_count, 0, vcnt, "IU", "");
345SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
346 &cnt.v_cache_count, 0, vcnt, "IU", "");
347SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
348 &cnt.v_cache_min, 0, vcnt, "IU", "");
349SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_max, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
350 &cnt.v_cache_max, 0, vcnt, "IU", "");
351SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pageout_free_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
352 &cnt.v_pageout_free_min, 0, vcnt, "IU", "");
353SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_interrupt_free_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
354 &cnt.v_interrupt_free_min, 0, vcnt, "IU", "");
355SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forks, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
356 &cnt.v_forks, 0, vcnt, "IU", "Number of fork() calls");
357SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforks, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
358 &cnt.v_vforks, 0, vcnt, "IU", "Number of vfork() calls");
359SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforks, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
360 &cnt.v_rforks, 0, vcnt, "IU", "Number of rfork() calls");
361SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreads, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
362 &cnt.v_kthreads, 0, vcnt, "IU", "Number of fork() calls by kernel");
363SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forkpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
364 &cnt.v_forkpages, 0, vcnt, "IU", "VM pages affected by fork()");
365SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforkpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
366 &cnt.v_vforkpages, 0, vcnt, "IU", "VM pages affected by vfork()");
367SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforkpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
368 &cnt.v_rforkpages, 0, vcnt, "IU", "VM pages affected by rfork()");
369SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreadpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE,
370 &cnt.v_kthreadpages, 0, vcnt, "IU", "VM pages affected by fork() by kernel");
273#define VM_STATS_SYS(var, descr) SYSCTL_PROC(_vm_stats_sys, OID_AUTO, var, \
274 (CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE), &cnt.v_swtch, 0, vcnt, \
275 "IU", descr);
371
276
372SYSCTL_INT(_vm_stats_misc, OID_AUTO,
373 zero_page_count, CTLFLAG_RD, &vm_page_zero_count, 0, "");
277VM_STATS_SYS(v_swtch, "Context switches");
278VM_STATS_SYS(v_trap, "Traps");
279VM_STATS_SYS(v_syscall, "System calls");
280VM_STATS_SYS(v_intr, "Device interrupts");
281VM_STATS_SYS(v_soft, "Software interrupts");
282VM_STATS_SYS(v_vm_faults, "Address memory faults");
283VM_STATS_SYS(v_cow_faults, "Copy-on-write faults");
284VM_STATS_SYS(v_cow_optim, "Optimized COW faults")
285VM_STATS_SYS(v_zfod, "Pages zero-filled on demand")
286VM_STATS_SYS(v_ozfod, "Optimized zero fill pages")
287VM_STATS_SYS(v_swapin, "Swap pager pageins")
288VM_STATS_SYS(v_swapout, "Swap pager pageouts")
289VM_STATS_SYS(v_swappgsin, "Swap pages swapped in")
290VM_STATS_SYS(v_swappgsout, "Swap pages swapped out")
291VM_STATS_SYS(v_vnodein, "Vnode pager pageins")
292VM_STATS_SYS(v_vnodeout, "Vnode pager pageouts")
293VM_STATS_SYS(v_vnodepgsin, "Vnode pages paged in")
294VM_STATS_SYS(v_vnodepgsout, "Vnode pages paged out")
295VM_STATS_SYS(v_intrans, "In transit page faults")
296VM_STATS_SYS(v_reactivated, "Pages reactivated from free list")
297VM_STATS_SYS(v_pdwakeups, "Pagedaemon wakeups")
298VM_STATS_SYS(v_pdpages, "Pages analyzed by pagedaemon")
299VM_STATS_SYS(v_tcached, "Total pages cached")
300VM_STATS_SYS(v_dfree, "Pages freed by pagedaemon")
301VM_STATS_SYS(v_pfree, "Pages freed by exiting processes")
302VM_STATS_SYS(v_tfree, "Total pages freed")
303VM_STATS_SYS(v_page_size, "Page size in bytes")
304VM_STATS_SYS(v_page_count, "Total number of pages in system")
305VM_STATS_SYS(v_free_reserved, "Pages reserved for deadlock")
306VM_STATS_SYS(v_free_target, "Pages desired free")
307VM_STATS_SYS(v_free_min, "Minimum low-free-pages threshold")
308VM_STATS_SYS(v_free_count, "Free pages")
309VM_STATS_SYS(v_wire_count, "Wired pages")
310VM_STATS_SYS(v_active_count, "Active pages")
311VM_STATS_SYS(v_inactive_target, "Desired inactive pages")
312VM_STATS_SYS(v_inactive_count, "Inactive pages")
313VM_STATS_SYS(v_cache_count, "Pages on cache queue")
314VM_STATS_SYS(v_cache_min, "Min pages on cache queue")
315VM_STATS_SYS(v_cache_max, "Max pages on cached queue")
316VM_STATS_SYS(v_pageout_free_min, "Min pages reserved for kernel")
317VM_STATS_SYS(v_interrupt_free_min, "Reserved pages for interrupt code")
318VM_STATS_SYS(v_forks, "Number of fork() calls")
319VM_STATS_SYS(v_vforks, "Number of vfork() calls")
320VM_STATS_SYS(v_rforks, "Number of rfork() calls")
321VM_STATS_SYS(v_kthreads, "Number of fork() calls by kernel")
322VM_STATS_SYS(v_forkpages, "VM pages affected by fork()")
323VM_STATS_SYS(v_vforkpages, "VM pages affected by vfork()")
324VM_STATS_SYS(v_rforkpages, "VM pages affected by rfork()")
325VM_STATS_SYS(v_kthreadpages, "VM pages affected by fork() by kernel")
326
327SYSCTL_INT(_vm_stats_misc, OID_AUTO, zero_page_count, CTLFLAG_RD,
328 &vm_page_zero_count, 0, "Number of zero-ed free pages");