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
[[email protected] ~]# sar -u 3 5 Linux 2.6.18-53.el5 (station5.example.com) 01/08/2012 09:52:46 PM CPU %user %nice %system %iowait %steal %idle 09:52:49 PM all 0.35 0.00 1.57 0.00 0.00 98.08 09:52:52 PM all 0.35 0.00 1.41 0.88 0.00 97.35 09:52:55 PM all 0.17 0.00 1.22 0.00 0.00 98.60 09:52:58 PM all 0.53 0.00 3.50 0.00 0.00 95.97 09:53:01 PM all 0.17 0.00 1.22 0.52 0.00 98.08 Average: all 0.32 0.00 1.79 0.28 0.00 97.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 // 查看系统磁盘的读写性能 重点
Linux 2.6.18-53.el5 (station5.example.com) 01/08/2012 10:07:47 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:07:49 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:07:49 PM dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:07:49 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:07:51 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:07:51 PM dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:07:51 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:07:53 PM dev8-0 1.04 0.00 49.74 48.00 0.00 2.50 2.50 0.26 10:07:53 PM dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: dev8-0 0.35 0.00 16.67 48.00 0.00 2.50 2.50 0.09 Average: dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.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 //查看系统内存使用情况,
[[email protected] ~]# sar -r 2 3 Linux 2.6.18-53.el5 (station5.example.com) 01/08/2012 10:01:41 PM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 10:01:43 PM 7884 507592 98.47 76788 278440 1020116 0 0.00 0 10:01:45 PM 7884 507592 98.47 76788 278440 1020116 0 0.00 0 10:01:47 PM 7884 507592 98.47 76796 278432 1020116 0 0.00 0 Average: 7884 507592 98.47 76791 278437 1020116 0 0.00 0
Kbmemfree 空闲的物理内存
Kbmemused 表示已使用的物理内存空间大小
%memused 表示已使用内存占总内存大小的百分比,
kbbuffers 和 kbcached 分别表示buffer cache 和Page cache的大小,kbswpfree kbswpused %swpused kbswpcad
%kbcommit 和 %commit 分别表示应用程序当前使用的内存和使用百分比.
5.sar -n DEV 2 3 //网络运行状态
10:34:25 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 10:34:27 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:34:27 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:34:27 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:34:27 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 10:34:29 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:34:29 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:34:29 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.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 //查看系统磁盘的使用状况.
[[email protected] ~]# iostat -d 2 3 Linux 2.6.18-53.el5 (station5.example.com) 01/08/2012 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 6.03 126.71 64.65 946835 483086 hdc 0.00 0.02 0.00 136 0 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 hdc 0.00 0.00 0.00 0 0 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 hdc 0.00 0.00 0.00 0 0
Blk_read/s表示每秒读取的数据块数
Blk_wrtn/s表示每秒写入的数据块数
Blk_read表示读取的所有块数.
Blk_wrtn表示写入的所有块数。
2. iostat -x /dev/sda 2 3 //组合还提供了对每个磁盘的看度统计,如果不指定磁盘,默认就是对所有磁盘进行统计。
Linux 2.6.18-53.el5 (station5.example.com) 01/08/2012 avg-cpu: %user %nice %system %iowait %steal %idle 0.54 0.34 4.15 1.88 0.00 93.09 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 1.63 6.54 4.54 1.31 122.36 62.76 31.69 0.20 33.88 8.34 4.87 avg-cpu: %user %nice %system %iowait %steal %idle 1.03 0.00 2.06 0.00 0.00 96.91 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 avg-cpu: %user %nice %system %iowait %steal %idle 0.53 0.00 4.23 0.00 0.00 95.24 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rrqm/s 表示每秒进行merged的读操作数目
wrqm/s 表示每秒进行merged的写操作数目
r/s表示每秒完成读I/O设备的次数
w/s表示每秒完成写I/O设备的次数
rsec/s表示每秒读取的扇区数
wsec/s表示每秒写入的扇区数
vmstat
vmstat该命令显示关于系统各种资源之间先关性能的简要信息
[[email protected] ~]# vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 6528 77864 278604 0 0 28 14 545 137 1 4 94 2 0 0 0 0 6504 77872 278600 0 0 0 46 1012 354 1 3 96 0 0 0 0 0 6504 77872 278608 0 0 0 0 1005 217 1 2 98 0 0 [[email protected] ~]#
(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列的值
sar-iostat-vmstat-参数详解