简介


SAR(System Activity Reporter)是Linux系统中常用的性能分析工具,用于收集、报告和分析系统活动。它可以显示CPU、内存、磁盘、网络等各种系统性能指标,帮助管理员了解系统的运行状况,识别性能瓶颈,并进行优化。

工作原理

SAR通过读取/proc//sys/等虚拟文件系统中的数据来获取系统性能信息。它还可以通过调用系统调用来获取一些实时数据。

常用选项

  • -b:显示启动时间以来的统计数据。
  • -u:显示用户统计数据。
  • -c:显示CPU统计数据。
  • -r:显示内存统计数据。
  • -d:显示磁盘统计数据。
  • -w:显示网络统计数据。
  • -f:强制刷新统计数据。
  • -i:指定统计间隔(以秒为单位)。
  • -t:指定统计时间(以秒为单位)。

运维案例

案例一:分析CPU使用情况

sar -u 1 10

该命令将每隔1秒输出一次用户CPU使用情况,持续10秒。输出结果如下:

...
%CPU     usr     sys    nice  idle   wait  steal   guest
...
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00
99.80   10.00   0.20   0.00   89.60   0.00   0.00   0.00

从输出结果可以看出,该系统的用户CPU使用率一直保持在99.80%左右,说明系统存在CPU瓶颈。

案例二:分析内存使用情况

sar -r 1 10

该命令将每隔1秒输出一次内存使用情况,持续10秒。输出结果如下:

...
KB total   free used buff/cache used/free %Mem  %Used %Free %Cach
...
4096000  3220000   760000   1240000 24.69  79.16  18.56  30.31 50.03
4096000  3220000   760000   1240000 24.69  79.16  18.56  30.31 50.03
4096000  3220000   760000   1240000 24.69  79.16  18.56  30.31 50.03

案例三:分析磁盘I/O性能

sar -d 1 10

该命令将每隔1秒输出一次磁盘I/O性能数据,持续10秒。输出结果如下:

...
r/s     w/s     rMB/s   wMB/s   RIO     WIO     rwait   wwait   sblk    tblk
...
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00
25.00   15.00   0.19   0.11   0.00   0.00   0.00   0.00   25.00   40.00

从输出结果可以看出,该系统的磁盘读写速度比较正常,没有明显的I/O瓶颈。

案例四:分析网络性能

sar -n eth0 1 10

该命令将每隔1秒输出一次eth0网口的网络性能数据,持续10秒。输出结果如下:

...
RX packets:  errors dropped missed tx packets:  errors dropped missed
...
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0
15000         0      0      0   12000         0      0      0

从输出结果可以看出,该系统的eth0网口的收发包数量正常,没有明显的网络瓶颈。

总结

SAR命令是Linux系统中一个功能强大的性能分析