一.命令概述
sar命令可以产生关于CPU/MEM/IRQ使用量/IO/network的相关报告,可以即时产生报告或者查看sadc(system activity data collector)生成的报告。这两个工具的数据来源都是/proc文件系统
二.自动收集每天的统计信息
为了长期监控系统的运行状态,可以通过运行sar/sadc自动收集。配置方式:
1).运行/etc/init.d/boot.sysstat start即可;2).运行完成后会在/etc/cron.d下面生成sysstat的cron脚本,内容:
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK 1 1
# 0 * * * * root /usr/lib64/sa/sa1 -S DISK 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
运行的配置如下:
1).所有有效数据都会收集到;2).收集的所有数据存放在/var/log/sa/saDD,DD表示当前日期,重复的文件会进行备份;3).汇总报告存放于/var/log/sa/sarDD;4) .自定义:需要配置自定义的需求配置sa1/sa2脚本和sysstat.cron
三.报告生成/查看
sar [Option] [delay [count]] 生成/查看报告:
-f <file_name> 查看指定的报告文件;-m 查看电源管理统计信息;-r 内存使用统计信息-d [-p] 磁盘使用情况统计信息,-p表示显示设备名(默认是磁盘名和主从设备号)
内存统计信息(-r):
[root@node110 sa]# sar -r 1 2
Linux 2.6.32-220.el6.x86_64 (node110) 11/23/2014 _x86_64_ (1 CPU)
08:49:53 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
08:49:54 PM 106884 1948156 94.80 180636 1342156 905972 12.41
08:49:55 PM 106884 1948156 94.80 180636 1342156 905972 12.41
Average: 106884 1948156 94.80 180636 1342156 905972 12.41
Report memory utilization statistics. The following values are displayed:
kbmemfree:可用内存量(KB)
kbmemused:已经使用的内存量(KB),不包含kernel的使用量;
%memused:内存使用百分比;
kbbuffers:buffer占用的大小(KB)
kbcached:cache占用的的内存(KB);
kbcommit:在当前负载情况下预计 实际需要的内存(KB),确保不内存溢出;(重点就在最后这两列,超过当前实际内存需要考虑优化或扩容)
%commit:按照当前的负载来看 实际需要的内存(和当前的实际virtual内存对比,百分比),如果大于100%是因为the kernel usually overcommits memory.
swap统计信息(-B):
磁盘统计信息(-d [-p]):[root@node110 sa]# sar -B 1 3
Linux 2.6.32-220.el6.x86_64 (node110) 11/23/2014 _x86_64_ (1 CPU)
09:20:40 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
09:20:41 PM 0.00 35.64 37.62 0.00 74.26 0.00 0.00 0.00 0.00
09:20:42 PM 0.00 16.16 38.38 0.00 77.78 0.00 0.00 0.00 0.00
09:20:43 PM 0.00 0.00 37.37 0.00 83.84 0.00 0.00 0.00 0.00
Average: 0.00 17.39 37.79 0.00 78.60 0.00 0.00 0.00 0.00pgpgin/s:从磁盘换入内存的数据量(KB,内核2.2.x为块数);
pgpgout/s:从内存换出到磁盘的数据量(KB,内核2.2.x为块数);
fault/s:系统每秒产生的缺页(主+次),次缺页中断不会产生IO,其实不用过于关心此值
majflt/s:系统每秒出现的主缺页中断,会 产生IO,过多的主缺页中断说明内存不足
pgfree/s:free list上每秒的页数
pgscank/s:kswapd进程每秒扫描的页数
pgscand/s:每秒直接扫描的页数
pgsteal/s:因进程需要消耗内存而从cache中调用的页数;
%vmeff:通过pgsteal除以pgscan得到的值,表示重新分配的效率(即扫描了x页才得到steal的内存)。越接近100%越好, 当没有发生scan的时候为0
[root@node110 sa]# sar -d 1 2
Linux 2.6.32-220.el6.x86_64 (node110) 11/23/2014 _x86_64_ (1 CPU)
10:17:56 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:17:57 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...
10:17:57 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@node110 sa]# sar -d -p 1 2
Linux 2.6.32-220.el6.x86_64 (node110) 11/23/2014 _x86_64_ (1 CPU)
10:17:41 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10:17:42 PM scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...
10:17:42 PM datavg-strips 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: scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...
Average: datavg-strips 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
tps:每秒发生IO的次数
rd_sec/s:每秒读取的磁道(每个磁道512 byte)数
wr_sec/s:每秒写的磁道(每个磁道512 byte)数
avgrq-sz:请求的平均大小(磁道数)
avgqu-sz:请求的平均队列大小
await:IO请求被处理的平均时间(ms),包含等待时间和svctm
svctm:设备的实际服务时间(ms)
%util:写入磁盘占用的IO请求总共CPU时间,接近100%说明设备的负载满