【linux命令学习】— sar 命令学习

https://blog.csdn.net/u013332124/article/details/101075521

一、命令使用介绍

sar命令全称 System Activity Report,它非常全能,可以分析linux系统各个维度的指标。包括:

  • 文件的读写情况
  • 系统调用的使用情况
  • 磁盘I/O
  • CPU效率
  • 内存使用状况(包括内存页面的置换)
  • 进程活动
  • IPC有关的活动
  • 网卡相关信息

他的命令常用格式如下:

sar [options] [-A] [-o file] t [n]

其中t为采样间隔,n为采样次数,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file是文件名;options为命令行选项,sar常用的选项有以下(主要各个维度的对应参数信息):

  • -A:所有报告的总和
  • -u:输出CPU使用情况的统计信息
  • -q:输出cpu等待队列的长度相关统计信息
  • -v:输出inode、文件和其他内核表的统计信息
  • -d:输出每一个块设备的活动信息
  • -r:输出内存和交换空间的统计信息
  • -b:显示I/O和传送速率的统计信息
  • -a:文件读写情况
  • -c:输出进程统计信息,每秒创建的进程数
  • -R:输出内存页面的统计信息
  • -y:终端设备活动情况
  • -w:输出系统交换活动信息

二、系统各个维度的性能分析

1、CPU相关指标

和CPU相关的指标的参数主要有 -P、-u、-q。

1.1、 -P 或者 -u 输出CPU使用情况的统计信息

其中-u是输出cpu总的相关性能指标,-P可以指定输出某一个cpu的指标(会把cpu一个个列出来)

# 获取cpu的一个总的信息(默认就是-u)
sar 2 2 
sar -u 2 2
# 输出更详细一些的报表
sar -u ALL 2 2
# 获取某一个cpu的信息
sar -P 1 2 2
# 获取所有cpu的信息
sar -P ALL 22

输出:

03:47:05 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:47:07 PM     all      3.88      0.00      0.19      0.06      0.00     95.87
03:47:09 PM     all      4.06      0.00      0.22      0.11      0.00     95.61
Average:        all      3.97      0.00      0.20      0.09      0.00     95.74

相关指标含义:

  • %user:CPU处在用户模式下的时间百分比
  • %nice:CPU处在带NICE值的用户模式下的时间百分比
  • %system:CPU处在系统模式下的时间百分比
  • %iowait:CPU等待输入输出完成时间的百分比
  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
  • %idle:CPU空闲时间百分比

1.2、 -q 输出CPU队列的相关统计信息

sar -q 2 2

输出:

03:54:30 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
03:54:32 PM         2      2798      1.79      1.43      1.46
03:54:34 PM         2      2797      1.79      1.43      1.46
Average:            2      2798      1.79      1.43      1.46

相关指标含义:

  • runq-sz:运行队列的长度(等待运行的进程数);
  • plist-sz:进程列表中进程(processes)和线程(threads)的数量,很多线程可能在休眠中
  • ldavg-1:最后1分钟的系统平均负载;
  • ldavg-5:过去5分钟的系统平均负载;
  • ldavg-15:过去15分钟的系统平均负载;

2、磁盘相关指标(建议用iostat)

我们可以通过-b、-d来输出磁盘的相关指标。通过

2.1、 -b 输出磁盘基本信息

sar -b 2 2

输出:

04:10:11 PM       tps      rtps      wtps   bread/s   bwrtn/s
04:10:13 PM    101.52      0.00    101.52      0.00    921.83
04:10:15 PM    117.01      0.00    117.01      0.00   1150.52
Average:       109.21      0.00    109.21      0.00   1035.29

相关指标含义:

  • tps:采样期间I/O的请求数,多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的
  • rtps:采样期间内的io读请求数
  • wtps:采样期间内的io写请求数
  • bread/s:采样期间内的io读的块数
  • bwrtn/s:采样期间内的io写的块数

2.2、-d 输出磁盘更详细的信息

sar -d 2 2

输出:

04:13:39 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:13:41 PM  dev8-144      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM   dev8-80      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM   dev8-32      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM  dev8-112      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM  dev8-128      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM   dev8-96      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM   dev8-64      1.00      0.00     16.00     16.00      0.01     13.00     13.00      1.30
04:13:41 PM  dev8-160      1.50      0.00     28.00     18.67      0.02     14.67      8.67      1.30
04:13:41 PM   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:13:41 PM   dev8-48      1.00      0.00     12.00     12.00      0.01     12.50     12.50      1.25
04:13:41 PM    dev8-0      2.50      0.00     92.00     36.80      0.02      9.20      9.20      2.30

相关指标含义:

  • DEV:磁盘设备;
  • 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的百分比,比率越大,说明越饱;

2.3、 小结

sar的磁盘指标和iostat输出的其实基本是一样的。但是iostat可以输出磁盘的名称,我们可以通过df -h找到对应的磁盘是哪个目录。而sar的-b不是以单个磁盘为粒度,-d虽然有输出DEV,但和df -h输出的磁盘名称好像对应不上。因此,个人建议还是iostat比较好用:

https://blog.csdn.net/u013332124/article/details/98352716

3、内存相关指标(-n 参数)

通过 -B、-r、-W 来查看内存的相关指标

3.1、-r 查看内存的使用情况

sar -r 2 2

输出:

05:37:07 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
05:37:09 PM   2717548  46656484     94.50    297688   3473964  70040892    105.88
05:37:11 PM   2717416  46656616     94.50    297692   3473972  70038520    105.88
Average:      2717482  46656550     94.50    297690   3473968  70039706    105.88

相关指标含义:

  • kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffercache的空间;
  • kbmemused:这个值和free命令中的used值基本一致,所以它包括buffercache的空间;
  • %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比;
  • kbbuffers:这两个值就是free命令中的buffer
  • kbcached:这两个值就是free命令中的cache
  • kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap);
  • %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比;

3.2、-B 查看内存分页的情况

sar -B 2 2

输出:

05:39:43 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
05:39:45 PM      0.00     56.57   4540.91      0.00   1527.27      0.00      0.00      0.00      0.00
05:39:47 PM      0.00     50.25   4522.11      0.00   1455.78      0.00      0.00      0.00      0.00
Average:         0.00     53.40   4531.49      0.00   1491.44      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)的百分比;

3.3、-W 查看SWAP交换的统计信息

sar -W 2 2

输出:

05:41:40 PM  pswpin/s pswpout/s
05:41:42 PM      0.00      0.00
05:41:44 PM      0.00      0.00
Average:         0.00      0.00

相关指标含义:

  • pswpin/s:每秒从交换分区到系统的交换页面(swap page)数量
  • pswpout/s:每秒从系统交换到swap的交换页面(swap page)的数量

4、网络相关指标

使用姿势:

# keyword 表示不同的几个开关。包括: DEV | EDEV | NFS | NFSD | SOCK
# 每个开关输出的信息都不一样
sar -n {keyword} or {ALL}
  • DEV : 显示网络接口信息
  • EDEV : 显示关于网络错误的统计数据
  • NFS : 显示NFS客户端信息
  • NFSD : 显示NFS服务器信息
  • SOCK : 显示套接字信息

4.1、网络接口相关信息

sar -n DEV 2 2 

输出:

05:48:11 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
05:48:13 PM        lo      7.50      7.50      0.69      0.69      0.00      0.00      0.00
05:48:13 PM       em1      5.00      8.00      0.60      0.94      0.00      0.00      0.00
05:48:13 PM       em2     19.00      8.00      2.50      1.44      0.00      0.00      2.00
05:48:13 PM       em3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:48:13 PM       em4      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:48:13 PM     bond0     24.00     16.00      3.09      2.37      0.00      0.00      2.00

相关指标含义:

  • IFACE:LAN接口网络设备的名称;
  • rxpck/s:每秒钟接收的数据包;
  • txpck/s:每秒钟发送的数据包;
  • rxkB/s:每秒钟接收的字节数;
  • txkB/s:每秒钟发送的字节数;
  • rxcmp/s:每秒钟接收的压缩数据包;
  • txcmp/s:每秒钟发送的压缩数据包;
  • rxmcst/s:每秒钟接收的多播数据包;

4.2、网络错误的统计数据

sar -n EDEV 2 2

输出:

05:49:25 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
05:49:27 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:49:27 PM       em1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:49:27 PM       em2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:49:27 PM       em3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:49:27 PM       em4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
05:49:27 PM     bond0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

相关指标含义:

  • IFACE:LAN接口网络设备的名称;
  • rxerr/s:每秒钟接收的坏数据包;
  • txerr/s:每秒钟发送的坏数据包;
  • coll/s:每秒冲突数;
  • rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数;
  • txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数;
  • txcarr/s:发送数据包时,每秒载波错误数;
  • rxfram/s:每秒接收数据包的帧对齐错误数;
  • rxfifo/s:接收的数据包每秒FIFO过速的错误数;
  • txfifo/s:发送的数据包每秒FIFO过速的错误数

4.3、 查看套接字相关信息

sar -n SOCK 2 2

输出:

05:51:14 PM    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
05:51:16 PM       436       277         5         0         0         0
05:51:18 PM       435       276         5         0         0         0
Average:          436       276         5         0         0         0

相关指标含义:

  • totsck:使用的套接字总数量;
  • tcpsck:使用的TCP套接字数量;
  • udpsck:使用的UDP套接字数量;
  • rawsck:使用的RAW套接字数量;
  • ip-frag:当前的IP分片的数目;
  • tcp-tw:TCP套接字中处于TIME-WAIT状态的连接数量

三、其他

1、关于输出二进制文件和读取sa二进制文件

通过-o参数,可以将性能报告输出到指定的文件中。不过这个文件是二进制的,需要查看具体的信息还是需要通过sar命令来打开解析。

# 输出到指定的文件
sar -o /tmp/sa.test 2 2
# 解析某个sar二进制文件
sar -f /tmp/sa.test

2、关于sysstat包

sarsa1sa2命令都是sysstat包的一部分。它是Linux包含的性能监视工具集合。

  • sar:显示数据
  • sa1sa2:收集和保存数据用于以后分析。sa2shell脚本在/var/log/sa目录中每日写入一个报告。sa1shell脚本将每日的系统活动信息以二进制数据的形式写入到文件中。

我们可以在/etc/cron.d/sysstat文件中找到sar默认的cron作业,如下:

# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

这样我们就可以按照我们的需求,进行输出定制化了。

sar不止上面说的几个程序:

  • sar:收集、报告或存储信息(CPU、内存、磁盘、中断、网卡、TTY、内核表等等);
  • sadc:系统数据收集器,给sar做后台服务;
  • sa1:收记并存储二进制数据到每天的文件;这是设计来给cron执行一个sadc的前台程序;
  • sa2:生成总结报表;
  • sadf:以多种格式显示数据(CSV, XML, JSON, etc.),还可以用来生成SVG(Scalable Vector Graphics)图表。

参考资料

https://www.jellythink.com/archives/483

https://blog.csdn.net/macky0668/article/details/6839525

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容

  • 命令行选项 -A:所有报告的总和-b:显示I/O和传递速率的统计信息-B:显示换页状态-d:输出每一块磁盘的使用信...
    佛系小懒阅读 2,184评论 0 2
  • linux是当前在服务器领域最成功操作系统,不仅性能卓越,安全性高,更重要的是提供了一套完善的监控机制,来检测系统...
    刘建会阅读 1,473评论 0 2
  • 一:命令介绍:参考资料:http://linux.die.net/man/1/sar 用法: sar [ 选项 ]...
    SkTj阅读 882评论 0 0
  • 如何用十条命令在一分钟内检查Linux服务器性能 “ 如果你的Linux服务器突然负载暴增,报警短信快发爆你的手机...
    meng_philip123阅读 635评论 0 19
  • 武大樱花开遍了整个江城,老桥下的桃花也该飘了过半花园,成都想必近日也是阴雨连绵,这湿漉漉的天气让人着实不安,晚课后...
    volcano_ba43阅读 145评论 0 0