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值基本一致,所以它不包括buffer和cache的空间;
  • kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间;
  • %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包

sar、sa1和sa2命令都是sysstat包的一部分。它是Linux包含的性能监视工具集合。

  • sar:显示数据
  • sa1和sa2:收集和保存数据用于以后分析。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. mysql的CRUD操作实现

      插入语句(INSERT):一旦我们选择了要插入的字段,   我们就必须保证要插入的数值和选择的字段的个数,顺序,类型一致. 1:怎么插入一条数据: INSERT INTO 插入的表名称(列名1,列 ...

  2. CF1340F Nastya and CBS 题解

    题目大意 给定一个长度为 \(n(n \le 10 ^ 5)\) 的括号序列.要求支持两个操作: 修改某个位置的括号. 询问 \([l, r]\) 区间内的括号序列是否合法. 题目分析 显然,这道题是 ...

  3. 无法找到模块“element-plus/dist/locale/zh-cn.mjs”的声明文件

    把 zhCn 的引入 改成 下面这个就可以了 import zhCn from "element-plus/es/locale/lang/zh-cn"; 贼拉拉管用,快去试试吧 ~

  4. osgEarth使用笔记3——加载倾斜摄影数据

    目录 1. 概述 2. 详论 2.1. 位置 2.2. 着色 2.3. 其他 3. 结果 4. 参考 1. 概述 我在<OSG加载倾斜摄影数据>这篇博文中论述了如何通过OSG生成一个整体的 ...

  5. 【玩转鲲鹏DevKit系列】如何快速迁移软件包?

    本文分享自华为云社区<[玩转鲲鹏DevKit系列]如何快速迁移软件包?>,作者: 华为云社区精选 . 软件包含各种不同格式的文件,如RPM包通常包含二进制文件.SO 库文件.JAR包.配置 ...

  6. 六一新玩法!AI涂鸦秒变精美艺术画

    摘要:上华为云ModelArts体验AI涂鸦新玩法,赢漫威复仇者联盟乐高!祝大小朋友们六一儿童节快乐~ 本文分享自华为云社区<[云享热点]六一新玩法!AI 涂鸦秒变精美艺术画>,作者:华为 ...

  7. 火山引擎DataTester:三类AB实验,让企业营销拥有灵敏“网感”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作者:火山引擎AB测试   近日,火山引擎数智平台举办了"走进火山-全链路增长:数据飞轮转动消费新生力& ...

  8. SecureCRT 取消右击粘贴功能

    SecureCRT 默认是选择复制.右击粘贴 但右击粘贴这个功能实在是太方便了,有时候会造成不必要的麻烦.所以一般情况下我是取消这个应用的 设置如下图所示,把勾取消就OK了

  9. 手把手教你在 Windows 环境中搭建 MQTT 服务器

    前言 前些天要对接一家硬件商的设备数据,对方使用的 MQTT 协议点对点透传,所以又赶紧搭建 MQTT 服务器,写 .NET 程序接收数据等等,今天分享一下如何搭建 MQTT 服务器. MQTT 协议 ...

  10. python 内置命名空间、标准库、模块相关概念

    内置命名空间 python 解释器启动后就可以直接使用一些函数,常量,类型,异常等.保存这些数据的空间统称内置命名空间. 内置命名空间中包含的数据如下: 对于内置命名空间中最常用的就是内置函数. 内置 ...