sar
Gathering system activity data from vmstat and iostat can be a time-consuming job. You need to automate the gathering of system activity data, and the tool to use is sar. sar refers to the system activity reporter and is used to gather performance data from all the major components of the system. sar comes standard on most UNIX systems, including Solaris. sar can be enabled by uncommenting the appropriate lines in the system crontab and is described later in this section.
sar is part of the system activity reporter package that is included in the Solaris 9 operating environment. This package consists of three commands that are involved in automatic system activity data collection: sadc, sa1, and sa2.
sadc, a utility that also is part of the system activity reporter, collects system activity data and saves it in a binary formatone file for each 24-hour period. This data includes information on CPU utilization, buffer usage, disk and tape I/O activity, TTY device activity, switching and system-call activity, file access, queue activity, interprocess communications, and paging. The information saved is very much like the information you see displayed with the vmstat and iostat commands.
When run, sadc creates binary files in the /usr/adm/sa directory. Each file is named sa<dd>, where <dd> is the current date. The syntax for the sadc command is as follows:
/usr/lib/sa/sadc [t n] <outputfile>
t is the interval (seconds) between samples, and n is the number of samples to take. The value of t should be greater than five seconds; otherwise, the activity of sadc itself might affect the sample. sadc then writes, in binary format, to the file named <outputfile> or to standard output if a filename is not specified. If t and n are omitted, a special file is written once.
The sadc command should be run first at system boot time to record the statistics from when the counters are reset to zero. To make sure sadc is run at boot time, the /etc/init.d/perf file must contain a command line that writes a record to the daily data file.
The command entry has the following format:
su sys -c "/usr/lib/sa/sadc /usr/adm/sa/sa´date +%d´"
This entry is already in the /etc/init.d/perf file, but it needs to be uncommented.
Typically, the system administrator sets up sadc to run at boot time when the system enters multiuser mode and then periodicallyusually once each hour. To generate periodic records, you need to run sadc regularly. The simplest way to do this is by putting a line into the /var/spool/cron/crontabs/ sys file, which calls the shell script, sa1. This script invokes sadc and writes to the daily data files, /var/adm/sa/sa<dd>. The sa1 script gets installed with the other sar packages and has the following syntax:
/usr/lib/sa/sa1 [t n]
As with sadc, the arguments t and n cause records to be written n times at an interval of t seconds. If these arguments are omitted, the records are written only one time.
The sar command is used to report what has been collected in the daily activity files created by sadc. sadc creates binary files, and the only way to read this data is using the sar utility.
In addition, the sar command can be used to gather system activity data from the command line to look at performance either over different time slices or over a constricted period of time.
The syntax for the sar command is as follows:
sar [-aAbcdgkmpqruvwy] [-o <outputfile>] [t n ]
The options to the sar command are described in Table 19.3.
Table 19.3 Options for the sar Command
Option |
Action |
a |
Checks file access operations |
b |
Checks buffer activity |
c |
Checks system calls |
d |
Checks activity for each block device |
g |
Checks page-out and memory freeing |
k |
Checks kernel memory allocation |
m |
Checks interprocess communication |
p |
Checks swap and dispatch activity |
q |
Checks queue activity |
r |
Checks unused memory |
u |
Checks CPU utilization |
nv |
Checks system table status |
w |
Checks swapping and switching volume |
y |
Checks terminal activity |
A |
Reports overall system performance (same as entering all options) |
NOTE
If no option is used, it is equivalent to calling the command with the -u option.
For example:
sar -A -o outfile 5 500
This will display all system activity data every 5 seconds and will gather 500 samples. The file named outfile is the output file where the data will get stored. The data is stored in binary format but can be read by using the -f option, as follows:
sar f outfile
The following information is displayed:
SunOS ultra5 5.9 sun4u 05/14/2002 15:44:26 %usr %sys %wio %idle 15:44:31 1 2 0 97 15:44:36 1 2 0 96 15:44:41 9 2 9 80 15:44:46 2 3 0 95 15:44:51 0 1 0 99 15:44:56 3 2 0 96 15:45:01 0 0 0 100 15:45:06 15 0 0 85 15:45:11 2 0 0 97 15:45:16 3 2 0 95 15:45:21 1 1 0 98 15:45:26 2 2 0 97 15:45:31 0 0 0 100 15:45:36 0 0 0 100 15:45:41 8 1 0 92 15:45:46 1 4 0 95 15:45:51 2 3 0 96 15:45:56 2 0 0 98 15:46:01 0 0 0 100 15:46:06 15 0 0 85 Average 3 1 0 95
Setting Up sar
To start collecting system activity data with sar, you need to edit the /etc/ init.d/perf file and create an entry in the crontab file. Here are the steps:
Become superuser.
Edit the /etc/init.d/perf file and follow instructions in that file to uncomment lines that enable system activity gathering.
The sadc command writes a special record that marks the time when the counters are reset to zero (boot time). The sadc output is put into the file sa<dd> (where dd is the current date), which acts as the daily system activity record.
3Edit the /var/spool/cron/crontabs/sys file (the system crontab file) and uncomment the following lines:
0 * * * 0-6 /usr/lib/sa/sa1 20,40 8-17 * * 1-5 /usr/lib/sa/sa1 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A
The first entry writes a record to /var/adm/sa/sa<dd> on the hour, every hour, seven days a week.
The second entry writes a record to /var/adm/sa/sa<dd> twice each hour during peak working hours: at 20 minutes and 40 minutes past the hour, from 8 a.m. to 5 p.m., Monday through Friday.
Thus, these two crontab entries cause a record to be written to /var/adm/sa/sa<dd> every 20 minutes from 8 a.m. to 5 p.m., Monday through Friday, and every hour on the hour otherwise. You can change these defaults to meet your needs.
The third entry runs the shell script named sa2 at 6:05 p.m., Monday through Friday. The sa2 script writes reports from the binary data.
The shell script sa2, a variant of sar, writes a daily report in the file /var/ adm/sa/sar<dd>. The report will summarize hourly activities for the day.