Index: stable/10/sys/sys/vmmeter.h =================================================================== --- stable/10/sys/sys/vmmeter.h (revision 330046) +++ stable/10/sys/sys/vmmeter.h (revision 330047) @@ -1,210 +1,209 @@ /*- * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)vmmeter.h 8.2 (Berkeley) 7/10/94 * $FreeBSD$ */ #ifndef _SYS_VMMETER_H_ #define _SYS_VMMETER_H_ /* * This value is used by ps(1) to change sleep state flag from 'S' to * 'I' and by the sched process to set the alarm clock. */ #define MAXSLP 20 /* * System wide statistics counters. * Locking: * a - locked by atomic operations * c - constant after initialization * f - locked by vm_page_queue_free_mtx * p - locked by being in the PCPU and atomicity respect to interrupts * q - changes are synchronized by the corresponding vm_pagequeue lock */ struct vmmeter { /* * General system activity. */ u_int v_swtch; /* (p) context switches */ u_int v_trap; /* (p) calls to trap */ u_int v_syscall; /* (p) calls to syscall() */ u_int v_intr; /* (p) device interrupts */ u_int v_soft; /* (p) software interrupts */ /* * Virtual memory activity. */ u_int v_vm_faults; /* (p) address memory faults */ u_int v_io_faults; /* (p) page faults requiring I/O */ u_int v_cow_faults; /* (p) copy-on-writes faults */ u_int v_cow_optim; /* (p) optimized copy-on-writes faults */ u_int v_zfod; /* (p) pages zero filled on demand */ u_int v_ozfod; /* (p) optimized zero fill pages */ u_int v_swapin; /* (p) swap pager pageins */ u_int v_swapout; /* (p) swap pager pageouts */ u_int v_swappgsin; /* (p) swap pager pages paged in */ u_int v_swappgsout; /* (p) swap pager pages paged out */ u_int v_vnodein; /* (p) vnode pager pageins */ u_int v_vnodeout; /* (p) vnode pager pageouts */ u_int v_vnodepgsin; /* (p) vnode_pager pages paged in */ u_int v_vnodepgsout; /* (p) vnode pager pages paged out */ u_int v_intrans; /* (p) intransit blocking page faults */ u_int v_reactivated; /* (f) pages reactivated from free list */ u_int v_pdwakeups; /* (f) times daemon has awaken from sleep */ u_int v_pdpages; /* (p) pages analyzed by daemon */ u_int v_tcached; /* (p) total pages cached */ u_int v_dfree; /* (p) pages freed by daemon */ u_int v_pfree; /* (p) pages freed by exiting processes */ u_int v_tfree; /* (p) total pages freed */ /* * Distribution of page usages. */ u_int v_page_size; /* (c) page size in bytes */ u_int v_page_count; /* (c) total number of pages in system */ u_int v_free_reserved; /* (c) pages reserved for deadlock */ u_int v_free_target; /* (c) pages desired free */ u_int v_free_min; /* (c) pages desired free */ u_int v_free_count; /* (f) pages free */ u_int v_wire_count; /* (a) pages wired down */ u_int v_active_count; /* (q) pages active */ u_int v_inactive_target; /* (c) pages desired inactive */ u_int v_inactive_count; /* (q) pages inactive */ u_int v_cache_count; /* (f) pages on cache queue */ u_int v_cache_min; /* (c) min pages desired on cache queue */ u_int v_cache_max; /* (c) max pages in cached obj (unused) */ u_int v_pageout_free_min; /* (c) min pages reserved for kernel */ u_int v_interrupt_free_min; /* (c) reserved pages for int code */ u_int v_free_severe; /* (c) severe page depletion point */ /* * Fork/vfork/rfork activity. */ u_int v_forks; /* (p) fork() calls */ u_int v_vforks; /* (p) vfork() calls */ u_int v_rforks; /* (p) rfork() calls */ u_int v_kthreads; /* (p) fork() calls by kernel */ u_int v_forkpages; /* (p) VM pages affected by fork() */ u_int v_vforkpages; /* (p) VM pages affected by vfork() */ u_int v_rforkpages; /* (p) VM pages affected by rfork() */ u_int v_kthreadpages; /* (p) VM pages affected by fork() by kernel */ }; #ifdef _KERNEL extern struct vmmeter cnt; extern int vm_pageout_wakeup_thresh; /* * Return TRUE if we are under our severe low-free-pages threshold * * This routine is typically used at the user<->system interface to determine * whether we need to block in order to avoid a low memory deadlock. */ static __inline int vm_page_count_severe(void) { return (cnt.v_free_severe > (cnt.v_free_count + cnt.v_cache_count)); } /* * Return TRUE if we are under our minimum low-free-pages threshold. * * This routine is typically used within the system to determine whether * we can execute potentially very expensive code in terms of memory. It * is also used by the pageout daemon to calculate when to sleep, when * to wake waiters up, and when (after making a pass) to become more * desparate. */ static __inline int vm_page_count_min(void) { return (cnt.v_free_min > (cnt.v_free_count + cnt.v_cache_count)); } /* * Return TRUE if we have not reached our free page target during * free page recovery operations. */ static __inline int vm_page_count_target(void) { return (cnt.v_free_target > (cnt.v_free_count + cnt.v_cache_count)); } /* * Return the number of pages we need to free-up or cache * A positive number indicates that we do not have enough free pages. */ static __inline int vm_paging_target(void) { return (cnt.v_free_target - (cnt.v_free_count + cnt.v_cache_count)); } /* * Returns TRUE if the pagedaemon needs to be woken up. */ static __inline int vm_paging_needed(void) { return (cnt.v_free_count + cnt.v_cache_count < (u_int)vm_pageout_wakeup_thresh); } #endif -/* systemwide totals computed every five seconds */ struct vmtotal { int16_t t_rq; /* length of the run queue */ - int16_t t_dw; /* jobs in ``disk wait'' (neg priority) */ - int16_t t_pw; /* jobs in page wait */ - int16_t t_sl; /* jobs sleeping in core */ - int16_t t_sw; /* swapped out runnable/short block jobs */ + int16_t t_dw; /* threads in ``disk wait'' (neg priority) */ + int16_t t_pw; /* threads in page wait */ + int16_t t_sl; /* threads sleeping in core */ + int16_t t_sw; /* swapped out runnable/short block threads */ int32_t t_vm; /* total virtual memory */ int32_t t_avm; /* active virtual memory */ int32_t t_rm; /* total real memory in use */ int32_t t_arm; /* active real memory */ int32_t t_vmshr; /* shared virtual memory */ int32_t t_avmshr; /* active shared virtual memory */ int32_t t_rmshr; /* shared real memory */ int32_t t_armshr; /* active shared real memory */ int32_t t_free; /* free memory pages */ }; #endif Index: stable/10/usr.bin/vmstat/vmstat.8 =================================================================== --- stable/10/usr.bin/vmstat/vmstat.8 (revision 330046) +++ stable/10/usr.bin/vmstat/vmstat.8 (revision 330047) @@ -1,378 +1,383 @@ .\" Copyright (c) 1986, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)vmstat.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd August 8, 2014 +.Dd January 18, 2018 .Dt VMSTAT 8 .Os .Sh NAME .Nm vmstat .Nd report virtual memory statistics .Sh SYNOPSIS .Nm .\" .Op Fl fimst .Op Fl afHhimoPsz .Op Fl M Ar core Op Fl N Ar system .Op Fl c Ar count .Op Fl n Ar devs .Oo .Fl p .Sm off .Ar type , if , pass .Sm on .Oc .Op Fl w Ar wait .Op Ar disks ... .Op wait Op count .Sh DESCRIPTION The .Nm utility reports certain kernel statistics kept about process, virtual memory, disk, trap and cpu activity. .Pp If the .Fl M option is not specified, information is obtained from the currently running kernel via the .Xr sysctl 3 interface. Otherwise, information is read from the specified core file, using the name list from the specified kernel image (or from the default image). .Pp The options are as follows: .Bl -tag -width indent .It Fl a When used with .Fl i , include statistics about interrupts that have never been generated. .It Fl c Repeat the display .Ar count times. The first display is for the time since a reboot and each subsequent report is for the time period since the last display. If no repeat .Ar count is specified, and .Fl w is specified, the default is infinity, otherwise the default is one. .It Fl f Report on the number .Xr fork 2 , .Xr vfork 2 and .Xr rfork 2 system calls since system startup, and the number of pages of virtual memory involved in each. .It Fl h Changes memory columns into more easily human readable form. The default if standard output is a terminal device. .It Fl H Changes memory columns into straight numbers. The default if standard output is not a terminal device (such as a script). .It Fl i Report on the number of interrupts taken by each device since system startup. .It Fl M Extract values associated with the name list from the specified .Ar core . .It Fl N If .Fl M is also specified, extract the name list from the specified .Ar system instead of the default, which is the kernel image the system has booted from. .It Fl m Report on the usage of kernel dynamic memory allocated using .Xr malloc 9 by type. .It Fl n Change the maximum number of disks to display from the default of 2. .It Fl o Display a list of virtual memory objects in the system and the resident memory used by each object. .It Fl P Report per-cpu system/user/idle cpu statistics. .It Fl p Specify which types of devices to display. There are three different categories of devices: .Pp .Bl -tag -width indent -compact .It device type: .Bl -tag -width 9n -compact .It da Direct Access devices .It sa Sequential Access devices .It printer Printers .It proc Processor devices .It worm Write Once Read Multiple devices .It cd CD devices .It scanner Scanner devices .It optical Optical Memory devices .It changer Medium Changer devices .It comm Communication devices .It array Storage Array devices .It enclosure Enclosure Services devices .It floppy Floppy devices .El .Pp .It interface: .Bl -tag -width 9n -compact .It IDE Integrated Drive Electronics devices .It SCSI Small Computer System Interface devices .It other Any other device interface .El .Pp .It passthrough: .Bl -tag -width 9n -compact .It pass Passthrough devices .El .El .Pp The user must specify at least one device type, and may specify at most one device type from each category. Multiple device types in a single device type statement must be separated by commas. .Pp Any number of .Fl p arguments may be specified on the command line. All .Fl p arguments are ORed together to form a matching expression against which all devices in the system are compared. Any device that fully matches any .Fl p argument will be included in the .Nm output, up to two devices, or the maximum number of devices specified by the user. .It Fl s Display the contents of the .Em sum structure, giving the total number of several kinds of paging related events which have occurred since system startup. .\" .It Fl t .\" Report on the number of page in and page reclaims since system startup, .\" and the amount of time required by each. .It Fl w Pause .Ar wait seconds between each display. If no repeat .Ar wait interval is specified, the default is 1 second. The .Nm command will accept and honor a non-integer number of seconds. .It Fl z Report on memory used by the kernel zone allocator, .Xr uma 9 , by zone. .El .Pp The .Ar wait and .Ar count arguments may be given after their respective flags at any point on the command line before the .Ar disks argument(s), or without their flags, as the final argument(s). The latter form is accepted for backwards compatibility, but it is preferred to use the forms with .Fl w and .Fl c to avoid ambiguity. .Pp By default, .Nm displays the following information: .Bl -tag -width indent .It procs -Information about the numbers of processes in various states. +Information about the number of threads in various states: .Pp .Bl -tag -width indent -compact .It r -in run queue +running or in run queue .It b blocked for resources (i/o, paging, etc.) .It w -runnable or short sleeper (< 20 secs) but swapped +swapped out .El .It memory Information about the usage of virtual and real memory. -Virtual pages (reported in units of 1024 bytes) are considered active if -they belong to processes which are running or have run in the last 20 -seconds. .Pp +Mapped virtual memory is a sum of all of the virtual pages belonging +to mapped virtual memory objects. +Note that the entire memory object's size is considered mapped even if +only a subset of the object's pages are currently mapped. +This statistic is not related to the active page queue which is used to track +real memory. +.Pp .Bl -tag -width indent -compact .It avm -active virtual pages +mapped virtual memory +.Po previously called active in +.Nm +output +.Pc .It fre size of the free list .El .It page Information about page faults and paging activity. -These are averaged each five seconds, and given in units per second. +These are given in units per second. .Pp .Bl -tag -width indent -compact .It flt total number of page faults .It re page reclaims (simulating reference bits) .\" .It at .\" pages attached (found in free list) .It pi pages paged in .It po pages paged out .It fr -pages freed per second +pages freed .\" .It de .\" anticipated short term memory shortfall .It sr -pages scanned by clock algorithm, per-second +pages scanned by page daemon .El .It disks Disk operations per second (this field is system dependent). Typically paging will be split across the available drives. The header of the field is the first two characters of the disk name and the unit number. If more than two disk drives are configured in the system, .Nm displays only the first two drives, unless the user specifies the .Fl n argument to increase the number of drives displayed. This will probably cause the display to exceed 80 columns, however. To force .Nm to display specific drives, their names may be supplied on the command line. The .Nm utility defaults to show disks first, and then various other random devices in the system to add up to two devices, if there are that many devices in the system. If devices are specified on the command line, or if a device type matching pattern is specified (see above), .Nm will only display the given devices or the devices matching the pattern, and will not randomly select other devices in the system. .It faults -Trap/interrupt rate averages per second over last 5 seconds. +Trap/interrupt rates per second. .Pp .Bl -tag -width indent -compact .It in -device interrupts per interval (including clock interrupts) +device interrupts (including clock interrupts) .It sy -system calls per interval +system calls .It cs -cpu context switch rate (switches/interval) +cpu context switches .El .It cpu Breakdown of percentage usage of CPU time. .Pp .Bl -tag -width indent -compact .It us user time for normal and low priority processes .It sy -system time +system and interrupt time .It id cpu idle .El .El .Sh FILES .Bl -tag -width /boot/kernel/kernel -compact .It Pa /boot/kernel/kernel default kernel namelist .It Pa /dev/kmem default memory file .El .Sh EXAMPLES The command: .Dl vmstat -w 5 will print what the system is doing every five -seconds; this is a good choice of printing interval since this is how often -some of the statistics are sampled in the system. -Others vary every second and running the output for a while will make it -apparent which are recomputed every second. +seconds. .Pp The command: .Dl vmstat -p da -p cd -w 1 will tell vmstat to select the first two direct access or CDROM devices and display statistics on those devices, as well as other systems statistics every second. .Sh SEE ALSO .Xr fstat 1 , .Xr netstat 1 , .Xr nfsstat 1 , .Xr ps 1 , .Xr systat 1 , .Xr libmemstat 3 , .Xr gstat 8 , .Xr iostat 8 , .Xr pstat 8 , .Xr sysctl 8 , .Xr malloc 9 , .Xr uma 9 .Pp The sections starting with ``Interpreting system activity'' in .%T "Installing and Operating 4.3BSD" . .Sh BUGS The .Fl c and .Fl w options are only available with the default output. Index: stable/10 =================================================================== --- stable/10 (revision 330046) +++ stable/10 (revision 330047) Property changes on: stable/10 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r328134 Index: stable/11/sys/sys/vmmeter.h =================================================================== --- stable/11/sys/sys/vmmeter.h (revision 330046) +++ stable/11/sys/sys/vmmeter.h (revision 330047) @@ -1,223 +1,222 @@ /*- * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)vmmeter.h 8.2 (Berkeley) 7/10/94 * $FreeBSD$ */ #ifndef _SYS_VMMETER_H_ #define _SYS_VMMETER_H_ /* * This value is used by ps(1) to change sleep state flag from 'S' to * 'I' and by the sched process to set the alarm clock. */ #define MAXSLP 20 /* * System wide statistics counters. * Locking: * a - locked by atomic operations * c - constant after initialization * f - locked by vm_page_queue_free_mtx * p - locked by being in the PCPU and atomicity respect to interrupts * q - changes are synchronized by the corresponding vm_pagequeue lock */ struct vmmeter { /* * General system activity. */ u_int v_swtch; /* (p) context switches */ u_int v_trap; /* (p) calls to trap */ u_int v_syscall; /* (p) calls to syscall() */ u_int v_intr; /* (p) device interrupts */ u_int v_soft; /* (p) software interrupts */ /* * Virtual memory activity. */ u_int v_vm_faults; /* (p) address memory faults */ u_int v_io_faults; /* (p) page faults requiring I/O */ u_int v_cow_faults; /* (p) copy-on-writes faults */ u_int v_cow_optim; /* (p) optimized copy-on-writes faults */ u_int v_zfod; /* (p) pages zero filled on demand */ u_int v_ozfod; /* (p) optimized zero fill pages */ u_int v_swapin; /* (p) swap pager pageins */ u_int v_swapout; /* (p) swap pager pageouts */ u_int v_swappgsin; /* (p) swap pager pages paged in */ u_int v_swappgsout; /* (p) swap pager pages paged out */ u_int v_vnodein; /* (p) vnode pager pageins */ u_int v_vnodeout; /* (p) vnode pager pageouts */ u_int v_vnodepgsin; /* (p) vnode_pager pages paged in */ u_int v_vnodepgsout; /* (p) vnode pager pages paged out */ u_int v_intrans; /* (p) intransit blocking page faults */ u_int v_reactivated; /* (p) pages reactivated by the pagedaemon */ u_int v_pdwakeups; /* (p) times daemon has awaken from sleep */ u_int v_pdpages; /* (p) pages analyzed by daemon */ u_int v_pdshortfalls; /* (p) page reclamation shortfalls */ u_int v_tcached; /* (p) total pages cached */ u_int v_dfree; /* (p) pages freed by daemon */ u_int v_pfree; /* (p) pages freed by exiting processes */ u_int v_tfree; /* (p) total pages freed */ /* * Distribution of page usages. */ u_int v_page_size; /* (c) page size in bytes */ u_int v_page_count; /* (c) total number of pages in system */ u_int v_free_reserved; /* (c) pages reserved for deadlock */ u_int v_free_target; /* (c) pages desired free */ u_int v_free_min; /* (c) pages desired free */ u_int v_free_count; /* (f) pages free */ u_int v_wire_count; /* (a) pages wired down */ u_int v_active_count; /* (q) pages active */ u_int v_inactive_target; /* (c) pages desired inactive */ u_int v_inactive_count; /* (q) pages inactive */ u_int v_laundry_count; /* (q) pages eligible for laundering */ u_int v_cache_count; /* (f) pages on cache queue */ u_int v_pageout_free_min; /* (c) min pages reserved for kernel */ u_int v_interrupt_free_min; /* (c) reserved pages for int code */ u_int v_free_severe; /* (c) severe page depletion point */ /* * Fork/vfork/rfork activity. */ u_int v_forks; /* (p) fork() calls */ u_int v_vforks; /* (p) vfork() calls */ u_int v_rforks; /* (p) rfork() calls */ u_int v_kthreads; /* (p) fork() calls by kernel */ u_int v_forkpages; /* (p) VM pages affected by fork() */ u_int v_vforkpages; /* (p) VM pages affected by vfork() */ u_int v_rforkpages; /* (p) VM pages affected by rfork() */ u_int v_kthreadpages; /* (p) VM pages affected by fork() by kernel */ }; #ifdef _KERNEL extern struct vmmeter vm_cnt; extern u_int vm_pageout_wakeup_thresh; /* * Return TRUE if we are under our severe low-free-pages threshold * * This routine is typically used at the user<->system interface to determine * whether we need to block in order to avoid a low memory deadlock. */ static inline int vm_page_count_severe(void) { return (vm_cnt.v_free_severe > vm_cnt.v_free_count); } /* * Return TRUE if we are under our minimum low-free-pages threshold. * * This routine is typically used within the system to determine whether * we can execute potentially very expensive code in terms of memory. It * is also used by the pageout daemon to calculate when to sleep, when * to wake waiters up, and when (after making a pass) to become more * desperate. */ static inline int vm_page_count_min(void) { return (vm_cnt.v_free_min > vm_cnt.v_free_count); } /* * Return TRUE if we have not reached our free page target during * free page recovery operations. */ static inline int vm_page_count_target(void) { return (vm_cnt.v_free_target > vm_cnt.v_free_count); } /* * Return the number of pages we need to free-up or cache * A positive number indicates that we do not have enough free pages. */ static inline int vm_paging_target(void) { return (vm_cnt.v_free_target - vm_cnt.v_free_count); } /* * Returns TRUE if the pagedaemon needs to be woken up. */ static inline int vm_paging_needed(u_int free_count) { return (free_count < vm_pageout_wakeup_thresh); } /* * Return the number of pages we need to launder. * A positive number indicates that we have a shortfall of clean pages. */ static inline int vm_laundry_target(void) { return (vm_paging_target()); } /* * Obtain the value of a per-CPU counter. */ #define VM_METER_PCPU_CNT(member) \ vm_meter_cnt(__offsetof(struct vmmeter, member)) u_int vm_meter_cnt(size_t); #endif -/* systemwide totals computed every five seconds */ struct vmtotal { int16_t t_rq; /* length of the run queue */ - int16_t t_dw; /* jobs in ``disk wait'' (neg priority) */ - int16_t t_pw; /* jobs in page wait */ - int16_t t_sl; /* jobs sleeping in core */ - int16_t t_sw; /* swapped out runnable/short block jobs */ + int16_t t_dw; /* threads in ``disk wait'' (neg priority) */ + int16_t t_pw; /* threads in page wait */ + int16_t t_sl; /* threads sleeping in core */ + int16_t t_sw; /* swapped out runnable/short block threads */ int32_t t_vm; /* total virtual memory */ int32_t t_avm; /* active virtual memory */ int32_t t_rm; /* total real memory in use */ int32_t t_arm; /* active real memory */ int32_t t_vmshr; /* shared virtual memory */ int32_t t_avmshr; /* active shared virtual memory */ int32_t t_rmshr; /* shared real memory */ int32_t t_armshr; /* active shared real memory */ int32_t t_free; /* free memory pages */ }; #endif Index: stable/11/usr.bin/vmstat/vmstat.8 =================================================================== --- stable/11/usr.bin/vmstat/vmstat.8 (revision 330046) +++ stable/11/usr.bin/vmstat/vmstat.8 (revision 330047) @@ -1,388 +1,393 @@ .\" Copyright (c) 1986, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)vmstat.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd November 19, 2015 +.Dd January 18, 2018 .Dt VMSTAT 8 .Os .Sh NAME .Nm vmstat .Nd report virtual memory statistics .Sh SYNOPSIS .Nm .\" .Op Fl fimst .Op Fl -libxo .Op Fl afHhimoPsz .Op Fl M Ar core Op Fl N Ar system .Op Fl c Ar count .Op Fl n Ar devs .Oo .Fl p .Sm off .Ar type , if , pass .Sm on .Oc .Op Fl w Ar wait .Op Ar disks ... .Op wait Op count .Sh DESCRIPTION The .Nm utility reports certain kernel statistics kept about process, virtual memory, disk, trap and cpu activity. .Pp If the .Fl M option is not specified, information is obtained from the currently running kernel via the .Xr sysctl 3 interface. Otherwise, information is read from the specified core file, using the name list from the specified kernel image (or from the default image). .Pp The options are as follows: .Bl -tag -width indent .It Fl -libxo Generate output via .Xr libxo 3 in a selection of different human and machine readable formats. See .Xr xo_parse_args 3 for details on command line arguments. .It Fl a When used with .Fl i , include statistics about interrupts that have never been generated. .It Fl c Repeat the display .Ar count times. The first display is for the time since a reboot and each subsequent report is for the time period since the last display. If no repeat .Ar count is specified, and .Fl w is specified, the default is infinity, otherwise the default is one. .It Fl f Report on the number .Xr fork 2 , .Xr vfork 2 and .Xr rfork 2 system calls since system startup, and the number of pages of virtual memory involved in each. .It Fl h Changes memory columns into more easily human readable form. The default if standard output is a terminal device. .It Fl H Changes memory columns into straight numbers. The default if standard output is not a terminal device (such as a script). .It Fl i Report on the number of interrupts taken by each device since system startup. .It Fl M Extract values associated with the name list from the specified .Ar core . .It Fl N If .Fl M is also specified, extract the name list from the specified .Ar system instead of the default, which is the kernel image the system has booted from. .It Fl m Report on the usage of kernel dynamic memory allocated using .Xr malloc 9 by type. .It Fl n Change the maximum number of disks to display from the default of 2. .It Fl o Display a list of virtual memory objects in the system and the resident memory used by each object. .It Fl P Report per-cpu system/user/idle cpu statistics. .It Fl p Specify which types of devices to display. There are three different categories of devices: .Pp .Bl -tag -width indent -compact .It device type: .Bl -tag -width 9n -compact .It da Direct Access devices .It sa Sequential Access devices .It printer Printers .It proc Processor devices .It worm Write Once Read Multiple devices .It cd CD devices .It scanner Scanner devices .It optical Optical Memory devices .It changer Medium Changer devices .It comm Communication devices .It array Storage Array devices .It enclosure Enclosure Services devices .It floppy Floppy devices .El .Pp .It interface: .Bl -tag -width 9n -compact .It IDE Integrated Drive Electronics devices .It SCSI Small Computer System Interface devices .It other Any other device interface .El .Pp .It passthrough: .Bl -tag -width 9n -compact .It pass Passthrough devices .El .El .Pp The user must specify at least one device type, and may specify at most one device type from each category. Multiple device types in a single device type statement must be separated by commas. .Pp Any number of .Fl p arguments may be specified on the command line. All .Fl p arguments are ORed together to form a matching expression against which all devices in the system are compared. Any device that fully matches any .Fl p argument will be included in the .Nm output, up to two devices, or the maximum number of devices specified by the user. .It Fl s Display the contents of the .Em sum structure, giving the total number of several kinds of paging related events which have occurred since system startup. .\" .It Fl t .\" Report on the number of page in and page reclaims since system startup, .\" and the amount of time required by each. .It Fl w Pause .Ar wait seconds between each display. If no repeat .Ar wait interval is specified, the default is 1 second. The .Nm command will accept and honor a non-integer number of seconds. .It Fl z Report on memory used by the kernel zone allocator, .Xr uma 9 , by zone. .El .Pp The .Ar wait and .Ar count arguments may be given after their respective flags at any point on the command line before the .Ar disks argument(s), or without their flags, as the final argument(s). The latter form is accepted for backwards compatibility, but it is preferred to use the forms with .Fl w and .Fl c to avoid ambiguity. .Pp By default, .Nm displays the following information: .Bl -tag -width indent .It procs -Information about the numbers of processes in various states. +Information about the number of threads in various states: .Pp .Bl -tag -width indent -compact .It r -in run queue +running or in run queue .It b blocked for resources (i/o, paging, etc.) .It w -runnable or short sleeper (< 20 secs) but swapped +swapped out .El .It memory Information about the usage of virtual and real memory. -Virtual pages (reported in units of 1024 bytes) are considered active if -they belong to processes which are running or have run in the last 20 -seconds. .Pp +Mapped virtual memory is a sum of all of the virtual pages belonging +to mapped virtual memory objects. +Note that the entire memory object's size is considered mapped even if +only a subset of the object's pages are currently mapped. +This statistic is not related to the active page queue which is used to track +real memory. +.Pp .Bl -tag -width indent -compact .It avm -active virtual pages +mapped virtual memory +.Po previously called active in +.Nm +output +.Pc .It fre size of the free list .El .It page Information about page faults and paging activity. -These are averaged each five seconds, and given in units per second. +These are given in units per second. .Pp .Bl -tag -width indent -compact .It flt total number of page faults .It re page reclaims (simulating reference bits) .\" .It at .\" pages attached (found in free list) .It pi pages paged in .It po pages paged out .It fr -pages freed per second +pages freed .\" .It de .\" anticipated short term memory shortfall .It sr -pages scanned by clock algorithm, per-second +pages scanned by page daemon .El .It disks Disk operations per second (this field is system dependent). Typically paging will be split across the available drives. The header of the field is the first two characters of the disk name and the unit number. If more than two disk drives are configured in the system, .Nm displays only the first two drives, unless the user specifies the .Fl n argument to increase the number of drives displayed. This will probably cause the display to exceed 80 columns, however. To force .Nm to display specific drives, their names may be supplied on the command line. The .Nm utility defaults to show disks first, and then various other random devices in the system to add up to two devices, if there are that many devices in the system. If devices are specified on the command line, or if a device type matching pattern is specified (see above), .Nm will only display the given devices or the devices matching the pattern, and will not randomly select other devices in the system. .It faults -Trap/interrupt rate averages per second over last 5 seconds. +Trap/interrupt rates per second. .Pp .Bl -tag -width indent -compact .It in -device interrupts per interval (including clock interrupts) +device interrupts (including clock interrupts) .It sy -system calls per interval +system calls .It cs -cpu context switch rate (switches/interval) +cpu context switches .El .It cpu Breakdown of percentage usage of CPU time. .Pp .Bl -tag -width indent -compact .It us user time for normal and low priority processes .It sy -system time +system and interrupt time .It id cpu idle .El .El .Sh FILES .Bl -tag -width /boot/kernel/kernel -compact .It Pa /boot/kernel/kernel default kernel namelist .It Pa /dev/kmem default memory file .El .Sh EXAMPLES The command: .Dl vmstat -w 5 will print what the system is doing every five -seconds; this is a good choice of printing interval since this is how often -some of the statistics are sampled in the system. -Others vary every second and running the output for a while will make it -apparent which are recomputed every second. +seconds. .Pp The command: .Dl vmstat -p da -p cd -w 1 will tell vmstat to select the first two direct access or CDROM devices and display statistics on those devices, as well as other systems statistics every second. .Sh SEE ALSO .Xr fstat 1 , .Xr netstat 1 , .Xr nfsstat 1 , .Xr ps 1 , .Xr systat 1 , .Xr libmemstat 3 , .Xr libxo 3 , .Xr xo_parse_args 3 , .Xr gstat 8 , .Xr iostat 8 , .Xr pstat 8 , .Xr sysctl 8 , .Xr malloc 9 , .Xr uma 9 .Pp The sections starting with ``Interpreting system activity'' in .%T "Installing and Operating 4.3BSD" . .Sh BUGS The .Fl c and .Fl w options are only available with the default output. Index: stable/11 =================================================================== --- stable/11 (revision 330046) +++ stable/11 (revision 330047) Property changes on: stable/11 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r328134