sar(ADM) 19 June 1992 sar(ADM) Name sar, sa1, sa2, sadc - system activity report package Syntax sar [ -ubdycwaqvmnprDSAC ] [ -o file ] t [ n ] sar [ -ubdycwaqvmnprDSAC ] [ -s time ] [ -e time ] [ -i sec ] [ -f file] /usr/lib/sa/sadc [ t n ] [ ofile ] /usr/lib/sa/sa1 [ t n ] /usr/lib/sa/sa2 [ -ubdycwaqvmnprDSAC ] [-s time ] [-e time ] [-i sec ] Description sar, in the first instance, samples cumulative activity counters in the operating system at n intervals of t seconds, where t should be 5 or greater. If the -o option is specified, it saves the samples in file in binary format. The default value of n is 1. In the second instance, with no sampling interval specified, sar extracts data from a previously recorded file, either the one specified by the -f option or, by default, the standard system activity daily data file /usr/adm/sa/sadd for the current day dd. The start and end times of the report can be bounded via the -s and -e time arguments in the form hh[:mm[:ss]]. The -i option selects records at sec second intervals. Otherwise, all intervals found in the data file are reported. In either case, subsets of data to be printed are specified by option: -u Report CPU utilization (the default): %usr, %sys, %wio, %idle portion of time running in user mode, run- ning in system mode, idle with some process waiting for block I/O, and otherwise idle. When used with -D, %sys is split into percent of time servicing requests from remote machines (%sys remote) and all other system time (%sys local). -b Report buffer activity: bread/s, bwrit/s - transfers per second of data between system buffers and disk or other block devices; lread/s, lwrit/s - accesses of system buffers; %rcache, %wcache - cache hit ratios, that is, (1-bread/lread) as a percentage; pread/s, pwrit/s - transfers via raw (physical) device mechanism. When used with -D, buffer caching is reported for locally-mounted remote resources. -d Report activity for each block device, e. g., disk or tape drive. When data is displayed, the device specification dsk- is generally used to represent a disk drive. The device specification used to represent a tape drive is machine dependent. The activity data reported is: %busy, avque - portion of time device was busy servicing a transfer request, average number of requests outstanding during that time; r+w/s, blks/s - number of data transfers from or to device, number of bytes transferred in 512-byte units; avwait, avserv - average time in ms. that transfer requests wait idly on queue, and average time to be serviced (which for disks includes seek, rotational latency, and data transfer times). -n Report name cache statistics. The activity reported is: c_hits, cmisses - number of name cache hits and misses; hit% - the hit ratio as a percentage. -y Report TTY device activity: rawch/s, canch/s, outch/s - input character rate, input character rate processed by canon, output character rate; rcvin/s, xmtin/s, mdmin/s - receive, transmit and modem interrupt rates. -c Report system calls: scall/s - system calls of all types; sread/s, swrit/s, fork/s, exec/s - specific system calls; rchar/s, wchar/s - characters transferred by read and write system calls. When used with -D, the system calls are split into incoming, outgoing, and strictly local calls. -w Report system swapping and switching activity: swpin/s, swpot/s, bswin/s, bswot/s - number of transfers and number of 512-byte units transferred for swapins and swapouts (including initial loading of some programs); pswch/s - process switches. -a Report use of file access system routines: iget/s, namei/s, dirblk/s. -q Report average queue length while occupied, and % of time occupied: runq-sz, %runocc - run queue of processes in memory and runnable; swpq-sz, %swpocc - swap queue of processes swapped out but ready to run. -v Report status of process, inode, file tables: proc-sz, inod-sz, file-sz, lock-sz - entries/size for each table, evaluated once at sampling point; ov - overflows that occur between sampling points for each table. -m Report message and semaphore activities: msg/s, sema/s - primitives per second. -p Report paging activities: vflt/s - address translation page faults (valid page not in memory); pflt/s - page faults from protection errors (illegal access to page) or "copy-on-writes"; pgfil/s - vflt/s satisfied by page-in from file system; rclm/s - valid pages reclaimed for free list. -r Report unused memory pages and disk blocks: freemem - average pages available to user processes; freeswap - disk blocks available for process swapping. -D Report Remote File Sharing activity: When used in combination with -u, -b, or -c, it causes sar to pro- duce the remote file sharing version of the corresponding report. -Du is assumed when only -D is specified. -S Report server and request queue status: Average number of Remote File Sharing servers on the system (serv/lo-hi), % of time receive descriptors are on the request queue (request %busy), average number of receive descriptors waiting for service when queue is occupied (request avg lgth), % of time there are idle servers (server %avail), average number of idle servers when idle ones exist (server avg avail). -A Report all data. Equivalent to -udqbwcayvmprSDC. -C Report Remote File Sharing buffer caching overhead: snd-inv/s - number of invalidation messages per second sent by your machine as a server. snd-msg/s - total outgoing RFS messages sent per second. rcv-inv/s - number of invalidation messages received from the remote server. rcv-msg/s - total number of incoming RFS messages received per second. dis-bread/s - number of buffer reads that would be eligible for caching if caching were not turned off. (Indicates the penalty of running uncached.) blk-inv/s - number of buffers removed from the client cache. Examples To see today's CPU activity so far: sar To watch CPU activity evolve for 10 minutes and save data: sar -o temp 60 10 To later review disk and tape activity from that period: sar -d -f temp Data gathering The operating system contains several counters that are incremented as various system actions occur. These include counters for CPU utiliza- tion, buffer usage, disk and tape I/O activity, TTY device activity, switching and system-call activity, file-access, queue activity, inter- process communications, paging, and Remote File Sharing. sadc and shell procedures, sa1 and sa2, are used to sample, save, and process this data. sadc, the data collector, samples system data n times, with an interval of t seconds between samples, and writes in binary format to ofile or to standard output. The sampling interval t should be greater than 5 seconds; otherwise, the activity of sadc itself may affect the sample. If t and n are omitted, a special record is written. This facility is used at system boot time, when booting to a multi-user state, to mark the time at which the counters restart from zero. For example, the /etc/init.d/perf file writes the restart mark to the daily data by the command entry: su sys -c "/usr/lib/sa/sadc /usr/adm/sa/sa`date +%d`" The shell script sa1, a variant of sadc, is used to collect and store data in binary file /usr/adm/sa/sadd where dd is the current day. The arguments t and n cause records to be written n times at an interval of t seconds, or once if omitted. The entries in /usr/spool/cron/crontabs/root (see cron(C)): 0 * * * 6,0 /usr/lib/sa/sa1 3600 0 8-17 * * 1-5 /usr/lib/sa/sa1 3600 0 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 will produce records every 20 minutes during working hours and hourly otherwise. The shell script sa2, a variant of sar, writes a daily report in file /usr/adm/sa/sardd. The /usr/spool/cron/crontabs/root entry: 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A will report important activities hourly during the working day. The structure of the binary daily data file is: struct sa { struct sysinfo si; /* see /usr/include/sys/sysinfo.h */ struct minfo mi; /* defined in sys/sysinfo.h */ struct dinfo di; /* RFS info defined in sys/sysinfo.h */ struct rcinfo rc; /* Client cache info defined in sys/sysinfo.h */ int minserve, maxserve; /* RFS server low and high water marks */ int szinode; /* current size of inode table */ int szfile; /* current size of file table */ int szproc; /* current size of proc table */ int szlckf; /* current size of file record header table */ int szlckr; /* current size of file record lock table */ int mszinode; /* size of inode table */ int mszfile; /* size of file table */ int mszproc; /* size of proc table */ int mszlckf; /* maximum size of file record header table */ int mszlckr; /* maximum size of file record lock table */ long inodeovf; /* cumulative overflows of inode table */ long fileovf; /* cumulative overflows of file table */ long procovf; /* cumulative overflows of proc table */ time_t ts; /* time stamp, seconds */ int apstate; long devio[NDEVS][4]; /* device unit information */ int cachehits;/* number of name cache hits */ int cachemisses;/* number of name cache misses */ #define IO_OPS 0 /* cumulative I/O requests */ #define IO_BCNT 1 /* cumulative blocks transferred */ #define IO_ACT 2 /* cumulative drive busy time in ticks */ #define IO_RESP 3 /* cumulative I/O resp time in ticks */ }; Files /usr/adm/sa/sadd daily data file /usr/adm/sa/sardd daily report file /usr/lib/sa/sa.adrfl address file Notes Output files created with this version of sar cannot be interpreted by earlier versions. However, this version interprets older output files correctly. See also cron(C), sag(ADM), timex(ADM) Standards conformance sa1, sa2, sadc and sar are conformant with: AT&T SVID Issue 2.