如何在 Linux 上使用 sar 命令

sar
命令可让您查看 Linux 计算机不同元素的性能统计信息,包括实时数据和历史数据。我们向您展示如何使用这一重要资源。
sar 命令
sar
命令或系统活动报告程序是 sysstat
包的一部分。它捕获一组统计信息,例如 CPU 负载、内存分页、内存利用率、交换使用情况、网络 I/O 等等。它使您可以通过实时快照(向您显示计算机上当前发生的情况)和历史报告的形式访问这些数据。
它作为守护进程在后台运行,每十分钟收集一组数据。当天的数据被写入一个文本文件。午夜过后,它会转换为二进制文件。这些文件每个月都会被覆盖,因此它们不会稳定地吞噬您的硬盘容量。
sar
命令可让您查询系统并查看统计信息。但首先,您需要安装 sysstat
包。
安装 sysstat 包
安装 sysstat
非常简单。我们使用您的 Linux 系统的包管理器来安装它,然后使用 systemd
启用和启动后台守护进程。
要在 Ubuntu 上安装 sysstat
,我们使用 apt:
sudo apt install sysstat

要在 Fedora 上安装 sysstat
,请键入:
sudo dnf install sysstat

为了在 Manjaro 上安装 sysstat,我们使用 pacman:
sudo pacman -S sysstat

安装了 sysstat
后,我们需要启用它,以便它可以作为后台进程运行 - 每次启动计算机时,我们需要立即启动它以便我们可以正确使用它离开。我们使用 systemctl
(systemd
实用程序系列的一部分)来启用和启动守护进程。
sudo systemctl enable sysstat

sudo systemctl start sysstat

要查看您正在使用哪个版本的 sar
,并确保它正在响应,您可以使用 -V
(版本)选项:
sar -V

使用 sar 进行实时统计
您可以使用 sar
查看您的计算机中正在发生的事情。因为快照就是某个时间点的播放状态,有时趋势更有用,您可以要求 sar
显示多个快照它们之间指定的秒数。
CPU统计
要查看三组 CPU 统计数据,间隔两秒,我们将使用此命令,该命令使用 -u
(CPU) 选项。请注意,间隔在前。所以这个命令读作“以两秒为步长显示 CPU 统计数据,用于三组数据。”
sar -u 2 3

拉伸终端窗口使表格整齐排列,因此更易于阅读。
第一列的标题是命令执行的时间。列中的值是收集每组数据的时间。其他列是:
- CPU:CPU核数,
ALL
为所有核的平均值。 - %User:在“用户空间”的用户级别运行应用程序所花费的时间百分比。
- %Nice:在用户级别运行应用程序所花费的时间百分比,优先级为 nice。
- %system:在内核中系统级执行进程所花费的时间百分比。
- %iowait:CPU 因未决磁盘 I/O 请求而空闲的时间百分比。
- %steal:在虚拟机中,这是虚拟 CPU 闲置的时间百分比,因为硬件主机的 CPU 正在为不同的虚拟机提供服务。
- %idle:CPU 在没有任何待处理的磁盘 I/O 请求的情况下空闲的时间百分比。
最后一行是前面几行的平均值。
要查看特定内核的统计信息,请使用 -P
(每个处理器)选项。紧随其后的是 CPU 内核的编号,或者内核编号的列表或范围,例如 0,1,4
或 4-8
。
对于核心 1,此命令查看三组数据,中间间隔一秒。请记住,核心从零开始编号。
sar -P 1 1 3

内存分页统计
-B
(分页)选项使 sar
显示与内存分页到硬盘驱动器相关的统计信息。我们将要求提供两组信息,它们之间间隔五秒钟。
sar -B 5 2

这些列包含以下信息。
- pgpgin/s:系统每秒从硬盘调入(检索)的总千字节数。
- pgpgout/s:系统每秒分页到硬盘的总千字节数。
- fault/s:系统每秒产生的页面错误数,包括轻微和严重的页面错误。
- majflt/s:系统每秒发生的重大故障数,需要从磁盘加载内存页。
- pgfree/s:每秒系统放置在空闲列表中的页面数。
- pgscank/s:内存管理系统
kswapd
守护进程每秒扫描的页数。 - pgscand/s:每秒直接扫描的页数。
- pgsteal/s:系统每秒从缓存中回收的页数。
- %vmeff:计算为
pgsteal
/pgscan
,这是页面回收效率的指标。
I/O 传输率
要查看 I/O 和传输速率统计信息,请使用 -b
(注意,小写的“b”)选项。我们要求三组数据,它们之间间隔四秒。
sar -b 4 3

这就是列的内容。
- tps:每秒向物理设备发出的传输请求总数。请注意,这是请求 的计数。他们可能并不都成功。
- rtps:每秒向物理设备发出的读取请求总数。
- wtps:每秒向物理设备发出的写入请求总数。
- dtps:每秒向物理设备发出的丢弃请求总数。
- bread/s:从物理设备读取的数据总量。该数字以每秒 512 字节的块为单位给出。
- bwrtn/s:每秒写入物理设备的数据总量(以块为单位)。
- bdscd/s:每秒丢弃的数据块总量。
您可以选择查看更多类别的信息。它们都以相同的方式使用。您还可以使用 -A
(全部)选项来查看 sar
可以抛给您的所有内容的完整转储。
查看 sar 手册页以获取完整列表。
使用 sar 进行历史统计
要查看任何历史数据,只需将 -s
(开始)和 -e
(结束)选项添加到任何常用的 sar
命令。时间以 24 小时制表示。
要查看 今天 06:30 和 07:15 之间的 CPU 负载情况,我们将使用此命令。
sar -u -s 06:30:00 -e 07:15:00

要查看前一天的情况,请使用数字作为选项标志。数字表示在哪一天报告。 -1
选项表示昨天,-2
选项表示两天前,依此类推。
让我们使用昨天的数据在 13:00 到 13:00 之间生成一份报告。
sar -u -1 -s 13:00:00 -e 13:30:00

指定您希望报告的日期的另一种方法是在命令行中使用当天数据文件的名称。我们使用 -f
(文件名)选项来做到这一点。
每日文件称为“saXX”,其中 XX 替换为月份中的某天。它们是在您的 Linux 计算机的日志文件夹中创建的。 sar
日志文件夹可能称为“/var/log/sa/”或“/var/log/sysstat/”。
在 Ubuntu 上,它是“/var/log/sysstat/”,所以我们查看本月 21 日 14:00 到 14:30 之间 CPU 使用率的命令格式如下所示:
sar -u -s 14:00:00 -e 14:30:00 -f /var/log/sysstat/sa21

信息就是力量
sar
肯定会为您提供足够的信息,以便您对计算机的性能做出明智的决定。
如果您担任支持角色——或者您是朋友和家人的技术支持人员——能够查看历史数据是开始深入研究今天向您报告但实际发生在昨天的问题的好方法。或者上周。