Linux下(网络流量分析)sar工具

sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

在使用UNIX操作系统的过程中,我们常常会用到各种各样的问题,比如系统运行速度突然变慢,系统容易死机或者主机所带的终端常出现死机,这时我们常常猜测,是硬盘空间太小,还是内存不足?I/O出现瓶颈,或者是系统的核心参数出了问题?这时,我们应该考虑使用系统给我们提供的sar命令来对系统作一个了解,该命令是系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况,是UNIX系统使用者应该掌握的工具之一。


sar安装

Sar是后台进程sadc的前端显示工具,安装名为“sysstat”的包后,sadc就会自动从内核收集报告并保存。

[root@localhost ~]# yum install sysstat 

sar 命令行的常用格式:

[root@test ~]# sar -h
Usage: sar [ options ] [ <interval> [ <count> ] ]
Main options and reports:
	-b	I/O and transfer rate statistics
	-B	Paging statistics
	-d	Block device statistics
	-I { <int> | SUM | ALL | XALL }
		Interrupts statistics
	-m	Power management statistics
	-n { <keyword> [,...] | ALL }
		Network statistics
		Keywords are:
		DEV	Network interfaces
		EDEV	Network interfaces (errors)
		NFS	NFS client
		NFSD	NFS server
		SOCK	Sockets	(v4)
		IP	IP traffic	(v4)
		EIP	IP traffic	(v4) (errors)
		ICMP	ICMP traffic	(v4)
		EICMP	ICMP traffic	(v4) (errors)
		TCP	TCP traffic	(v4)
		ETCP	TCP traffic	(v4) (errors)
		UDP	UDP traffic	(v4)
		SOCK6	Sockets	(v6)
		IP6	IP traffic	(v6)
		EIP6	IP traffic	(v6) (errors)
		ICMP6	ICMP traffic	(v6)
		EICMP6	ICMP traffic	(v6) (errors)
		UDP6	UDP traffic	(v6)
	-q	Queue length and load average statistics
	-r	Memory utilization statistics
	-R	Memory statistics
	-S	Swap space utilization statistics
	-u [ ALL ]
		CPU utilization statistics
	-v	Kernel table statistics
	-w	Task creation and system switching statistics
	-W	Swapping statistics
	-y	TTY device statistics

在命令行中,t和n两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1

options 为命令行选项,sar命令的选项很多,下面只列出常用选项:

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设备活动


默认监控: sar 5 5     //  CPU和IOWAIT统计状态 
(1) sar -b 5 5        // IO传送速率
(2) sar -B 5 5        // 页交换速率
(3) sar -c 5 5        // 进程创建的速率
(4) sar -d 5 5        // 块设备的活跃信息
(5) sar -n DEV 5 5    // 网路设备的状态信息
(6) sar -n SOCK 5 5   // SOCK的使用情况
(7) sar -n ALL 5 5    // 所有的网络状态信息
(8) sar -P ALL 5 5    // 每颗CPU的使用状态信息和IOWAIT统计状态 
(9) sar -q 5 5        // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 5 5       // 内存和swap空间使用情况
(11) sar -R 5 5       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 5 5       // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 5 5       // inode, file and other kernel tablesd的状态信息
(14) sar -w 5 5       // 每秒上下文交换的数目
(15) sar -W 5 5       // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 5 5  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 5 5       // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f)


命令详解:

IO传送速率

命令

sar -b 1 //监视IO传输速率,每秒更新1次

[root@liukai ~]# sar -b 1 
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) 	09/28/2014 	_x86_64_	(4 CPU)

11:12:37 PM       tps      rtps      wtps   bread/s   bwrtn/s
11:12:38 PM      2.00      0.00      2.00      0.00     16.00
11:12:39 PM      0.00      0.00      0.00      0.00      0.00
11:12:40 PM      0.00      0.00      0.00      0.00      0.00
11:12:41 PM      0.00      0.00      0.00      0.00      0.00
11:12:42 PM      4.00      0.00      4.00      0.00     96.00
11:12:43 PM     10.00      0.00     10.00      0.00     80.00
11:12:44 PM      0.00      0.00      0.00      0.00      0.00
11:12:45 PM      0.00      0.00      0.00      0.00      0.00
11:12:46 PM      1.01      0.00      1.01      0.00      8.08
11:12:47 PM      4.17      0.00      4.17      0.00    108.33
11:12:48 PM      0.00      0.00      0.00      0.00      0.00
11:12:49 PM      0.00      0.00      0.00      0.00      0.00
11:12:50 PM      0.00      0.00      0.00      0.00      0.00

tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.
rtps:每秒的读请求数
wtps:每秒的写请求数
bread/s:每秒读磁盘的数据块数(in blocks  1 block = 512B, 2.4以后内核)
bwrtn/s:每秒写磁盘的数据块数(in blocks  1 block = 512B, 2.4以后内核)
一般情况下tps=(rtps+wtps)

 页交换速率

[root@liukai ~]# sar -B 1 
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) 	09/28/2014 	_x86_64_	(4 CPU)

11:15:52 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
11:15:53 PM      0.00      3.96    835.64      0.00   4893.07      0.00      0.00      0.00      0.00
11:15:54 PM      0.00      0.00    356.00      0.00    136.00      0.00      0.00      0.00      0.00
11:15:55 PM      0.00      0.00    328.57      0.00    167.35      0.00      0.00      0.00      0.00
11:15:56 PM      0.00    100.00    324.00      0.00    156.00      0.00      0.00      0.00      0.00
11:15:57 PM      0.00      0.00    247.47      0.00    176.77      0.00      0.00      0.00      0.00
11:15:58 PM      0.00      4.04    813.13      0.00    780.81      0.00      0.00      0.00      0.00
11:15:59 PM      0.00      0.00    294.95      0.00    193.94      0.00      0.00      0.00      0.00
11:16:00 PM      0.00      0.00   3603.00      0.00    236.00      0.00      0.00      0.00      0.00
11:16:01 PM      0.00    100.00    325.00      0.00    181.00      0.00      0.00      0.00      0.00
11:16:02 PM      0.00      0.00    253.06      0.00    105.10      0.00      0.00      0.00      0.00
11:16:03 PM      0.00     12.00    905.00      0.00   4806.00      0.00      0.00      0.00      0.00

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比


查看设备使用情况

[root@liukai ~]# sar -d 1
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) 	09/28/2014 	_x86_64_	(4 CPU)

11:16:49 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:16:50 PM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:16:50 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:16:51 PM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:16:51 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:16:52 PM    dev8-0      8.08      0.00    177.78     22.00      0.08      9.38      5.25      4.24

DEV            磁盘设备
用参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.
rd_sec/s:每秒读扇区的次数.
wr_sec/s:每秒写扇区的次数.
avgrq-sz:平均每次设备I/O操作的数据大小(扇区).
avgqu-sz:磁盘请求队列的平均长度.
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
%util:I/O请求占CPU的百分比,比率越大,说明越饱


查看中断统计

[root@liukai ~]# sar -I ALL 1
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) 	09/28/2014 	_x86_64_	(4 CPU)

11:19:41 PM      INTR    intr/s
11:19:42 PM         0      0.00
11:19:42 PM         1      0.00
11:19:42 PM         2      0.00
11:19:42 PM         3      0.00
11:19:42 PM         4      0.00
11:19:42 PM         5      0.00
11:19:42 PM         6      0.00
11:19:42 PM         7      0.00
11:19:42 PM         8      0.00
11:19:42 PM         9      0.00
11:19:42 PM        10      0.00
11:19:42 PM        11      0.00
11:19:42 PM        12      0.00
11:19:42 PM        13      0.00
11:19:42 PM        14      0.00
11:19:42 PM        15      0.00

IPC消息和信号灯活动

[root@liukai ~]# sar -m 1
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) 	09/28/2014 	_x86_64_	(4 CPU)

11:20:37 PM     CPU       MHz
11:20:38 PM     all   3292.28
11:20:39 PM     all   3292.28
11:20:40 PM     all   3292.28
11:20:41 PM     all   3292.28
11:20:42 PM     all   3292.28
11:20:43 PM     all   3292.28

 报告命名缓冲区活动情况 

[root@liukai ~]# sar -n ALL \\查看所有


 报告命名缓冲区活动情况 

[root@liukai ~]# sar -q 1
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) 	09/28/2014 	_x86_64_	(4 CPU)

11:26:22 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
11:26:23 PM         0       731      0.30      0.45      0.61
11:26:24 PM         0       732      0.30      0.45      0.61
11:26:25 PM         0       731      0.28      0.44      0.60
11:26:26 PM         0       731      0.28      0.44      0.60
11:26:27 PM         0       731      0.28      0.44      0.60
11:26:28 PM         0       731      0.28      0.44      0.60
11:26:29 PM         0       734      0.28      0.44      0.60
11:26:30 PM         0       735      0.26      0.43      0.60
11:26:31 PM         0       732      0.26      0.43      0.60

runq-sz 准备运行的进程运行队列。
%runocc 运行队列被占用的时间(百分比)
swpq-sz 要被换出的进程交换队列。
%swpocc 交换队列被占用的时间(百分比)。
*如果%runocc大于90,并且runq-sz的值大于2,则表明CPU的负载较重。其直接后果,可能使系统的响应速度降低。如果%swpocc大于20,表明交换活动频繁,将严重导致系统效率下降。解决的办法是加大内存或减少缓存区数量,从而减少交换及页—入,页—出活动。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值