监测和管理系统性能是系统管理员一项非常重要的任务。监测结果可以判断当前用户的应用和系统服务是否有效执行;管理系统进程是系统性能调优的重要手段。本章将介绍系统性能的监控和进程的管理方法。
监控系统性能
Solaris提供了许多监控工具来监控设备和核心部件的运行情况。本节将介绍一些传统的监控工具。值得一提的是,Solaris 10推出的dtrace超越了传统的UNIX系统提供的性能工具,可以用dtrace的sysinfo provider来完成所有的性能分析工作。有关dtrace的详细介绍。
虚拟内存的统计显示
可以使用vmstat命令来报告虚拟内存的统计信息和系统事件信息,如CPU负载、内存分页、设备中断、系统调用等。此外,vmstat命令还可以显示SWA区交换、缓存和中断的统计信息。
vmstat命令的输出

1.显示虚拟内存的统计信息
使用vmstat n命令可以显示虚拟内存的统计信息,其中n为每次报告的时间间隔秒数。
例15-1 使用vmstat命令每5秒报告一次虚拟内存信息。
$ vmstat 5
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr dd f0 s1 -- in sy cs us sy id
0 0 0 863160 365680 0 3 1 0 0 0 0 0 0 0 0 406 378 209 1 0 99
0 0 0 765640 208568 0 36 0 0 0 0 0 0 0 0 0 479 4445 1378 3 3 94
2.显示系统事件的信息
例15-2 使用vmstat –m来显示系统启动以后发生的多个系统事件信息。
$ vmstat -s
0 swap ins
0 swap outs
0 pages swapped in
0 pages swapped out
522586 total address trans. faults taken-----地址解析错误数量
17006 page ins
25 page outs
23361 pages paged in
28 pages paged out
45594 total reclaims
45592 reclaims from free list
0 micro (hat) faults
522586 minor (as) faults
16189 major faults
98241 copy-on-write faults
137280 zero fill page faults
45052 pages examined by the clock daemon
0 revolutions of the clock hand
26 pages freed by the clock daemon
2857 forks
78 vforks
1647 execs
34673885 cpu context switches
65943468 device interrupts
711250 traps
63957605 system calls
3523925 total name lookups (cache hits 99%)
92590 user cpu
65952 system cpu
16085832 idle cpu
7450 wait cpu
3.显示交换数据统计信息
例15-3 显示交换数据统计信息。
$ vmstat -S
kthr memory page disk faults cpu
r b w swap free si so pi po fr de sr dd f0 s1 -- in sy cs us sy id
0 0 0 862608 364792 0 0 1 0 0 0 0 0 0 0 0 406 394 213 1 0 99
4.显示系统中每个设备的中断信息
例15-4 显示系统中每个设备的中断信息。
$ vmstat -i
interrupt total rate
------------------------------------------------------------------------------------------
clock 52163269 100
esp0 2600077 4
zsc0 25341 0
zsc1 48917 0
cgsixc0 459 0
lec0 400882 0
fdc0 14 0
bppc0 0 0
audiocs0 0 0
------------------------------------------------------------------------------------------
Total 55238959 105
显示磁盘的使用信息
使用iostat命令可以报告磁盘的输入/输出(I/O)的统计信息,并检测磁盘的吞吐量、利用率、队列、处理速率和服务时间。
1.显示磁盘的利用率信息
例15-5 每5秒钟采集一次磁盘使用信息。
$ iostat 5
tty sd0 sd6 nfs1 nfs49 cpu
tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id
0 0 1 0 49 0 0 0 0 0 0 0 0 15 0 0 0 100
0 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100
2.显示扩展磁盘的信息
例15-6 显示扩展磁盘信息。
$ iostat -xtc
extended device statistics tty cpu
device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id
fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 100
sd0 0.0 0.0 0.4 0.4 0.0 0.0 49.5 0 0
sd6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
nfs49 0.0 0.0 0.0 0.0 0.0 0.0 15.1 0 0
nfs53 0.0 0.0 0.4 0.0 0.0 0.0 24.5 0 0
可见,也采集了远程NFS的磁盘信息。
每一列数据的具体意思为:
device:显示设备名。
r/s:每秒读磁盘的次数。
w/s:每秒写磁盘操作的次数。
kr/s:显示每秒读数据总量(单位为KB)。
km/s:显示每秒写数据总量(单位为KB)。
wait:显示平均的等待事物数量。
actv:显示正在处理的平均事物数量。
svc_t:显示平均服务周期(单位为ms)。
%w:显示等待时间的百分数。
%b:显示磁盘工作时间的百分数。
15.1.3 显示CPU负载信息
下面的命令是每5秒产生两次处理器的统计数据报告。命令显示了处理器集合与每个CPU的成员关系。默认用户和系统操作的输出是按照CPU号,处理器集合排序。默认用户和系统操作的输出是按照CPU号或者处理器集合排序的。(本例中是按处理器集合排序的。)
例15-7 使用mpstat命令显示cpu负载。
mpstat输出说明
变 量--说 明
SET--SET是处理器集合
minf--一般错误的个数
mjf--主要错误的个数
xcal--处理器间的交叉调用
intr--中断
ithr--线程中断,不包括时钟中断
csw--上下文切换数
icsw--非主动的上下文切换数
migr--转移到其他CPU的线程数
smtx--在互斥锁mutexes上的自旋(第一次试图获得锁,未果)的次数
srw--在读/写锁上自旋(第一次试图获得锁,未果)的次数
syscl--系统调用
usr--用户时间百分比
sys--系统时间百分比
wt--等待时间百分比
idl--CPU空闲时间百分比
sze--请求的处理器集合中的处理器个数
有关mpstat输出的几点说明:
CPU占用率的统计由于舍入错误,可能存在百分比数字的总和不是100的情况。
CPU处理的总时间是用户和系统操作报告的usr和sys值的和。而wt报告的值是处理器空闲等待IO操作的时间。idl报告的值是CPU因除去等待磁盘IO操作外其他任何原因而空闲的时间。所以,CPU空闲的时间总数应该是wt和idl输出值之和。
wt的值高意味着磁盘系统的问题,不是CPU和其他部分的问题。过高的wt时间百分比必须通过提高磁盘设备性能来解决。
当在一个分区(zone)里执行,如果pools facility处于活动状态,mpstat将只提供属于zone绑定的pool的处理器集合的成员的那些处理器的信息。
监控系统活动信息
收集系统性能数据的一种最通用的方法是使用sar命令。sar命令功能强大,参数众多。sar命令的常用格式:
sar [options] [-A] [-o file] t [n]
在命令行中,n和t两个参数组合起来定义采样间隔和次数:t为采样间隔,是必须有的参数;n为采样次数,是可选的,默认值是1。-o file表示将命令结果以二进制格式存放在文件中,file在此处不是关键字,是文件名。options为命令行选项,sar命令的选项很多,下面只列出常用选项:
-A 所有报告的总和。
-u CPU利用率。
-v 进程、I节点、文件和锁表状态。
-d 硬盘使用报告。
-r 没有使用的内存和swap硬盘块。
-g 串口I/O的情况。
-b 缓冲区使用情况。
-a 文件读写情况。
-c 系统调用情况。
-R 进程的活动情况。
-y 终端设备活动情况。
-w 系统交换活动。
例15-8 使用sar命令,每60秒采样一次,连续采样5次,观察CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件text中。
# sar -u -o text 60 5
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
14:43:50 %usr %sys %wio %idle(-u)
14:44:50 0 1 4 94
14:45:50 0 2 4 93
14:46:50 0 2 2 96
14:47:50 0 2 5 93
14:48:50 0 2 2 96
Average 0 2 4 94
对显示内容进行解释:
%usr CPU处在用户模式下的时间百分比。
%sys CPU处在系统模式下的时间百分比。
%wio CPU等待输入输出完成时间的百分比。
%idle CPU空闲时间百分比。
在上面的显示内容中,我们应特别注意%wio和%idle值。%wio的值过高,表示硬盘存在I/O瓶颈;%idle值高,表示CPU较空闲。如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量;%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统需要更换处理能力更强的CPU。
如果要查看二进制文件text中的内容,则需键入如下sar命令:
# sar -u -f text
可见,sar命令既可以实时采样,又可以对以往的采样结果进行查询。
sar命令的用法很多,有时判断一个问题,需要结合运行有不同选项sar命令,比如,怀疑CPU存在瓶颈,可用sar -u和sar -q来看;怀疑I/O存在瓶颈,可用sar -b、sar -u和sar-d来看。对于sar命令其他参数的使用请读者自己去参考使用,这里不再多说。
[
本帖最后由 云杉上的蝴蝶 于 2008-4-12 01:49 编辑 ]