Sar概念

可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。

语法

  1. sar [options] [-o filename] interval [count]
  • -o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中;
  • interval:表示采样间隔时间,该参数必须手动设置;
  • count:表示采样次数,是可选参数,其默认值为 1;
  • options:为命令行选项,由于 sar 命令提供的选项很多,这里不再一一介绍,仅列举出常用的一些选项 | 选项option | 说明 | | —- | —- | | -A | 显示系统所有资源设备(CPU、内存、磁盘)的运行状况。 | | -u | 显示系统所有 CPU 在采样时间内的负载状态。 | | -P | 显示当前系统中指定 CPU 的使用情况。 | | -d | 显示系统所有硬盘设备在采样时间内的使用状态。 | | -r | 显示系统内存在采样时间内的使用情况。 | | -b | 显示缓冲区在采样时间内的使用情况。 | | -v | 显示 inode 节点、文件和其他内核表的统计信息。 | | -n | 显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等,有关更多的选项,可通过执行 man sar 命令查看。 | | -q | 显示运行列表中的进程数、进程大小、系统平均负载等。 | | -R | 显示进程在采样时的活动情况。 | | -y | 显示终端设备在采样时间的活动情况。 | | -w | 显示系统交换活动在采样时间内的状态。 |

实例

示例1

  1. sar -u 3 5
  2. Linux 3.10.0-693.2.2.el7.x86_64 (qa7) 04/11/2022 _x86_64_ (8 CPU)
  3. 02:08:26 PM CPU %user %nice %system %iowait %steal %idle
  4. 02:08:29 PM all 1.38 0.00 1.55 0.08 0.00 96.98
  5. 02:08:32 PM all 2.01 0.00 0.84 0.04 0.00 97.10
  6. 02:08:35 PM all 1.18 0.00 1.01 0.04 0.00 97.77
  7. 02:08:38 PM all 1.05 0.00 0.96 0.04 0.00 97.95
  8. 02:08:41 PM all 1.34 0.00 1.30 0.04 0.00 97.31
  9. Average: all 1.39 0.00 1.13 0.05 0.00 97.42

此输出结果中,各个列表项的含义分别如下:

  • %user:用于表示用户模式下消耗的 CPU 时间的比例;
  • %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例;
  • %system:系统模式下消耗的 CPU 时间的比例;
  • %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例;
  • %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例;
  • %idle:CPU 空闲时间比例。

示例2

  1. sar -d 3 5
  2. Linux 3.10.0-693.2.2.el7.x86_64 (qa7) 04/11/2022 _x86_64_ (8 CPU)
  3. 02:24:26 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
  4. 02:24:29 PM dev253-0 15.67 0.00 136.00 8.68 0.02 1.30 0.57 0.90
  5. 02:24:29 PM dev253-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  6. 02:24:29 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
  7. 02:24:32 PM dev253-0 12.67 0.00 90.67 7.16 0.01 0.84 0.45 0.57
  8. 02:24:32 PM dev253-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  9. 02:24:32 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
  10. 02:24:35 PM dev253-0 10.00 0.00 74.67 7.47 0.01 0.97 0.53 0.53
  11. 02:24:35 PM dev253-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  12. 02:24:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
  13. 02:24:38 PM dev253-0 22.00 0.00 173.33 7.88 0.03 1.33 0.48 1.07
  14. 02:24:38 PM dev253-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  15. 02:24:38 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
  16. 02:24:41 PM dev253-0 11.67 0.00 96.00 8.23 0.02 1.43 0.63 0.73
  17. 02:24:41 PM dev253-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  18. Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
  19. Average: dev253-0 14.40 0.00 114.13 7.93 0.02 1.20 0.53 0.76
  20. Average: dev253-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

此输出结果中,各个列表头的含义如下:

  • 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 的百分比,比率越大,说明越饱和。

示例3

  1. $ sar -r 3 5
  2. Linux 3.10.0-693.2.2.el7.x86_64 (qa7) 04/11/2022 _x86_64_ (8 CPU)
  3. 02:33:42 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
  4. 02:33:45 PM 3332908 12934288 79.51 426468 7540968 8414992 51.73 8628140 3197396 172
  5. 02:33:48 PM 3320836 12946360 79.59 426468 7540984 8564208 52.65 8641260 3197400 164
  6. 02:33:51 PM 3334056 12933140 79.50 426468 7540996 8414928 51.73 8626568 3197404 176
  7. 02:33:54 PM 3335216 12931980 79.50 426468 7541000 8415700 51.73 8626716 3197400 176
  8. 02:33:57 PM 3329172 12938024 79.53 426468 7541008 8530060 52.44 8631908 3197396 88
  9. Average: 3330438 12936758 79.53 426468 7540991 8467978 52.06 8630918 3197399 155

此输出结果中,各个列表头的含义如下:

  • kbmemfree:可用的空闲内存,单位是KB
  • kbmemused: 已经使用的内存,这个没有考虑内核自己用到的内存
  • %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.目前内存的使用率
  • kbbuffers:这个值就是 free 命令中的 buffer
  • kbcached:这个值就是 free 命令中的 cache
  • kbcommit : 保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
  • %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
  • kbactive:活跃内存的大小(内存最近被使用过,并且不会被回收)
  • kbinact:不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)
  • kbdirty:以KB为单位的内存量等待写入磁盘

参考网页:
https://blog.csdn.net/weixin_38232749/article/details/85101826
https://blog.51cto.com/u_11555417/2138903