sar

sar 是分析系统性能的重要工具之一,通过sar指令可以全面地获取系统的CPU运行队列、磁盘I/O、分页(交换分区)、内存、CPU 中断网络等性能数据。

sar [options] [-o filename] [interval count]
options:
-A:显示系统所有资源设备,CPU、内存、磁盘 的运行状态。
-u:显示系统所有CPU 采样的负载。
-P:显示当前系统中指定CPU的使用情况
-d:显示系统所有硬盘设备在采样时间内的使用状况。
-r:显示系统内存在采样时间内的使用状况
-b:显示缓冲区在采样时间内的使用情况
-v:显示进程、文件、I 节点和锁表状态
-n:显示网络运行状态,如DEV ..
-q:显示运行队列的大小,它与系统当时的平均负载
-R:显示进程在采样时间内的活动情况
-y:显示终端设备在采样时间内的活动情况
-w:显示系统交换活动在采样时间内的状态
-o filename 表示采样间隔时间, 是必须有的参数。
count: 表示采样次数,可选项,默认值是 1.
EXAMPLE:
1. sar -u 3 5 //查看CPU的整体负载,每3秒统计一次,统计 5

[root@station5~]#sar-u35Linux2.6.18-53.el5(station5.example.com)01/08/201209:52:46PMCPU%user%nice%system%iowait%steal%idle09:52:49PMall0.350.001.570.000.0098.0809:52:52PMall0.350.001.410.880.0097.3509:52:55PMall0.170.001.220.000.0098.6009:52:58PMall0.530.003.500.000.0095.9709:53:01PMall0.170.001.220.520.0098.08Average:all0.320.001.790.280.0097.62

%user列显示了用户进程小行的CPU时间百分比
%nice列显示了运行正常进程所消耗的CPU 时间百分比
%system列显示了系统进程消耗的CPU时间百分比
%iowait列显示了IO等待所占用的CPU时间百分比
%steal列显示了在内存相对紧张的环境下pagein 强制对不同的页面进行的steal操作。
%idle列显示了CPU处在空闲的时间百分比这个输出是对系统整体CPU使用状况的统计,每项的输出都非常直观,并且最后一行Average是个汇总行,是上面统计信息的一个平均值.


2. sar -P 1 3 5 //系统的CPU技术是从0开始的,如果要查看第二颗CPU 的运行负载,使用此组合。
3. sar -d 2 3 // 查看系统磁盘的读写性能 重点

Linux2.6.18-53.el5(station5.example.com)01/08/201210:07:47PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util10:07:49PMdev8-00.000.000.000.000.000.000.000.0010:07:49PMdev22-00.000.000.000.000.000.000.000.0010:07:49PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util10:07:51PMdev8-00.000.000.000.000.000.000.000.0010:07:51PMdev22-00.000.000.000.000.000.000.000.0010:07:51PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util10:07:53PMdev8-01.040.0049.7448.000.002.502.500.2610:07:53PMdev22-00.000.000.000.000.000.000.000.00Average:DEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%utilAverage:dev8-00.350.0016.6748.000.002.502.500.09Average:dev22-00.000.000.000.000.000.000.000.00

DEV表示磁盘设备名称
tps表示每秒到物理磁盘的传送术,也就是每秒的I/O流量。一个传送就是一个I/O 请求,多个逻辑请求可以被合并为一个物理I/O请求。
rd/sec/s表示每秒从设备读取的扇区数(1扇区)
wr_sec/s表示每秒写入设备的扇区数目
avgrq-sz表示平均每次设备I/O 操作的数据大小(以扇区为单位)如:超市排队中每人所买东西的多少
avgqu-sz表示平均I/O队列长度 如:超市排队中没人单位时间平均排队的人数
await表示平均每次设备I/O操作的等待时间(以毫秒为单位)如:类似于超市排队中每人的等待时间
svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)如:类似超市排队中收银员的收款速度
%util表示一秒种有百分之际的时间用于I/O操作。如:类似超市收银台前有人排队的时间比例。

4. sar -r 2 3 //查看系统内存使用情况,

[root@station5~]#sar-r23Linux2.6.18-53.el5(station5.example.com)01/08/201210:01:41PMkbmemfreekbmemused%memusedkbbufferskbcachedkbswpfreekbswpused%swpusedkbswpcad10:01:43PM788450759298.4776788278440102011600.00010:01:45PM788450759298.4776788278440102011600.00010:01:47PM788450759298.4776796278432102011600.000Average:788450759298.4776791278437102011600.000

Kbmemfree 空闲的物理内存
Kbmemused 表示已使用的物理内存空间大小
%memused 表示已使用内存占总内存大小的百分比,
kbbuffers 和 kbcached 分别表示buffer cache 和Page cache的大小,kbswpfree kbswpused %swpused kbswpcad
%kbcommit 和 %commit 分别表示应用程序当前使用的内存和使用百分比.

5.sar -n DEV 2 3 //网络运行状态

10:34:25PMIFACErxpck/stxpck/srxbyt/stxbyt/srxcmp/stxcmp/srxmcst/s10:34:27PMlo0.000.000.000.000.000.000.0010:34:27PMeth00.000.000.000.000.000.000.0010:34:27PMsit00.000.000.000.000.000.000.0010:34:27PMIFACErxpck/stxpck/srxbyt/stxbyt/srxcmp/stxcmp/srxmcst/s10:34:29PMlo0.000.000.000.000.000.000.0010:34:29PMeth00.000.000.000.000.000.000.0010:34:29PMsit00.000.000.000.000.000.000.00.......

IFACE表示网络接口设备。
rxpck/s表示每秒钟接收的数据包大小。
txpck/s表示每秒钟发送的数据包大小
rxbyt/s表示每秒钟接收数据包的字节数
txbyt/s表示每秒发送数据包的字节数
rxcmp/s表示每秒接收的压缩数据包
txcmp/s 表示每秒发送的压缩数据包
rxmcst/s表示每秒钟接收的多播数据包。


iostat
主要用于统计磁盘IO状态,但是也能查看CPU的使用信息,他的局限性是只是显示熊所有CPU的平均信息.

Example:
1. iostat -d 2 3 //查看系统磁盘的使用状况.

[root@station5~]#iostat-d23Linux2.6.18-53.el5(station5.example.com)01/08/2012Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda6.03126.7164.65946835483086hdc0.000.020.001360Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda0.000.000.0000hdc0.000.000.0000Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda0.000.000.0000hdc0.000.000.0000

Blk_read/s表示每秒读取的数据块数
Blk_wrtn/s表示每秒写入的数据块数
Blk_read表示读取的所有块数.
Blk_wrtn表示写入的所有块数。

2. iostat -x /dev/sda 2 3 //组合还提供了对每个磁盘的看度统计,如果不指定磁盘,默认就是对所有磁盘进行统计。

Linux2.6.18-53.el5(station5.example.com)01/08/2012avg-cpu:%user%nice%system%iowait%steal%idle0.540.344.151.880.0093.09Device:rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%utilsda1.636.544.541.31122.3662.7631.690.2033.888.344.87avg-cpu:%user%nice%system%iowait%steal%idle1.030.002.060.000.0096.91Device:rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%utilsda0.000.000.000.000.000.000.000.000.000.000.00avg-cpu:%user%nice%system%iowait%steal%idle0.530.004.230.000.0095.24Device:rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%utilsda0.000.000.000.000.000.000.000.000.000.000.00

rrqm/s 表示每秒进行merged的读操作数目
wrqm/s 表示每秒进行merged的写操作数目
r/s表示每秒完成读I/O设备的次数
w/s表示每秒完成写I/O设备的次数
rsec/s表示每秒读取的扇区数
wsec/s表示每秒写入的扇区数

vmstat

vmstat该命令显示关于系统各种资源之间先关性能的简要信息

[root@station5~]#vmstat23procs-----------memory-------------swap-------io------system-------cpu------rbswpdfreebuffcachesisobiboincsussyidwast00065287786427860400281454513714942000065047787227860000046101235413960000065047787227860800001005217129800[root@station5~]#

(1)procs
r 列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU的个数,就说明CPU不租,需要总价CPU
b 列表示在等待资源的进程数,比如正在等待I/O或者内存交换等
(2)memory
swpd 列表示切换到内存交换区的内存数量(以KB为单位)。如果swpd的值不为0,或者比较大,而且si,so的值长期为0, 不影响系统性能
free 列表示当前空闲的物理内存数量(KB为单位)
buff 列表示buffers cache 的内存数量, 一般对块设备的读写才需要缓冲
cache 列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached。 如果cache值较大,就说明cached的文件数较多,如果此时IO中bi比较小,表明文件系统效率比较好。

(3)swap
si列表示由磁盘调入内存,也就是内存进入内存交换区的数量
so列表示内存调入硬盘,也就是内存交换区进入内存的数量
通常si so 都为0, 若此两列长期不为O,则表示系统内存不租,需要增加系统内存。
(4)io 显示磁盘读写情况
bi列表示从块设备读入数据的总量, 每秒/kb
bo列表示写入到快设备的数据总量,
一般bi+bo 参考值为1000, 如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,需要提高磁盘的读写性能
(5)system
in 列表示在某一时间间隔中观测到的每秒设备中断数
cs 列表示每秒产生的上下文切换次数
(6)cpu
us 列显示用户进程消耗的cpu时间百分比,参考值 50%, 超过则需要优化
sy列显示了内核进程消耗的CPU时间百分比,sy值较高时,说明内核消耗的CPU资源很多
us+sy的参考值为80%,大于则需要调整
id列显示了CPU 处在空间的时间比
wa列显示IO等待所暂用的CPU时间百分比。wa值越高,说明IO等待越严重.
综上,需要注意的是procs 项 r 列的值和cpu项中us、sy 和id列的值