[ Previous | Next | Contents | Glossary | Home | Search ]
AIX Version 4.3 Commands Reference, Volume 5

svmon Command

Purpose

Captures and analyzes a snapshot of virtual memory.

Syntax

svmon-G  ] [ -P] [ pid1 ... pidN ] ] [ -P] { } [ Count ] ] [ -S  sid1 ... sidN ] [ -S  { [ ] [ | ] } [ Count ] ] [ -D  sid1 ... sidN ] [ -i  Interval NumIntervals ] ] [ -r  ]

Description

The svmon command displays information about the current state of memory. The displayed information does not constitute a true snapshot of memory, because the svmon command runs at user level with interrupts enabled.

Reports

The svmon command creates four types of reports: global, process, segment, and detailed segment. Each report type is described here. Unless otherwise noted, all statistics are in units of 4096-byte pages.

Global Report

The global report is printed when the -G flag is specified. The column headings in a global report are:

memory
Specifies statistics describing the use of real memory, including:
size
Number of real memory frames (size of real memory)
Note: This includes any free frames that have been made unusable by the memory sizing tool, the rmss command.
inuse
Number of frames containing pages
free
Number of frames free
Note: This includes any free frames that have been made unusable by the memory sizing tool, the rmss command.
pin
Number of frames containing pinned pages
in use
Specifies statistics on the subset of real memory in use, including:
work
Number of frames containing pages from working segments
pers
Number of frames containing pages from persistent segments
clnt
Number of frames containing pages from client segments
pin
Specifies statistics on the subset of real memory containing pinned pages, including:
work
Number of frames containing pinned pages from working segments
pers
Number of frames containing pinned pages from persistent segments
clnt
Number of frames containing pinned pages from client segments
pg space
Specifies statistics describing the use of paging space. This data is reported only if the -r flag is not used.
size
Size of paging space
inuse
Number of paging space pages in use
ref
Specifies the number of real memory frames that have been recently referenced (reference bits are set). This data is reported only if the -r flag is used.
inuse
Number of frames in use that have been recently referenced
pin
Number of pinned frames that have been recently referenced
Note: The rmss command works by stealing free frames and making them unusable by the VMM. If the rmss command has made any frames unusable, the number of frames made unusable will be displayed following the global report, as follows:
*
* Rmss has made 4036 free frames unusable.
*

If the svmon command is invoked to repeat the global report at regular intervals (see the -i flag description), the number of frames that the rmss command has made unusable will be displayed only when the rmss command has changed the number of unusable frames.

Process Report

The process report is the first report printed out when the -P flag is specified. The column headings in a process report are:

Pid
Indicates the process ID.
Command
Indicates the command the process is running.
Inuse
Indicates the total number of pages in real memory from segments that are used by the process.
Note: A segment can be used by multiple processes. Each page in real memory from such a segment is accounted for in the Inuse field for each process that uses the segment. The total of the Inuse fields over all active processes may exceed the total number of pages in real memory.
Pin
Indicates the total number of pages pinned from segments that are used by the process.
Note: A segment can be used by multiple processes. Each page pinned from such a segment is accounted for in the Pin field for each process that uses the segment. The total of the Pin fields over all active processes may exceed the total number of pages pinned.
Pgspace
Indicates the total number of pages used on paging space by segments that are used by the process. This number is reported only if the -r flag is not used.
Note: A segment can be used by multiple processes. Each page on paging space from such a segment is accounted for in the Pgspace field for each process that uses the segment. The total of the Pgspace fields over all active processes may exceed the total number of pages on paging space.
Ref/Inuse
Contains the total number of pages in real memory with reference bits set to 1 and from segments used by the process. This number indicates how many pinned pages are being actively used, as opposed to residing in memory. This number is reported only if the -r flag is used.
Note: A segment can be used by multiple processes. Since each page from such a segment is accounted for in the Ref/Use field for each process that uses the segment, a single segment may be counted multiple times. Therefore, the value of the Ref/Use field, including all active processes, may exceed the total number of pinned pages with reference bits set to 1.
Ref/Pin
Contains the number of pinned pages with reference bits set to 1 and from segments used by the process. This number indicates how many pinned pages are being actively used, as opposed to residing unused in memory. This number is reported only if the -r flag is used.
Note: A segment may be used by multiple processes. Since each page from such a segment is accounted for in the Ref/Pin field for each process that uses the segment, a single segment may be counted multiple times. Therefore, the value of the Ref/Pin field, including all active processes, may exceed the total number of pinned pages with reference bits set to 1.

Segment Report

The segment report is printed out when the -S flag is specified. This report is printed for each process when the -P flag is specified. Its column headings are described as follows:

Segid
Indicates the segment ID.
Type
Identifies the type of the segment: pers indicates a persistent segment, work indicates a working segment, clnt indicates a client segment, and mmap indicates a mapped segment.
Description
Specifies a textual description of the segment. The value of this column depends on the segment type. If the segment is a persistent segment and is not associated with a log, then the device name and i-node number of the associated file are displayed, separated by a colon. (The device name and i-node can be translated into a file name with the ncheck command.)

If the segment is a persistent segment and is associated with a log, then the string log is displayed. If the segment is a working segment, then the svmon command attempts to determine the role of the segment. For instance, special working segments such as the kernel and shared library are recognized by the svmon command. If the segment is the private data segment for a process, then private is printed out. If the segment is the code segment for a process, and the segment report is printed out in response to the -P flag, then the word code is prepended to the description.

Inuse
Indicates the number of pages in real memory from this segment.
Pin
Indicates the number of pages pinned from this segment.
Pgspace
Indicates the number of pages used on paging space by this segment. This field is relevant only for working segments. This field is present only if the -r flag is not specified.
Address Range
Specifies one range for a persistent or client segment and two ranges for a working segment. The range for a persistent or client segment takes the form 0..x, where x specifies the maximum virtual pages used. A working segment has two ranges because space is allocated by starting from both ends and working towards the middle. The low range starts at page 0 and grows upward, while the high range starts at page 65535 and grows downward.

So, the Address Range field for a working segment has the form 0..x : y..65535, where x is the maximum page number that has been used in the lower range, and y is the minimum page number that has been used in the higher range. If the working segment is the private segment for a process, then the low range contains global data for the process, while the high range contains the process stack and other system-related data.

If the working segment is not private (for instance, a kernel or a shared library), space is allocated differently, and the Address Range field is more difficult to interpret. This field is present only if the -r flag is not used.

Ref/Inuse
Contains the number of pages from the segment that are in real memory and have reference bits set to 1. This number indicates how many pages are being actively used, as opposed to residing unused in memory. This field is present only if the -r flag is used.
Ref/Pin
Contains the number of pinned frames associated with the segment that have reference bits set to 1. This number indicates how many pinned pages are being actively used, as opposed to residing unused in memory. This field is present only if the -r flag is used.

Detailed Segment Report

The detailed segment report is printed when the -D flag is specified. This report consists of several lines that give general information about the segment, followed by a table in which each row gives information about a page from the segment that resides in real memory. The general segment information, and subsequent table, are described as follows.

Segid
Indicates the segment ID.
Type
Identifies the type of the segment. The persistent field indicates a persistent segment, the working field indicates a working segment, and the client field indicates a client segment.
Description
Specifies a textual description of the segment. The value of this column depends on the segment type. If the segment is a persistent segment, and is not associated with a log, then the device name and i-node number of the associated file are displayed, separated by a colon. (The device name and i-node can be translated into a file name with the ncheck command.)

If the segment is a persistent segment and is associated with a log, then the string log is displayed. If the segment is a working segment, then the svmon command attempts to determine the role of the segment. For instance, special working segments such as the kernel and shared library are recognized by the svmon command, and described as such. If the segment is the private data segment for a process, then private is printed out.

Address Range
Specifies one range for a persistent or client segment, and two ranges for a working segment. The range for a persistent or client segment takes the form 0..x, where x specifies the maximum virtual pages used. A working segment has two ranges because space is allocated by starting from both ends and working towards the middle. The low range starts at page 0 and grows upward, while the high range starts at page 65535 and grows downward.

So, the Address Range field for a working segment has the form 0..x : y..65535, where x is the maximum page number that has been used in the lower range, and y is the minimum page number that has been used in the higher range. If the working segment is the private segment for a process, then the low range contains global data for the process, while the high range contains the process stack and other system-related data.

If the working segment is not private (for instance, a kernel or a shared library), space is allocated differently, and the Address Range field is more difficult to interpret.

Inuse
Indicates the number of pages in real memory from this segment. This value is also translated from 4096-byte pages into megabytes and printed enclosed in parentheses.
Pages in real memory:
Page
Specifies the index of the page within the segment.
Frame
Specifies the index of the real memory frame that the page resides in.
Pin
Specifies a flag indicating whether the page is pinned. The field contains pin if the page is pinned; otherwise, the field is empty.
Ref
Specifies a flag indicating whether the page's reference bit is on. The field contains ref if the page's reference bit is on; otherwise, the field is empty.
Mod
Specifies a flag indicating whether the page is modified. The field contains mod if the page is modified; otherwise, the field is empty.

Flags

Any combination of the following command line arguments can be specified, except that the -i flag can be specified only once. If no command line argument is given, then the -G flag is implicit.

-D sid1 ... sidN
Displays detailed memory-usage statistics for segments sid1 ... sidN. If sids are specified, then N detailed segment reports are displayed.
-G
Displays a global report.
-i Interval [ NumIntervals ]
Instructs the svmon command to print statistics out repetitively. Statistics are collected and printed every Interval seconds.
Note: Because it may take a few seconds to collect statistics for some options, the observed interval may be larger than the specified interval. NumIntervals is the number of repetitions; if not specified, the svmon command will run until stopped.
-P [ n|s|a ] [ pid1 ... pidN ]
Displays memory usage statistics for processes pid1 ... pidN. If no process IDs (PIDs) are specified, then memory usage statistics are displayed for all active processes. The -P flag should be immediately followed by one of the following arguments:
n
Indicates that only non-system segments are to be included in the statistics.
s
Indicates that only system (kernel) segments are to be included in the statistics.
a
Indicates that both non-system and system segments are to be included in the statistics.

If n, s, or a is not specified, then n is implicit.

If N PIDs are specified, then N + 1 reports are printed. The first report is a process report that gives a summary of memory usage for each process. Subsequent reports of this type are segment reports that give a breakdown of memory usage by segment for each specified process. For each process, the PID and command are repeated, before that process' segment report is printed out.

-P [ n|s|a ] { u|p|g|r } [ Count ]
Sorts processes by memory usage and displays the memory usage statistics for the top Count processes. If a Count value is not specified, then memory usage statistics are displayed for all active processes. The -P flag should be immediately followed by one of the following arguments:
n
Indicates that only non-system segments are to be included in the statistics.
s
Indicates that only system segments are to be included in the statistics.
a
Indicates that both non-system and system segments are to be included in the statistics.

If n, s, or a is not specified, then n is implicit.

Next, one of the following arguments must be specified:

u
Indicates that the processes are to be sorted in decreasing order by the total number of pages in real memory from segments used by a process.
p
Indicates that the processes are to be sorted in decreasing order by the total number of pages pinned from segments used by a process.
g
Indicates that the processes are to be sorted in decreasing order by the total number of pages used on paging space by segments used by a process.
r
Indicates that the processes are to be sorted in decreasing order by the total number of recently referenced pages in segments that are used by the process.
Note: The r option requires use of the -r flag. The g option cannot be used if the -r flag is specified.

Count + 1 reports are printed. The first report is a process report that gives a summary of memory usage for each process. Subsequent reports of this type are segment reports that give a breakdown of memory usage, by segment, for each process. For each process, the PID and command are repeated before that process' segment report is printed.

-r
Displays statistics about the number of real memory frames with reference bits on. The reference bit is used in the Virtual Memory Manager (VMM) page-stealing algorithm. When the -r flag is specified, page space and address range statistics are replaced by statistics about the number of frames in use that have been recently referenced, and the number of pinned frames that have been recently referenced.

For global reports, the page space size and inuse fields are replaced by referenced inuse and pin fields.

For segment reports, the PGspace and Address Range fields are replaced by Ref/Inuse and Ref/Pin fields. For process reports, the Pgspace field is replaced by two fields, Ref/Inuse and Ref/Pin. No change is made for detailed segment reports. When the -r flag is specified with the -i (interval) flag, the reference bits on all memory frames are reset after each iteration. Thus, these fields contain data on the number of frames referenced since the last iteration. This could have side effects on system performance.

-S sid1 ... sidN
Displays memory-usage statistics for segments sid1 ... sidN. One segment report is printed.
-S { [n|s|a ] [ u|p|g|r ] } [ Count ]
Sorts segments by memory usage and displays the memory usage statistics for the top Count segments. If Count is not specified, then a Count of 10 is implicit. The -S flag should be immediately followed by one these arguments:
n
Indicates that only non-system segments are to be included in the statistics.
s
Indicates that only system segments are to be included in the statistics.
a
Indicates that both non-system and system segments are to be included in the statistics.

If none of n, s, or a are specified, then n is implicit.

Next, one of the following arguments must be specified:

u
Indicates that the segments are to be sorted in decreasing order by the number of pages in real memory.
p
Indicates that the segments are to be sorted in decreasing order by the number of pages pinned.
g
Indicates that the segments are to be sorted in decreasing order by the number of pages used on paging space.
r
Indicates that the segments are to be sorted in decreasing order by the number of pages recently referenced.
Note: The r option requires use of the -r flag. The g option cannot be used if the -r flag is specified.

If u, p, g, or r is not specified, then u is implicit. One option from either the [n|s|a] or [u|p|g|r] group must be specified. One segment report is printed.

Note: When invoked with the -P, -S, or -D flag, the svmon command pages in the u-block for each process, if the u-block is not already resident in real memory. A process' u-block contains information that is used by the kernel to properly maintain the process. The u-block structure is approximately six pages in size and resides in the private segment for each process.

Security

Access Control: You must have root authority to run this command.

Examples

  1. To print out global statistics, enter:
    svmon -G
  2. To print out the memory usage statistics for all processes (that is, to limit statistics to non-system segments), enter:
    svmon -Pn
  3. To print out the memory usage statistics for processes 6746 and 10078 (that is, to include statistics on all segments), enter:
    svmon -Pa 6746 10078
  4. To sort system segments by the number of pages in real memory, and print out the top 10 segments of the resulting list, enter:
    svmon -Ssu 10
  5. To print detailed memory usage statistics on segment 340d, enter:
    svmon -D 340d
  6. To print out the global statistics, repeated 10 times at 30-second intervals, enter:
    svmon -G -i 30 10

Related Information

The ncheck command, rmss command.

Logical Volume Storage Overview, Paging Space Overview in AIX Version 4 System Management Guide: Operating System and Devices.


[ Previous | Next | Contents | Glossary | Home | Search ]