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

[转帖]【linux命令学习】— sar 命令学习的更多相关文章

  1. [转帖]Linux系列之SAR命令使用详解

    Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...

  2. linux系统监控sar命令

    linux系统监控sar命令详解 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包 ...

  3. [转帖] Linux运维基础知识学习内容

    原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell pyt ...

  4. [转帖]linux下安装7z命令及7z命令的使用

    linux下安装7z命令及7z命令的使用 https://www.cnblogs.com/yiwd/p/3649094.html yum install p7zip 执行命令为 7za x 或者是 7 ...

  5. Linux centos7 日常运维——使用w查看系统负载、vmstat命令、top命令、sar命令、nload命令

    一.使用w查看系统负载 w .uptime查看系统负载,0.00表示1分钟之内负载为0 cat  /proc/cpuinfo查看cpu核数 二.vmstat命令,查看进程.cpu.memory.交换. ...

  6. Linux之sar命令介绍

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

  7. linux sar 命令详解

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

  8. linux sar 命令详解(转载)

    linux sar 命令详解 2013-04-01 11:05 [小 大] 来源: 开源中国社区 评论: 0 分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游 ...

  9. linux sar 命令详解(历史资源查看,如内存、CUP等等)

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

  10. linux sar命令详解

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

随机推荐

  1. STM32CubeMX教程9 USART/UART 异步通信

    1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK ...

  2. Deployment控制器

    目录 Deployment控制器 1.deployment及副本数 使用命令生产yaml文件模板 控制器通过什么管理pod? 2.副本数修改方法 3.动态扩展HPA 4.镜像滚动升级及回滚 升级 回退 ...

  3. 【华为云技术分享】DLI跨源|当DLI遇见MongoDB

    导语: MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司.游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求, ...

  4. css过去及未来展望—分析css演进及排版布局的考量

    读初二的时候,学校有了计算机,也简单地介绍了下网页,不过那是的html 都是table,也没有去细看.到了高中,qq空间有个html模式,为了让文章好看点.也浅尝辄止地学了下css css简介 在HT ...

  5. 从λ演算到函数式编程聊闭包(1):闭包概念在Java/PHP/JS中形式

    什么是闭包 如果让谷哥找一下"闭包"这个词,会发现网上关于闭包的文章已经不计其数 维基百科上对闭包的解释就很经典:在计算机科学中,闭包(Closure)是词法闭包(Lexical ...

  6. CentOS7安装maven,mvn clean -DskipTests package

    1.JAVA_HOME 首先确保正确安装并配置了JAVA_HOME 我这里安装了jdk1.8 2.下载maven 3.6.3 wget https://mirrors.tuna.tsinghua.ed ...

  7. 火山引擎DataTester:企业如何使用A/B实验优化商业化能力

      商业化是企业将研发成果,如新产品.新技术.新服务等,转变成可盈利的商业化产品:整个流程中包含了研发.推广.服务,全程通过精细化管理运营.商业化的本质是流量的变现,而对企业而言,商业化链路的打磨至关 ...

  8. 【软件安装记录篇】本地虚拟机Centos7快速安装MySQL

    安装 采用Installing MySQL on Linux Using the MySQL Yum Repository的方式进行安装. 1. 首先下载服务器版本对应的rpm文件,下载地址:[链接] ...

  9. 如何通过命令部署.Net

    如何通过命令部署.net3.5组件服务 问题:系统安装.net一直报错,无法安装该功能. 问题现象: 终极解决方案: 将windows10系统镜像文件拷贝在硬盘或者U盘中,鼠标右击选择"装载 ...

  10. 【python爬虫】bs4遍历、搜索文档树 bs4使用css选择器 selenium基本使用 selenium查找标签 selenium执行js代码

    目录 上节回顾 今日内容 0 bs4遍历文档树 1 bs4搜索文档树 1.1 find方法的其他参数 2 css选择器 3 selenium基本使用 4 无界面浏览器 4.1 模拟登录百度 5 sel ...