sar 收集汇报系统性能的信息

===
http://roclinux.cn/?p=1647

言归正传,今天为大家介绍一个好朋友,名字叫sar,它的脑子里全是机器系统性能的信息,你只要和它搞好关系,以后想获得任何这方面的信息,可就不愁了!


1 sar是做什么的?


主要负责收集、汇报与存储系统运行信息的。


2 sar怎么控制信息输出的时间间隔和次数?


有两个参数非常非常常用,就是“时间间隔”和“输出次数”。


时间间隔表示两次信息输出之间的时间间隔,单位是秒。如果这个值被设置为0,则表示所输出的信息是从开机到现在为止的信息平均值。如果不是0,sar计算就都是从当前开始的信息的平均值。


输出次数表示输出系统信息的次数,默认是1次。如果这个值被设置为0,则会永远的输出下去。


比如:sar 60 5 表示每60秒输出一次,共输出5次。(如果你脑子够快的话,会发现这个命令将历时300秒,因为每一次信息输出前会先停顿60秒的。)


3 怎么把sar输出的这些有用信息存到文件中去呢?


sar专门提供了一个选项-o filename,你只要使用它,就可以喽!


比如 sar 5 6 -o sys_info


不过,不幸的是,当你用cat看sys_info时发现全都是乱码,呵呵,别着急,sar为你准备了-f filename选项,你只要用-f设定要读取的信息存储文件,就可以清晰地读出信息了。


比如sar -f sys_info。


如果你觉得这种格式有些不利于处理,试试加上-h选项,你将获得不一样的体验。:D


4 如果我使用-o时,竟然忘了输入文件名,sar会抱怨么?


如果你只写了-o,没写具体文件名,那么sar会自动把输出信息更记录在/var/log/saDD文件里,其中DD表示当天的日期数字。


比如sar 2 2 -o


那么输出信息会记录在/var/log/sa/sa17文件里,因为今天是2009年10月17日。


5 如果我的CPU是多核处理器,那么sar能知道某一个核的运行信息么?


完全没问题的。有一个选项-P,就是用来为多核处理器而设计的。


当在使用sar命令而没有设定-P选项时,sar会根据所有核给出一个宏观汇报,也就是平均的值。


如果使用了-P选项来指定某一个核,那么就会针对这个单独的核给出具体性能信息。


当使用-P ALL时,sar就会根据每一个核都给出其具体性能信息,然后再给出一个总的性能信息。


比如,我这里有一个至强处理器的CPU,是八核CPU,看看-P的使用方法吧:


$ sar -P ALL 1 1
Linux 2.6.9    10/16/2009


10:59:38 PM       CPU     %user     %nice   %system   %iowait     %idle
10:59:39 PM       all      2.12      0.00      2.87      0.00     95.01
10:59:39 PM         0      0.00      0.00      1.98      0.00     98.02
10:59:39 PM         1      9.00      0.00      7.00      0.00     84.00
10:59:39 PM         2      0.00      0.00      1.98      0.00     98.02
10:59:39 PM         3      7.00      0.00      1.00      0.00     92.00
10:59:39 PM         4      0.00      0.00      3.03      0.00     96.97
10:59:39 PM         5      0.00      0.00      1.00      0.00     99.00
10:59:39 PM         6      0.00      0.00      3.96      0.00     96.04
10:59:39 PM         7      0.99      0.00      1.98      0.00     97.03


Average:          CPU     %user     %nice   %system   %iowait     %idle
Average:          all      2.12      0.00      2.87      0.00     95.01
Average:            0      0.00      0.00      1.98      0.00     98.02
Average:            1      9.00      0.00      7.00      0.00     84.00
Average:            2      0.00      0.00      1.98      0.00     98.02
Average:            3      7.00      0.00      1.00      0.00     92.00
Average:            4      0.00      0.00      3.03      0.00     96.97
Average:            5      0.00      0.00      1.00      0.00     99.00
Average:            6      0.00      0.00      3.96      0.00     96.04
Average:            7      0.99      0.00      1.98      0.00     97.03
看,sar会根据处理器的每一个核给出性能信息。当我们想查看第6个核的信息时,其输出如下:


$ sar -P 5 1 1
Linux 2.6.9      10/16/2009


11:01:16 PM       CPU     %user     %nice   %system   %iowait     %idle
11:01:17 PM         5      0.00      0.00      2.00      0.00     98.00


Average:          CPU     %user     %nice   %system   %iowait     %idle
Average:            5      0.00      0.00      2.00      0.00     98.00
6 好像sar只会输出CPU信息,如何查看内存信息、网络信息或者IO信息呢?


是这样的,sar命令在默认情况下是输出CPU信息的,只有当用户专门使用选项来设定要查看网络信息时,sar才会输出网络的当前信息,内存信息和IO信息也是同样道理。


常用的选项包括:


-b:报告I/O使用情况以及传输速率。(只适用于2.5及之前的内核,所以新内核有可能不支持这个选项)


-B:报告“页”使用情况


-c:报告进程创建情况


-d:报告每一个块设备的使用情况
(当你使用时,你会发现在DEV列有类似dev1-7格式的字符串,
其中1代表设备的主序号,n代表设备的从序号,
而且rd_sec/s列和wr_sec/s列的单位都是512bytes,也就是512B,也就是0.5KB)


-I:汇报中断情况


-n:汇报网络情况


-P:设定CPU


-q:汇报队列长度和负载信息


-r:汇报内存和交换区使用情况


-R:汇报内存情况


-u:汇报CPU使用情况


-v:汇报i节点、文件和其他内核表信息


-w:汇报系统上下文切换情况


-x:可以针对某个特定PID给出统计信息,
可以直接指定进程ID号;
也可以指定为SELF,这样就是检测sar进程本身;
如果设定为ALL,则表示汇报所有系统进程信息。


-X:汇报特定PID的子进程的信息


-y:设定TTY设备的信息。
7 这么一堆指代某项性能的选项,我懒得使用,我想一下输出最全最全的信息!


sar提供了一个无敌选项,即-A,它代表all,而且还是大写的,可见其威力无敌:D


这个-A就相当于-bBcdqrRuvwWy -I SUM -n FULL -P ALL这么一堆选项了,擦亮眼睛看看每一个选项,熟不熟~~


不过,话说回来,-A轻易不要用,否则一大坨信息输出到屏幕上,刷屏就要刷N年,你不晕菜才怪。


8 我想利用sar来做个后台监控程序,可以实时汇报机器性能情况。sar能放后台运行么?


当然可以,只要借助linux的后台符就可以了,别忘了把标准输出重定向哦,方法是这样的:


sar -o monitor.res interval count >/dev/null 2>&1 &
记得把interval和count都替换为你想要的间隔和次数。这样所有的性能信息就全都存入二进制格式的数据文件monitor.res里了。当读取时使用-f就可以了。


9 我不想使用“间隔和次数”的方法来指定汇报时间,我想让sar在某个特定时间结束,有方法没?


可以实现,使用-e hh:mm:ss选项就可以了,设定好你的结束时间,sar就会乖乖的在这个时间结束喽。


默认的结束时间是18:00:00,也就是说如果你使用-e但没有指定具体时间,sar就会用在晚上6点结束。


需要注意的一点是,-e选项只能用在读取(-f)或写入(-o)信息文件时才可用哦。


10 我觉得-o存储的文件的内容不利于我提取有效信息,怎么办呢?


sar想到了这一点,它提供了一个-h选项,就是用于当你使用-f选项读取文件时,以一种特殊格式输出,这种格式很利于awk等文本处理工具来提取相应信息,你可以试试看:)


11 选项很多,字段很多,背景知识也很多,搞得我快昏了,能不能给一些简洁明了的例子呢?


这么多信息想立刻掌握,并非易事,结合例子,或许效果更好些,例子如下:


sar -u 2 5 :每个两秒报告一次CPU使用情况,共报告5次


sar -I 14 -o sys_info 2 10 :汇报IRQ14的信息,每两秒一次,共10次,所有输出信息存入sys_info中去。


sar -r -n DEV -f sys_net :显示内存使用情况、交换区使用情况以及网络情况,所有输出信息存入sys_net文件中。


12 我对网络监控这块比较感兴趣,能详细说说么?


sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、EDEV、SOCK和FULL。


如果你使用DEV关键字,那么sar将汇报和网络设备相关的信息,如lo,eth0或eth1等,例如:


$ sar -n DEV 1 2
Linux 2.6.9      10/17/2009


12:10:49 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:50 AM      eth0     63.64      0.00   4072.73      0.00      0.00      0.00      0.00
12:10:50 AM      eth1     30.30     13.13   2907.07   1234.34      0.00      0.00      0.00
12:10:50 AM        lo      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:每秒钟发送出去的压缩包数目


txmcst/s:每秒钟接收到的多播包的包数目


如果你使用EDEV关键字,那么会针对网络设备汇报其失败情况,例如:


$ sar -n EDEV 1 3
Linux 2.6.9     10/17/2009


12:15:06 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
12:15:07 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:15:07 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:15:07 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
rxerr/s:每秒钟接收到的损坏的包的数目


txerr/s:当发送包时,每秒钟发生的错误数


coll/s:当发送包时,每秒钟发生的冲撞(collisions)数(这个是在半双工模式下才有)


rxdrop/s:由于缓冲区满,网络设备接收端,每秒钟丢掉的网络包的数目


txdrop/s:由于缓冲区满,网络设备发送端,每秒钟丢掉的网络包的数目


txcarr/s:当发送数据包时,每秒钟载波错误发生的次数


rxfram/s:在接收数据包时,每秒钟发生的帧对齐错误的次数


rxfifo/s:在接收数据包时,每秒钟缓冲区溢出错误发生的次数


txfifo/s:在发送数据包时,每秒钟缓冲区溢出错误发生的次数


如果你使用SOCK关键字,则会针对socket连接进行汇报,例如:


$ sar -n SOCK 1 3
Linux 2.6.9       10/17/2009


12:27:29 AM    totsck    tcpsck    udpsck    rawsck   ip-frag
12:27:30 AM        90        41         4         0         0
12:27:31 AM        90        41         4         0         0
12:27:32 AM        90        41         4         0         0
Average:           90        41         4         0         0
totsck:被使用的socket的总数目


tcpsck:当前正在被使用于TCP的socket数目


udpsck:当前正在被使用于UDP的socket数目


rawsck:当前正在被使用于RAW的socket数目


ip-frag:当前的IP分片的数目


如果你使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合。


===


正文就到这里了,内容不少了,够大家咀嚼一阵的了:)


或许你平时还在使用free,ifconfig或者top,从今以后,试试sar吧!


专业,从今天开始!哈哈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值