首先 在centos 5.5上安装 iostat ,sar工具

yum -y install sysstat

whereis sar

whereis iostat

即可看到相关的命令

 

如果在redhat下面用rpm包安装的话可以先去http://rpmfind.net/查找sysstat相对应的rpm包

另附上:linux磁盘IO查看的相关命令及说明

from:http://blog.chinaunix.net/u3/93062/showart_1934431.html

 

##############
#
# 操作
#
##############

# iostat -x 1 10
Linux 2.6.18-92.el5xen 02/03/2009

avg-cpu: %user %nice %system %iowait %steal %idle
1.10 0.00 4.82 39.54 0.07 54.46

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 3.50 0.40 2.50 5.60 48.00 18.48 0.00 0.97 0.97 0.28
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sde 0.00 0.10 0.30 0.20 2.40 2.40 9.60 0.00 1.60 1.60 0.08
sdf 17.40 0.50 102.00 0.20 12095.20 5.60 118.40 0.70 6.81 2.09 21.36
sdg 232.40 1.90 379.70 0.50 76451.20 19.20 201.13 4.94 13.78 2.45 93.16


##############
#
# 注释
#
##############

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)


##############
#
# 分析
#
##############

1.如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

2.如果 idle 小于 70% IO压力就较大了,一般读取速度有较多的wait。

3.同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

4.另外还可以参考
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

###############
#
# 例子解释
#
###############

别人一个不错的例子.(I/O 系统 vs. 超市排队)

举一个例子,我们在超市排队 checkout 时,怎么决定该去哪个交款台呢? 首当是看排的队人数,5个人总比20人要快吧? 除了数人头,我们也常常看看前面人购买的东西多少,如果前面有个采购了一星期食品的大妈,那么可以考虑换个队排了。还有就是收银员的速度了,如果碰上了连 钱都点不清楚的新手,那就有的等了。另外,时机也很重要,可能 5 分钟前还人满为患的收款台,现在已是人去楼空,这时候交款可是很爽啊,当然,前提是那过去的 5 分钟里所做的事情比排队要有意义 (不过我还没发现什么事情比排队还无聊的)。

I/O 系统也和超市排队有很多类似之处:

r/s+w/s 类似于交款人的总数
平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数
平均服务时间(svctm)类似于收银员的收款速度
平均等待时间(await)类似于平均每人的等待时间
平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少
I/O 操作率 (%util)类似于收款台前有人排队的时间比例。

我们可以根据这些数据分析出 I/O 请求的模式,以及 I/O 的速度和响应时间。


###############
#
# 案例分析
#
###############

下面是别人写的这个参数输出的分析

# iostat -x 1
avg-cpu: %user %nice %sys %idle
16.2 0.00 4.31 79.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/cciss/c0d0 0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p1 0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p2 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

上面的 iostat 输出表明秒有 28.57 次设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 1.02+27.55 = 28.57 (次/秒) 其中写操作占了主体 (w:r = 27:1)。

平均每次设备 I/O 操作只需要 5ms 就可以完成,但每个 I/O 请求却需要等上 78ms,为什么? 因为发出的 I/O 请求太多 (每秒钟约 29 个),假设这些请求是同时发出的,那么平均等待时间可以这样计算:

平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数

应用到上面的例子: 平均等待时间 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 给出的78ms 的平均等待时间很接近。这反过来表明 I/O 是同时发起的。

每秒发出的 I/O 请求很多 (约 29 个),平均队列却不长 (只有 2 个 左右),这表明这 29 个请求的到来并不均匀,大部分时间 I/O 是空闲的。

一秒中有 14.29% 的时间 I/O 队列中是有请求的,也就是说,85.71% 的时间里 I/O 系统无事可做,所有 29 个 I/O 请求都在142毫秒之内处理掉了。

delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s =78.21 * delta(io)/s = 78.21*28.57 = 2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/1000ms = 2.23,而 iostat 给出的平均队列长度 (avgqu-sz) 却为 22.35,为什么?! 因为 iostat 中有 bug,avgqu-sz 值应为 2.23,而不是 22.35。

 

 

 

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:没有使用的内存页面和硬盘块。   -g:串口I/O的情况。   -b:缓冲区使用情况。   -a:文件读写情况。   -c:系统调用情况。   -R:进程的活动情况。   -y:终端设备活动情况。   -w:系统交换活动。   下面将举例说明。   例一:使用命令行 sar -u t n   例如,每60秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制   形式存入当前目录下的文件zhou中,需键入如下命令:   # sar -u -o zhou 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。   如果要查看二进制文件zhou中的内容,则需键入如下sar命令:   # sar -u -f zhou   可见,sar命令即可以实时采样,又可以对以往的采样结果进行查询。   例二:使用命行sar -v t n   例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:   # sar -v 30 5   屏幕显示:   SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001   10:33:23 proc-sz ov inod-sz ov file-sz ov lock-sz (-v)   10:33:53 305/ 321 0 1337/2764 0 1561/1706 0 40/ 128   10:34:23 308/ 321 0 1340/2764 0 1587/1706 0 37/ 128   10:34:53 305/ 321 0 1332/2764 0 1565/1706 0 36/ 128   10:35:23 308/ 321 0 1338/2764 0 1592/1706 0 37/ 128   10:35:53 308/ 321 0 1335/2764 0 1591/1706 0 37/ 128   显示内容包括:   proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。   inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数   MAX-INODE控制。   file-sz: 目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控   制。   ov:溢出出现的次数。   Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE   控制。   显示格式为   实际使用表项/可以使用的表项数   显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如   果出现溢出时,要调整相应的核心参数,将对应的表项数加大。   例三:使用命行sar -d t n   例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:   # sar -d 30 5   屏幕显示:   SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001   11:06:43 device %busy avque r+w/s blks/s avwait avserv (-d)   11:07:13 wd-0 1.47 2.75 4.67 14.73 5.50 3.14   11:07:43 wd-0 0.43 18.77 3.07 8.66 25.11 1.41   11:08:13 wd-0 0.77 2.78 2.77 7.26 4.94 2.77   11:08:43 wd-0 1.10 11.18 4.10 11.26 27.32 2.68   11:09:13 wd-0 1.97 21.78 5.86 34.06 69.66 3.35   Average wd-0 1.15 12.11 4.09 15.19 31.12 2.80   显示内容包括:   device: sar命令正在监视的块设备的名字。   %busy: 设备忙时,传送请求所占时间的百分比。   avque: 队列站满时,未完成请求数量的平均值。   r+w/s: 每秒传送到设备或从设备传出的数据量。   blks/s: 每秒传送的块数,每块512字节。   avwait: 队列占满时传送请求等待队列空闲的平均时间。   avserv: 完成传送请求所需平均时间(毫秒)。   在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有   效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统   的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。   例四:使用命行sar -b t n   例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:   # sar -b 30 5   屏幕显示:   SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001   14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)   14:55:29 0 147 100 5 21 78 0 0   14:55:59 0 186 100 5 25 79 0 0   14:56:29 4 232 98 8 58 86 0 0   14:56:59 0 125 100 5 23 76 0 0   14:57:29 0 89 100 4 12 66 0 0   Average 1 156 99 5 28 80 0 0   显示内容包括:   bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。   lread/s: 平均每秒从系统buffer读出的逻辑块数。   %rcache: 在buffer cache中进行逻辑读的百分比。   bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。   lwrit/s: 平均每秒写到系统buffer逻辑块数。   %wcache: 在buffer cache中进行逻辑读的百分比。   pread/s: 平均每秒请求物理读的次数。   pwrit/s: 平均每秒请求物理写的次数。   在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效   率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer   数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。但buffer参数   值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到   提高。   例五:使用命行sar -g t n   例如,每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:   # sar -g 30 5   屏幕显示:   SCO_SV scosysv 3.2v5.0.5 i80386 11/22/2001   17:07:03 ovsiohw/s ovsiodma/s ovclist/s (-g)   17:07:33 0.00 0.00 0.00   17:08:03 0.00 0.00 0.00   17:08:33 0.00 0.00 0.00   17:09:03 0.00 0.00 0.00   17:09:33 0.00 0.00 0.00   Average 0.00 0.00 0.00   显示内容包括:   ovsiohw/s:每秒在串口I/O硬件出现的溢出。   ovsiodma/s:每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。   ovclist/s :每秒字符队列出现的溢出。   在显示的内容中,每一列的值都是零,表明在采样时间内,系统中没有发生串口I/O溢   出现象。   sar命令的用法很多,有时判断一个问题,需要几个sar命令结合起来使用,比如,怀疑   CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b、sar -u和   sar-d来看   Sar   -A 所有的报告总和   -a 文件读,写报告   -B 报告附加的buffer cache使用情况   -b buffer cache使用情况   -c 系统调用使用报告   -d 硬盘使用报告   -g 有关串口I/O情况   -h 关于buffer使用统计数字   -m IPC消息和信号灯活动   -n 命名cache   -p 调页活动   -q 运行队列和交换队列的平均长度   -R 报告进程的活动   -r 没有使用的内存页面和硬盘块   -u CPU利用率   -v 进程,i节点,文件和锁表状态   -w 系统交换活动   -y TTY设备活动   -a 报告文件读,写报告   sar –a 5 5   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002   11:45:40 iget/s namei/s dirbk/s (-a)   11:45:45 6 2 2   11:45:50 91 20 28   11:45:55 159 20 18   11:46:00 157 21 19   11:46:05 177 30 35   Average 118 18 20   iget/s 每秒由i节点项定位的文件数量   namei/s 每秒文件系统路径查询的数量   dirbk/s 每秒所读目录块的数量   *这些值越大,表明核心花在存取用户文件上的时间越多,它反映着一些程序和应用文件系统产生的 负荷。一般地,如果iget/s与namei/s的比值大于5,并且namei/s的值大于30,则说明文件系统是低效的。这时需要检查文件系统的自由空 间,看看是否自由空间过少。   -b 报告缓冲区(buffer cache)的使用情况   sar -b 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002   13:51:28 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)   13:51:30 382 1380 72 131 273 52 0 0   13:51:32 378 516 27 6 22 72 0 0   13:51:34 172 323 47 39 57 32 0 0   Average 310 739 58 58 117 50 0 0   bread/s 平均每秒从硬盘(或其它块设备)读入系统buffer的物理块数   lread/s 平均每秒从系统buffer读出的逻辑块数   %rcache 在buffer cache中进行逻辑读的百分比(即100% - bread/lreads)   bwrit/s 平均每秒从系统buffer向磁盘(或其它块设备)所写的物理块数   lwrit/s 平均每秒写到系统buffer的逻辑块数   %wcache 在buffer cache中进行逻辑写的百分比(即100% - bwrit/lwrit).   pread/sgu 平均每秒请求进行物理读的次数   pwrit/s 平均每秒请求进行物理写的次数   *所显示的内容反映了目前与系统buffer有关的读,写活。在所报告的数字中,最重要的是%rcache和%wcache(统称为cache命中率)两列,它们具体体现着系统buffer的效率。衡量cache效率的标准是它的命中率值的大小。   *如果%rcache的值小于90或者%wcache的值低于65,可能就需要增加系统 buffer的数量。如果在系统的应用中,系统的I/O活动十分频繁,并且在内存容量配置比较大时,可以增加buffer cache,使%rcache达到95左右,%wcache达到80左右。   *系统buffer cache中,buffer的数量由核心参数NBUF控制。它是一个要调的参数。系统中buffer数量的多少是影响系统I/O效率的瓶颈。要增加系统 buffer数量,则要求应该有较大的内存配置。否则一味增加buffer数量,势必减少用户进程在内存中的运行空间,这同样会导致系统效率下降。   -c 报告系统调用使用情况   sar -c 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002   17:02:42 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s (-c)   17:02:44 2262 169 141 0.00 0.00 131250 22159   17:02:46 1416 61 38 0.00 0.00 437279 6464   17:02:48 1825 43 25 0.00 0.00 109397 42331   Average 1834 91 68 0.00 0.00 225975 23651   scall/s 每秒使用系统调用的总数。一般地,当4~6个用户在系统上工作时,每秒大约30个左右。   sread/s 每秒进行读操作的系统调用数量。   swrit/s 每秒进行写操作的系统调用数量。   fork/s 每秒fork系统调用次数。当4~6个用户在系统上工作时,每秒大约0.5秒左右。   exec/s 每秒exec系统调用次数。   rchar/s 每秒由读操作的系统调用传送的字符(以字节为单位)。   wchar/s 每秒由写操作的系统调用传送的字符(以字节为单位)。   *如果scall/s持续地大于300,则表明正在系统中运行的可能是效率很低的应用程序。在比较   典型的情况下,进行读操作的系统调用加上进行写操作的系统调用之和,约是scall的一半左右。   -d 报告硬盘使用情况   sar -d 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002   17:27:49 device %busy avque r+w/s blks/s avwait avserv (-d)   17:27:51 ida-0 6.93 1.00 13.86 259.41 0.00 5.00   ida-1 0.99 1.00 17.33 290.10 0.00 0.57   17:27:53 ida-0 75.50 1.00 54.00 157.00 0.00 13.98   ida-1 9.50 1.00 12.00 75.00 0.00 7.92   17:27:55 ida-0 7.46 1.00 46.77 213.93 0.00 1.60   ida-1 17.41 1.00 57.71 494.53 0.00 3.02   Average ida-0 29.85 1.00 38.14 210.28 0.00 7.83   ida-1 9.29 1.00 29.02 286.90 0.00 3.20   device 这是sar命令正在监视的块设备的名字。   %busy 设备忙时,运行传送请求所占用的时间。这个值以百分比表示。   avque 在指定的时间周期内,没有完成的请求数量的平均值。仅在队列被占满时取这个值。   r+w/s 每秒传送到设备或者从设备传送出的数据量。   blks/s 每秒传送的块数。每块512个字节。   avwait 传送请求等待队列空闲的平均时间(以毫秒为单位)。仅在队列被占满时取这个值。   avserv 完成传送请求所需平均时间(以毫秒为单位)   *ida-0和ida-1是硬盘的设备名字。在显示的内容中,如果%busy的值比较小,说明用于处理   传送请求的有效时间太少,文件系统的效率不高。要使文件系统的效率得到优化,应使%busy的数值相对高一些,而avque的值应该低一些。   -g 报告有关串口I/O情况   sar -g 3 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002   11:10:09 ovsiohw/s ovsiodma/s ovclist/s (-g)   11:10:12 0.00 0.00 0.00   11:10:15 0.00 0.00 0.00   11:10:18 0.00 0.00 0.00   Average 0.00 0.00 0.00   ovsiohw/s 每秒在串囗I/O硬件出现的溢出。   ovsiodma/s 每秒在串囗I/O的直接输入,输出信道高速缓存出现的溢出。   ovclist/s 每秒字符队列出现的溢出。   -m 报告进程间的通信活动(IPC消息和信号灯活动)情况   sar -m 4 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002   13:24:28 msg/s sema/s (-m)   13:24:32 2.24 9.95   13:24:36 2.24 21.70   13:24:40 2.00 36.66   Average 2.16 22.76   msg/s 每秒消息操作的次数(包括发送消息的接收信息)。   sema/s 每秒信号灯操作次数。   *信号灯和消息作为进程间通信的工具,如果在系统中运行的应用过程中没有使用它们,那么由 sar命令报告的msg 和sema的值都将等于0.00。如果使用了这些工具,并且其中或者msg/s大于100,或者sema/s大于100,则表明这样的应用程序效率比较 低。原因是在这样的应用程序中,大量的时间花费在进程之间的沟通上,而对保证进程本身有效的运行时间必然产生不良的影响。   -n 报告命名缓冲区活动情况   sar -n 4 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002   13:37:31 c_hits cmisses (hit %) (-n)   13:37:35 1246 71 (94%)   13:37:39 1853 81 (95%)   13:37:43 969 56 (94%)   Average 1356 69 (95%)   c_hits cache命中的数量。   cmisses cache未命中的数量。   (hit %) 命中数量/(命中数理+未命中数量)。   *不难理解,(hit %)值越大越好,如果它低于90%,则应该调整相应的核心参数。   -p 报告分页活动   sar -p 5 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002   13:45:26 vflt/s pflt/s pgfil/s rclm/s (-p)   13:45:31 36.25 50.20 0.00 0.00   13:45:36 32.14 58.48 0.00 0.00   13:45:41 79.80 58.40 0.00 0.00   Average 49.37 55.69 0.00 0.00   vflt/s 每秒进行页面故障地址转换的数量(由于有效的页面当前不在内存中)。   pflt/s 每秒来自由于保护错误出现的页面故障数量(由于对页面的非法存,取引起的页面故障)。   pgfil/s 每秒通过”页—入”满足vflt/s的数量。   rclm/s 每秒由系统恢复的有效页面的数量。有效页面被增加到自由页面队列上。   *如果vflt/s的值高于100,可能预示着对于页面系统来说,应用程序的效率不高,也可能分页参数需要调整,或者内存配置不太合适。   -q 报告进程队列(运行队列和交换队列的平均长度)情况   sar -q 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002   14:25:50 runq-sz %runocc swpq-sz %swpocc (-q)   14:25:52 4.0 50   14:25:54 9.0 100   14:25:56 9.0 100   Average 7.3 100   runq-sz 准备运行的进程运行队列。   %runocc 运行队列被占用的时间(百分比)   swpq-sz 要被换出的进程交换队列。   %swpocc 交换队列被占用的时间(百分比)。   *如果%runocc大于90,并且runq-sz的值大于2,则表明CPU的负载较重。其直 接后果,可能使系统的响应速度降低。如果%swpocc大于20,表明交换活动频繁,将严重导致系统效率下降。解决的办法是加大内存或减少缓存区数量,从 而减少交换及页—入,页—出活动。   -r 报告内存及交换区使用情况(没有使用的内存页面和硬盘块)   sar -r 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002   10:14:19 freemem freeswp availrmem availsmem (-r)   10:14:22 279729 6673824 93160 1106876   10:14:24 279663 6673824 93160 1106876   10:14:26 279661 6673824 93160 1106873   Average 279684 6673824 93160 1106875   freemem 用户进程可以使用的内存页面数,4KB为一个页面。   freeswp 用于进程交换可以使用的硬盘盘块,512B为一个盘块。   -u CPU利用率   sar -u 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002   10:27:23 %usr %sys %wio %idle (-u)   10:27:25 2 3 8 88   10:27:27 3 3 5 89   10:27:29 0 0 0 100   Average 2 2 4 92   %usr cpu处在用户模式下时间(百分比)   %sys cpu处在系统模式下时间(百分比)   %wio cpu等待输入,输出完成(时间百分比)   %idle cpu空闲时间(百分比)   *在显示的内容中,%usr和 %sys这两个值一般情况下对系统无特别影响,%wio的值不能太高,如果%wio的值过高,则CPU花在等待输入,输出上的时间太多,这意味着硬盘存在 I/O瓶颈。如果%idle的值比较高,但系统响应并不快,那么这有可能是CPU花时间等待分配内存引起的。%idle的值可以较深入帮助人们了解系统的 性能,在这种情况上,%idle的值处于40~100之间,一旦它持续低于30,则表明进程竞争的主要资源不是内存而是CPU。   *在有大量用户运行的系统中,为了减少CPU的压力,应该使用智能多串卡,而不是非智能多串卡。智能多串卡可以承担CPU的某些负担。   *此外,如果系统中有大型的作业运行,应该把它们合理调度,错开高峰,当系统相对空闲时再运行。   -v 报告系统表的内容(进程,i节点,文件和锁表状态)   sar -v 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002   10:56:46 proc-sz ov inod-sz ov file-sz ov lock-sz (-v)   10:56:48 449/ 500 0 994/4147 0 1313/2048 0 5/ 128   10:56:50 450/ 500 0 994/4147 0 1314/2048 0 5/ 128   10:56:52 450/ 500 0 994/4147 0 1314/2048 0 5/ 128   proc-sz 目前在核心中正在使用或分配的进程表的表项数   inod-sz 目前在核心中正在使用或分配的i节点表的表项数   file-sz 目前在核心中正在使用或分配的文件表的表项数   ov 溢出出现的次数   lock-sz 目前在核心中正在使用或分配的记录加锁的表项数   *除ov外,均涉及到unix的核心参数,它们分别受核心参数NPROC,NIMODE,NFILE和FLOCKREC的控制。   *显示格式为:   实际使用表项/整个表可以使用的表项数   比如,proc-sz一列所显示的四个数字中,分母的100是系统中整个进程表的长度(可建立100个表项),分子上的24,26和25分别是采样的那一段时间所使用的进程表项。inod-sz,file-sz和lock-sz三列数字的意义也相同。   三列ov的值分别对应进程表,i节点表和文件表,表明目前这三个表都没有出现溢出现象,当出现溢出时,需要调整相应的核心参数,将对应表加大。   -w 系统交换活动   sar -w 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002   11:22:05 swpin/s bswin/s swpot/s bswots pswch/s (-w)   11:22:07 0.00 0.0 0.00 0.0 330   11:22:09 0.00 0.0 0.00 0.0 892   11:22:11 0.00 0.0 0.00 0.0 1053   Average 0.00 0.0 0.00 0.0 757   swpin/s 每秒从硬盘交换区传送进入内存的次数。   bswin/s 每秒为换入而传送的块数。   swpot/s 每秒从内存传送到硬盘交换区的次数。   bswots 每秒为换出而传送的块数。   pswch/s 每秒进程交换的数量。   *swpin/s,bswin/s,swpot/s和bswots描述的是与硬盘交换区相关的 交换活动。交换关系到系统的效率。交换区在硬盘上对硬盘的读,写操作比内存读,写慢得多,因此,为了提高系统效率就应该设法减少交换。通常的作法就是加大 内存,使交换区中进行的交换活动为零,或接近为零。如果swpot/s的值大于1,预示可能需要增加内存或减少缓冲区(减少缓冲区能够释放一部分自由内存 空间)。   -y 报告终端的I/O活动(TTY设备活动)情况   sar -y 2 3   SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002   11:38:03 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s (-y)   11:38:05 5 0 951 0 1 0   11:38:07 10 0 996 0 0 0   11:38:09 4 0 2264 0 0 0   Average 6 0 1404 0 1 0   rawch/s 每秒输入的字符数(原始队列)   canch/s 每秒由正则队列(canonical queue)处理的输入字符数。进行正则处理过程中,可以识别出一些有特殊意义的字符。比如,(中断字符),(退出符),(退格键)等。因此,canch/s中的计数不包括这些有特殊意义的字符。   outch/s 每秒输出的字符数。   rcvin/s 每秒接收的硬件中断次数。   xmtin/s 每秒发出的硬件中断次数。   mdmin/s 每秒modem中断次数。   *应该特别说明,sar命令可以对任意终端活动进行统计,所谓任意终端,是指任意tty设备。它们可以是串行终端,主控台,伪终端等等。   *在这几个量中,modem中断次数mdmin/s应该接近0。其它没有特殊要求,但如果每发送一个字符,中断的数量就动态地增加,这表明终端线出了差错,可能是接触不好。