DOCUMENT ID:  1230-02
SYNOPSIS:     Three Virtual Memory Performance Monitors
OS RELEASE:   2.x
PRODUCT:      Solaris 
KEYWORDS:     vm virtual memory performance monitors
DESCRIPTION:
Software Virtual Memory - Performance Monitors 
*       vmstat
        
*       sar
*       proctool
These three performance monitors are used to analyze Virtual Memory
performance characteristics.  Both sar and vmstat heavily rely on data
that is contained in the following four kernel structures:
*       vminfo
        
*       sysinfo
*       cpu_vminfo
*       cpu_sysinfo
These structures are in /usr/include/sys/sysinfo.h
SOLUTION:
Software VM - vmstat
vmstat supplies the following data related to software virtual memory:
*       re - number of page reclaims
                   
cpu_vminfo.pgrec - incremented whenever a valid page is reclaimed from
the freelist.  Also incremented when pvn_write_done tries to free a page
and notices that the page has been referenced by another thread. 
*       mf - number of "minor" faults (cpu_info.hat_fault + 
        cpu_vminfo.as_fault)
cpu_vminfo.hat_fault - incremented whenever a fault can be satisfied by
loading the software copy of a pte into the MMU. 
                
cpu_vminfo.as_fault - incremented in as_fault() for each fault that is
the result of an invalid translation. 
*       pi - kilobytes of data that has been paged. 
cpu_vminfo.pgpgin - incremented in pageio_setup() for each page that is
needed. 
*       swap - amount of unreserved swap space 
vminfo.swap_avail - this value is the result of subtracting the total
amount of reserved swap space from the maximum swap space on the system. 
*       free - amount of free physical memory
vminfo.freemem - updated in the clock() routine at a one-second
intervals. 
Software VM - sar
The -r and -p options for sar(1) provide data relevant to the software
VM subsystem. 
*       atch/s - updated only for valid pages reclaimed from the
        freelist.
cpu_vminfo.pgfrec - incremented each time a page fault results in the
page being found on the page freelist.  This value is incremented in
page_reclaim(). 
*       pgin/s - page-in requests. Several pages may make up one
        request.
cpu_vminfo.pgin - incremented in pageio_setup() for each request of one
or more pages. 
*       ppgin/s - number of pages paged in per second.
        cpu_vminfo.pgpgin - same as vmstat() pi field.
*      pflt/s - number of faults that occurred because of
       protection errors. (cpu_vminfo.prot_fault + 
       cpu_vminfo.cow_fault).  
cpu_vminfo.prot_fault - incremented in as_fault() each time a fault
occurs as a result of a protection error. 
cpu_vminfo.cow_fault - incremented in anon_private() each time a
reference to a object or shared anon page is converted to private page. 
*       vflt/s - address translation faults per second.
        (cpu_vminfo.hat_fault + cpu_vminfo.as_fault)
cpu_info.as_fault and cpu_vminfo.hat_fault - equivalent of mf field in
vmstat(). 
*       slock/s - incremented when a fault occurs due to a 
        lock request
cpu_vminfo.softlock - incremented in as_fault() each time a fault occurs
as a result of a lock request. 
*       freemem - prints current amount of free physical memory
        in 512-byte blocks.
vminfo.freemem - same as vmstat() free field.
*       freeswap - prints current amount of unallocated swap
        space.
vminfo.swap_free - set in the clock() routine once per second.  This
value includes unallocated, unreserved swap space as well as swap space
that has been reserved but not allocated. 
Software VM - proctool
proctool is a window-based tool that can be used to:
*       View current system performance statistics
*       Analyze individual process resource usage
        
*       Graphically record the paging activity on the
        system.
*       Monitor levels of various resources on the system
*       Modify/query a process's scheduling configuration.
proctool is not part of the Solaris 2.x release.  This tool is not
supported by Sun. 
DATE APPROVED: 11/25/94