INTRODUCTION. Networked UNIX workstations operating in a ..... 2.lt IlIIr/locel/.~/
.... tp4 dec.17 up 53+02.32. :a u •• Z'a, load 0.00. 0.00. 0.00 root. 111 0.0 0.0 28.
Host Systems and Environments 275
WHAT'S HAPPENING ON YOUR UNIX SYSTEM? Peter Gaccione Harvard University INTRODUCTION Networked UNIX workstations operating in a client-server environment is becoming the system of choice in many educational and manufacturing workplaces. Typically one or more server machines house software and user files for the whole group, and client workstations access these files as requested by individual users working on them. A system administrator needs to know that this interaction is occurring as smoothly, quickly, and as efficiently as possible given the particular hardware realities. All computer operating systems provide utilities for acquiring, storing, and presenting data on system usage and performance. Frequently these measurements are complied and tabulated so that only cumulative amounts are available for inspection and analysiS. Many times administrators want to see the original data, inspect it for individual time points, match it with other system data, and watch the fluctuations of certain -parameters over time. The SAS System's multitude of analytical and graphical capabilities makes it the perfect tool for manipulating, describing, and presenting these data. This paper describes the accumulation and display of system activity for a typical system. Items in bold are system commands, items in italics are UNIX file names, items with one underline are directory names, and items with a double underline are key SAS words or variable names from a SAS program. The data are gathered from two Digital Equipment Corporation (DEC) DECSystem 5000/2xx workstations, which serve the system and applications software, user files, and electronic mail, and 14 client workstations (DECStation 5000/1xx models and Sun Spare 1'S and 1+'s).
compress the data. From within these programs others are called to issue the individual commands to gather the data from the different workstations in the network, and to run the SAS programs to create the data sets and to produce the graphical output. All of this is inserted into letc/crontab, which automatically: 1. 2.
3. 4.
5.
Starts programs at the beginning of the d\'. Kills relevant processes at the end of the dy Moves files to a convenient part of a disk. Attempts to filter out any extraneous lines from the files before they are processed, - renames them with an appropriate date, and compresses them. Runs the SAS programs to create data sets and graphics output
System measurements are taken via the pstat, ruptime, and vmstat commands. Descriptions of the three commands which retrieve the system statistics are as follows:
1. ps -aux displays information about processes. The -aux switches allow for information on all users (a), all processes (x), and display of user-oriented output which includes the fields USER, %CPU, and %MEM (u). An example of ps -aux output is shown in Figure 2. The important SAS variables from this data are machine. J2iS. owner. and command. 2. ruptlme shows the host status of local machines. It prints the current time, the length of time the system has been up, the number of users, and the average number of jobs in the run queue in the last 1,5, and 15 minute periods. In the SAS programs that follow the variable names for these values are numusers, load1, load2, and~. An example of ruptlme output_ is shown in Figure 3.
PART 1- UNIX DATA MANAGEMENT The operations of accumulating and managing the data can be automated using some basic UNIX commands and utilities. Shell scripts are set up for starting and terminating the major processes of creating files to store, move, and
3. vmstat -S 5 reports statistics on processes, virtual memory, disk, trap and cpu activity. The -S switch replaces memory paging data with memory swapping data. Plots of cpusy by runtime by machine are produced.
NESUG '93 Proceedings
276 Host Systems and Environments
When these programs are begun in the morning the ruptime and ps -aux sequence runs every 3 minutes (sleep 180), and the vmstat -S 5 sequence runs every 10 seconds (sleep 10). Thus snapshots giving user and load statistics are taken every three minutes, along with all processing activity, and memory and disk input/output operations can be followed in ten second sequences. Figure 1 shows six of the system command files used in this application which run automatically from starting the remote shells to moving the files to running the SAS programs. (Processing and plotting for ps and vmstat data are included in this presentation but are not yet automated). At 8:30 AM a short script begins the two programs and psruptime1.cmdand nvmstatall1.cmd, which call the programs psruptime.cmdand nvmstatafl.cmd. These latter two implement the remote shells on the client workstations. The first takes the ruptime and pstat command output and writes it to .the file psruptime.log, and the second takes vmstat output and writes it to the file nvmstatafl.log. Both.log files are in the directory luser3/gaccione/ssclvmstat. At 6 PM the file gaccione_stat.killer in lusrllocallbin is run, killing all the processes started by the programs. At 7 PM another program moves the files, edits them with the sed command, renames them with the current date as the filename suffix, and compresses them. At 9 PM (as datein.cmd in Figure 1 shows) the Sun workstation vmstat files are compressed, the SAS program shell which runs through the ruptimelpstat data file is updated with the correct date for the infile and data set names, and the SAS program in Figure 4 is run. Using the -log switch on the sas command allows the log file to have a unique name so that if the programs are not checked for a few days the logs will remain to indicate any problems with the data set creation. Finally the program in Figure 5 is run to generate the plots.
The processing to read in the ascii data is set up within the macro psrupt, which has the parameter The program reads the ascii file psruptime.&date, which is comprised of blocks of 17 chunks of data. The first part is the output from ruptime, and the next 16 pieces are the ps -aux output from the 16 workstations. The variables of interest for this application are numusers (number of users on a particular machine) and J2!!ll (average number of jobs in the run queue in the last one minute). Separate input statements exist for the DEC and Sun machines because the ascii output from the commands is slightly different. For possible future reference all fields are read in, and certain care is taken to get all of the last field, the names of the processes themselves. It is of varying length and requires the use of the length option on the !!:l!!!. command. Hand calculations were done to determine approximately how long it took for one sequence of data accumulation, after which the - variable runtime, which is the number of minutes since 8:30 AM, was created. A SAS data set named psjuf12.ssd02 results. The variables retained for the descriptive analysis are rmachine. numusers, and load1 from the machine, output of the ruptime command, owner,'.PiS!. (process id number), and command from the ps -aux output. Many of the daily data sets have more than 150,000 observations so it is important to shorten the lengths of variables, drop unnecessary ones, and compress files when processing is done. A similar program which processes vmstat data (from the DEC machines only) is not shown. From this program the variabls ~ (percentage of cpu used by the system) and runtime from the vmstat data are kept, with runtime in this case being incremented by 1.5 minutes for every sequence of accesses to the machines. The program tor creating the graphs of ~ by runtime is shown in Figure 7.
5!!!!.
ancr
PART II- SAS GRAPHICS PROCESSING PROGRAMS The SAS programs which will be discussed are those which process data from all three system commands and graph some of the ruptlme and vmstat data. Figure 4 shows the code for reading in the ps -aux and ruptlme data, and Figure 5 shows the code for plotting those graphs. The program in Figure 6 creates the graphics template catalog and one of its entries, and Figure 7 shows the code to create the vmstat plots.
NFSUG '93 Proceedings
,Extensive use of template and graphics catalogs set up by macros allows for continuous storage and access to graphical data. PROC GREPLAY govems their creation and input/output. Figure 6 shows the program which creates the template into which the individual daily graphs fit. The template catalog system.scto2 is created in the directory luser31gaccione/ssclvmstat, and the template defined (by the tdet option) is called user. It sets up a 'page" of graphiCS output which wiii'Stiow
Host Systems and Environments 277
16 graphs, each corresponding to the 16 machines in the network. This program is run independently, at the beginning of all data collection. The programs in Figures 5 and 7 create the graphics files. There are three macros in the programs, two called from within a third called sortaraf. This macro takes the parameters vamame (numusers or load 1 , or ~ the variable of interest), ~ (user or load, which defines the template to use), day, and ge. As the first program shows the data set to be processed is sorted, the desired ruptime data (where rmachine is not equal to missing) is chosen, and plots &varname by runtime are made. This occurs twice, first for the DEC machines and then for the Suns. Two separate runs are done here in case one wishes only to view data from one type of workstation. This setup also shows how the gout option in PROC GPLOT sends graphics output to a catalog. For the program in Figure 5 there are 10 DEC machines, thus by default the first 10 entries in graphics catalog user.sct02 (which is different from template entry lI!!!: in template catalog system.sct02) are .9J2!2l, ~ ... , gplot9. When the second sequence runs for the Sun machines the entries To make the output become gplot10-gplot15. compatible with the desired output device and to create the proper file to print macro plotparm is run. Finally macro greplay is run, which renames the entries in the graphics catalog with the appropriate machine prefix and current date, and sends the output to the file to be printed. By now the graphs have been set up in the desired template by the treplay command within PROC GREPLAY. They can be viewed on the screen if desired or automatically be printed by inserting an Ipr command into the last script in /etc/crontab. Figure 8 shows a page of 16 graphs depicting loads on the workstations during Monday, July 12. We note the most activity in terms of the highest loads on the two servers, truffaut and sdac. A quick glance at this type of output can give a system manager the needed information about overloaded, underutilized, or misbehaving computers in the network. Figure 9 shows the output from the program in Figure 7, the graphs of system cpu usage for 9 of the DEC machines. The server sdac is obviously getting more of a workout than the others, which is not unexpected since it is the mail server. Note that the same template catalog entry (load) was called upon as was used by the first graphing program to make the plots of the machine loads.
SUMMARY . The log files of the data set creation programs should be referred to soon after the sequence for the day is completed. If the graphs are printed out automatically it would be easy to see if the data files are corrupted in any way. This would happen if one of the computers went down during data retrieval, or something happened on the network which prevented the acquisiton of system data from one or more of them. This situation would require manuai editing of the data file to put it back into a consistent form. As mentioned the data set creation programs count on the data being set up a certain way (17 segments of data) and if one of the machines does not send data the program will not read the ascii file correctly. The log file will put out the NOTE that SAS went past the end of the line to read in data. . This series of UNIX and SAS programs should provide a system administrator with the data to make informed decisions about machine workloads, user activity, and future hardware and software needs. Once the SAS data sets are created the powerful graphical and statistical tools of the SAS system can be used to perform in-depth analysis, with the results to be used in a comprehensive managing plan to keep the system running smoothly, quickly; and efficiently.
NFSUG '93 Proceedings
278 Host Systems and Environments
luser3fgaccione/ssclvmstaVpsruptime.cmd >/user3/gaccione/ssclvmstaVpsruptime.log & #!Jbinlsh while true do ruplime ps-aux
rsh bacchus ps -aux
PS ~ \..\. I'll Y"\ E..
C. M I)
rsh verdi ps ·aux sleep 180 clone luser3fgaccionelssclvmstaVnvmstatall.cmd >luser3fgaccionelssclvmstatlnvmstatall.log &
N
vM
~1'l /user31gaccionelssclvrnstatlmakepsruptime.sas lusrllocallbinlsas /user3lgacclone/see/VmstaVrnakepsruptime -log luser31gaccionelssclvmstatlrnakepsruptime_'$data'.1og lusrllocallbinlsas luser3lgacclonelssclvmstatluserload2b
NESUG '93 Proceedings
Ol
r-N
j
e .~ a
'1:1
;
I
i
~
USSR
root coot coot
root bin root root trait_
root root root
root root root root root E"oot
root root root
root root root root root root coot root root root root root root root trait.
tralt. CMntJ
trait.
trait. trait. trait. trait.
sprite root root trait. trait. trait.
root root trait_ root root root tr.lte
root root
PID ,CPU 'MEN
6383 6382 1 2 58
n
55 5412 is
" 18 "'0
68
130 70 117 101 10' 105 107 108 0 t1
111 112 113
114 129
141 158 10' 161 145 U20 5U6 Slit 5683 5"5 5613 5"5
un 5U2 1"0 110 6035
""
17038 5622 6384 5675 5617 5624
5623
5'" 5617
tr.lte tC'.lte .
5". ,.89 5174
root root root USSR
6118
root
root root
'5Ul 31'
PID
15.4 15.4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
"
bacchlls liP 53+02:29, bunll.l liP 7+0B.43. callisto lip 69+00.27, lip chaos 8+09:47. circe liP 8+09.46. 3.43. decaOl liP up 53+02.30. decs02 up 35+02.'2. decsD3 lip 53+02.31. deca04 up 32+00.29. decaOS lip 61+04.16. dec.06 UP 53+02:30, dec.07 UP 53+02:32. decaOB Up 53+02:31. decs09 lip 53+02:32. dec.10 9+04.14, lip deedl Up 1+05:06, dac.12 lip 61+04:16. decd3 up 7+05.14. deed4 dacdS UP 7+09:00. UP 53+02 :33. deeal6 up 53+02.32. dec.17 decll8 down 2+08;13 UP 19+171;J8. decll9 lip 10+05.51. dae.21 dec.22 UP 36+04.40. UP 53+02,33. dae.23 UP 53+02.33. dac.:'" UP 22+01:14. dec.lI5 Up 151+04,18. dac.26 dac.2? UP 6+07.45. UP 61+04,15. dante devinei up 53+02:01. lip 17+01.53. diann. liP 53+02,02. .roa f.llini UP 43+06: 20. ga1ileo UP 109+0?,28. up 8+09.47. krona. 1MCIu1. UP 8+09 .... lip 53+02:31. phoboa pliny UP 53+01,59. puccini liP 53+07:37. lip adac ',01. truUaut UP 36+06.14. lip 8+09,42. verdi
"n
,.
.. ...
...
.
'el'U , _
0.0 to 0.0 0.0 U
SZ RSS 1'1' STAT START TIllE COIIIWID 16.45 0,00 clh -c po -lUX 312 7 S 16,45 0.00 In.rlbel 320 7 S o ? III lIay 2t 0.08 Ilbln/lnlt o ? D Noy 24 0,22 PIli"*a ? III lIay 2t 0,01 ypblllll o ? III Koy U 0,00 IUlr/local/etc/ln.p4 a 7 III Noy 24 O.OS portup o co III 11.11 0.00 -tcob Itclhl Koy 24 1.01 Iblo4l o ? I Noy 24 100] Iblo4, o 7 I o 7 I Noy 24 1.05 Iblo4, o? I Koy 24 1.0. Iblo4.l o 7 III Koy 24 0.18 qalogd o 7 III Koy 24 0.22 luu/Ub/l_U -1Id-q o ? III Koy 24 Ilun4l1OC.l/I1PSl/obbln/l Koy 24 II. 3t In. noIIo4 "7 8 a 7 III Koy 24 0.00 q>c.l_ o 7 III Koy a"8].31 .cr.....lonk o 7 III Koy 24 0.02 q > c . _ -a o 7 I Koy 24 37.21 Inf.", o ? I Noy a4 37.16 Inf.", o ? I Illy a4 31,45 Int14' o , I) Illy at 5 , 0 7 _ 152 7 8 c Koy U 2.lt IlIIr/locel/.~/....tp4 o? I My 24 ]7,21 Int14' o 7 I Koy 2' ]7,2' (nt14' o 7 I . My 2' 37,1] (at14, o? I My 24 37.36 (nt14' o ? III Illy 24 0,05 ob -0 whUe no" U ..... 8 ? S My 24172," up4o.te to ? 8 My Zt 0.35 lnIt" o? I Illy 2' ]7,21 Int14' o ? III Illy a. o.oa lu.r/llb~lp4 o ? III lIay 2' 0.20 cron 2. p] 8 15,50 0.00 rl091a verdi a p1 III ot,03 0.00 rl091n .40c a p5 III 14.1, o.oa -tclb (tclb' 260 co 8 0,38 t_ 0'.02 o p2 III 0,,03 0,0' -~.b Itc.b' o co III ".02 0.00 Ibln/ob 'ur/l_l/bln/. 0,,02 156 co S 0.0' xclock -_109 - o - r y a. p] S 15,50 0.01 rl09Sa verdi o pO III 08,31 0.01 ·tc.b Itclb) o ? III Koy 21 0.00 q>c .zquota" o ? III Noy 34 0.00 QIC •• tat4 13,,, 0.10 _ . 6ff p2 8 584 co 8 2.'1 IIIIr/iocel/Xl1/bla/Xlun O"Da o ? III .,.... 22 0.00 .electlon.1¥C o ? III 08,]0 0,00 In.r0b4 15.45 0.00 pa -awe '0' ? II o co III ".Da 0,00 ob lur/llb/1l11/xlnlt/... o co IV ot:Da 0.07 xt:. . . -~ry ,,,..,••0. 172 ? 8 08,]0 0,07 ..atat -. 5 o ? III 08.]0 0,00 CIh '0 ..atat -. 5 o pl III OhO] 0.01 rl091a I4Ic Qt,02 200 co II 0.03 _load • ......try ltDKIO-2 o co III 0"02 0,11 xt:. . . -.1 2000 ..,. .40c o co III 0'.02 0,02 _ - ......try -2-a -bot o co III at.oa 0.00 xln1t "'"arl/tr.lt.I ..... 32' co • 15.50 0.01 XC_ -.1 2000 ..,. wr4i o ? III 08:31 0.10 In.rlovlod o ? III 14'19 0.10 In. tel...t"
52 1.4 1.2 36 0.0 52 0.0 0 ]6 0.0 0.0 to 68 0.0 0.0 200 0.0 16 16 0.0 0.0 16 16 0.0 0.0 60 0.0 100 0.0 60 O.t 48 0.0 t2 0.0 16 0.0 0.0 28 28 0.0 0.0 28 0.0 0 0.6 n 0.0 28 0.0 28 0.0 28 0.0 28 0.0 28 0.0 12 .0.1 0.0 28 0.0 52 0.0 12 0.1 0.0 0.0 216 1.0 132 0.0 308 0.0 28 0.6 '2 0.1 0.0 220 0.0 0.0 52 2.t lfO 2.1 584 0.0 32 ]6 0.0 1.5 172 0.0 24 0.0 1136 0.6 t. 0.0 52 0.0 0.7 12. 0.0 500 0.0 288 0.0 40 1.2 500 0.0 36 0.0
"
SZ
RlS 1'1' SftT
16 , I 0.0 32 0.0 32 16 ? I 4.5 285' 2376 , S
lFI~(AR€~
'1'1. c:o.NID
O,lt l.tclbSod , 0.14 l.te/blo4 , 0.20 luor/etc/noaed Iwr/4la/noaed
I:
o lI.er., 6 u ••ra.
1 IIser. 1 l18er. o lI.era. o l18erl. 2 ua.a, 2 user., o usera. :I us.rs. 3 u.era. 2 u ••ra. 3 u.era, o u.era. 2 u ••r •• o u.era. 2 u.er •• o III.r••
o u••r.,
, u ••r •• o u.arl.
:a
u ••Z'a,
load load load load load load load load load load load load load load load load load load load load load load
o III.rl. o lIa.r••
0.11, 1.21. 1.21. 0.38. 1.31. 0.00, 0.05. 0.04. 0.00. 0.00. 0.02. 0.00. 0.00. 0.00. 0.00. 0.00. 0.00. 0.00, 0.01. 0.00. 0.00. 0.00.
0.01. 1.03. 1.23. 0.24. 1.28. 0.00. 0.00. 0.00. 0.00, 0.00, 0.00. 0.00. 0.00. 0.00. 0.00, 0.00. 0.00. 0.00. 0.00. 0.00. 0.00. 0.00.
0.00 0.46 1.26 0.01 1.28 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
load 0.00. 0.00. 0.00 load 0.00. 0.00. 0.00 0 ....... load 0.00. 0.00. 0.00 load 0.09. 0.00. 0.00 1 u••r, 5 u••r •• load 0.10. 0.18, 0.00 2 l18er•• load 0.00. 0.00. 0.00 o 1I••r •• load 0.00. 0.00. 0.00 3 lIa.rl. load 0.00. 0.00. 0.00 4 u ••r •• load 0.00. 0.00. 0.00 2 uI.r•• load 0.00. 0.00. 0.00 2 u••r •• 10.d 0.07. 0.01. 0.00 , l18.rl. load 0.00. 0.00. 0.00 3 118.1:•• load 0.02. 0.00. 0.00 2 u••rl. load 1.28. 1.28. 1.28 load 0.17. 0.02, 0.00 1 uaer, 2 ulera. load 0.25. 0.75. 0.55 8 lIaer•• load 0.00. 0.00. 0.00 3 uler•• load 0.02. 0.00. 0.00 4 user•• load 0.14. 0.02. 0.00 23 IIMre. load 0.52. 0.73. 0.05 2 u..r •• load 6.36. 7.13. 7.Bl • u••r •• load 0.73. 0.90. 0.08
LF l'tARE 3)
t
1 ~
~
~
280 Host Systems and Environments libname a '/extra/scratch/gaccione/vmstat/newstat'; %macro psrupt(date); x "uncompress lextra/scratch/gaccione/vmstat/newstat/psruptime.&date"; data a.ps&date; infile."/extra/scratch/gaccione/vmstat/newstat/psruptime.&date" length=lg; length runtime ha1fhour rss sz numusers 3.; input first $ second $ 9; if 1eft(trim(second»="up" or left(trim(second»="down" then do; if first="bacchus" then do; if -0-=1 then runtime=O; else runtime+4.6; end; if left(trim(second»="dowo" then input 81 rmachine $ upordowo $ uptime $; else do; input 91 rmachine $ upordown $ uptime $10. numusers (users load) ($) (oldlo~dl-old1oad3) ($); array new10ad load1-1oad3; array old1oad $ oldloadl-oldload3; do over oldload; newload=substr(oldload,l,4); end; end; end; else if left(trim(second»="PIO" then do; if count=17 then count:l; else count+l; delete; end; else do; if count=l then machine="truffaut"; else if count=2 then machine= "bunuel " ; else·if count=3 then machine="callisto"; else if count=' then machine="chaos"; else if count=5 then machine="circe"; else if count=6 then machine="dante"; else if count=7 then machine="davinci"; else if count=8 tben machine= " eros " ; else if count=9 tben machine="fellini'; else if count=10 then machine='galileo"; else if count=ll then machine='kronos'; else if count=12 then machine='medusa"; else if count=13 then machine='phoDoS'; else if count=14 tben machine='pliny'; else if count=lS then macbine="puccini"; else if count=16 then machine="sdac"; else if count=17 then machine="verdi"; ·Sun info; if macbine="callisto" or machine='chaos "or machine="circe or machine="galileo " or machine='kronos • or machine="medusa or machine="puccini " then do; input 8; lcomsun=lg-56; input 81 owner $ pid $ perepu permem 825 sz 5. rss tt $ 939 stat $3. 944 start $6. 950 time $6. 857 command $varying29. lcomsun; end;
*DEC info; else do; input 8; lcomdec=lg-50; input 81 owner $ pid $ perepu permem 925 sz 5. rss tt $ 839 stat $3. time $ 851 command $varying29. 1comdec; end; end;
halfhour=int(runtime/30); drop users lcomdec lcomsun first second uptime upordown oldloadl-oldload3 stat time start count load; label runtime='minutes after 8:30 AM' loadl =' load '; %let second=%substr(&date,2,4); %if %substr(&date,l,l)=J %then %do; %let first=j; .%end; x "compress lextra/scratch/gaccione/vmstat/newstat/psruptime.&date"; x 'compress lextra/scratch/gaccione/vmstat/newstat/ps&first&second .. ssdO2'; %mend psrupt; %psrupt (Jul12) ;
NESUG '93 Proceedings
Host Systems and Environments 281 libname a -/user3/gaccione/ssc/vmstat R ;
1ibname load "/user3/gaeeione/ssc/vmstat/load"; 1ibname user "/user3/gaecione/ssc/vmstat/user"; libname b "/extra/scrateh/gaccione/vmstat"; ************.*.** Greplaying The Graphs "",,ero grep1ay (type, date) ;
****************;
proc grep1ay igout=&type .• &firstlet&date te=a.system nofs; modify gp1ot/name="bun&date" gplotl/name="dan&date" gp1ot2/name="dav&date" gp1ot3/name="ero&date" gp1ot4/name="fel&date" gplotS/name='pho&date' gplot6/name='pli&date" gplot7/name='sda&date' gplotB/name='tru&date" gplot9/name="ver&date" gplotlO/name="cha&date' gplotll/name='cir&date" gplot12/name="gal&date" gp10t13/name="kro&date" gplot14/name="med&date" gplotlS/name="puc&date" template &type; treplay l:bun&date 2:dan&date 3:dav&date 4:ero&date S:fel&date 6:pho&date 7:p1i&date 8:sda&date 9:tru&date lO:ver&date ll:cha&date 12:eir&date 13:ga1&date 14:kro&date lS:med&date 16:pue&date; run;
tmend greplay; ***************.*.** Plotting Parameters "",,cro p1otparm(type,day,date,firstlet);
************'***.,
filename &date&firstlet "&type&day&date .. ps", goptions device=~ps800 '* ~ printer; eolors=(blaek) '* monochrome; neprompt '* no need to 'press return when ready"; gsfname=&date&firstlet ,. replace/append to 'psout' file; gsfmode=rep1ace '* write text lines to 'psout'; gaccess=sasgaedt ,. length of lines in 'psout'; gsflen=76 gpro1og=", BAS/GRAPH switch printer to postscript mode; none; ·gepi10g= ,. Times-Roman text; ftext=hwpsl00S ftitle=hwpslOOS '* Times-Bold title; '* Size of printed txt; htext=3 rotate
,.'*
%mend p10tparm;
******* •• ***... SORTS AND GRAPHS ************************; "",,cro sortgraf(v.arname,type,day,date); x "uneompress lextra/scratch/gaccione/vmstat/ps&date •. ssd02.Z"; 'let first1et='substr(&type,1,3); %p1otparm(&type,&day,&date,&firstlet); proc sort data=b.ps&date out=sorted; ~ rmachine ha1fhour; where rmachine="bunuel" or rmachine="dante" or rmachine="davinei; or r.machine=Reros· or rmachine:"fel1ini" or rmaebine=·pbobos" or rmachine="plinyR or rmaehine='sdac" or rmachine="truffaut" or rmachine="verdi'; proc gp10t data=sorted gout=&type •• &first1et&date; by rmachine; plot &varname*runtime; symbo11 i=join; title '&day, &date"; proc sort data=b.ps&date out=sorted; by rmachine halfhour; where rmaebine=-Chaos· or r.machine~·circe· or r.machine=ngalileo· or rmachine=nkronos· or rmachine=·medusa n or rmachine=·puccini-f proc gp10t data=sorted gout=&type •• &first1et&date; by rmachine; plot &varname*runtime; symbo11 i=join; title '&day, &date"; 'greplay(&type,&date); x "compress /extra/scrateh/gaccione/vmstat/ps&date .• ssd02'; %mend sortgraf;
'sortgraf(loadl,10ad,Mon,nov30);
NFSUG '93 Proceedings
282 Host Systems and Environments
qoptions deVice:qmsps800; libname a '/user3/gaccione/ssc/vmstat';
libname a "luser31gaccioneJssclvmstat°; libname b "'exlralscratchigaccionelvmstatlnewstatO;
proc greplay tc=a.system nofs; tdef user des='Daily Users' 11y='76 1/1lx=1 uly=99 "lx=l urx=24 ury=99 1rx=24 lry='76
***••• SORTS AND GRAPHS ..***.............u*-**.; %macro sortgraf(vamame,type,day,date);
2/11x=26 ulx=26 urx=49 1rx=49
11y='76 uly=99 ury=99 1ry='76
12/11x='76 lly:26 ulx=76 uly=49 urx=99 ury:49 lrx=99 1ry=26
J/llx=51 u1x=51 urx=74 lrx=7.
11y:'76 uly=99 ury=99 1ry='76
13 I llx=1 ulx:l »rX=2. .1=2.
11y:1 uly:24 U%)"'24 1rr-1
U/1lx=26
11p1 uly=2. _24 lry:l
11y='76 u1x='76 u1y:99 urx=99 ury=99 1rx=99 lry=76
4/1lx='76
ulx=26 ~9
lrx=t9
11y=S1 u1y:74 urr-74 lry=Sl
lS/11x=S1 11y=1 ulx-51 uly=24 mx=7. urr-24 1=74 lry:1
u1x=26
urx=.' 1=49
11y=S1 u1y=7. urr-74 1ry=51
7/11x=Sl ulx=S1 urx=7. lrx=74
11p51 uly=74 urr-74 1ry=51
16/1lx=76 11y=1 ulx=76 u1y=24 u=99 urr- 2.. 1=99 lry=1 I
81 11x=76
11y=51 uly=74 urr-7. 1ry=51
51 11x=1
u1x=1 urx=2. 1=24 6/11x=26
u1x=76 urx=9' 1rx=99 91 11x=1
ulx=1 urx:2 .. 1rx=24 101 11x=26
u1x=26 urx=49 1=U 111 11x=S1
ulx=51 urx=74 1rx=74
~late_,
1181: template I
11p26 u1y=t9 w:ys49
lry=26 11y=26 uly:«9 urr-U lry=26 11y=26 uly:«9 urr-U lry=26