如何检查和监控 Linux 上的 CPU 利用率
作为 Linux 管理员,密切关注服务器的运行情况非常重要。衡量其性能的一种方法是跟踪 CPU 使用情况。这将使您深入了解系统的性能,并显示硬件资源如何在各种运行的服务之间分配。
在本指南中,我们将介绍几种检查和监控 Linux 系统上 CPU 利用率的方法。无论您负责服务器还是个人桌面,计算机的 CPU 使用率都是易于获取的有用信息。
在本教程中您将学习:
如何使用top查看CPU使用率
了解 top 和 htop 的输出
使用 sysstat 包监控 CPU 使用情况
如何配置CPU监控变更
如何检查和监控 Linux 上的 CPU 利用率
如何使用top查看CPU使用率检查当前 CPU 使用情况的一个好方法是使用 top 命令。该命令的许多输出相当复杂,但它提供了有关系统上如何利用 CPU 的非常详细的信息。
$ top这将在终端中打开一个显示屏,其中包含系统上运行的服务的实时视图、每个服务正在使用的系统资源量、以及系统 CPU 利用率的摘要等信息。
使用top命令检查当前CPU使用情况。
注意
top 命令在所有 Linux 发行版中的工作方式大多相同,尽管有一些变体可能会以不同的顺序显示信息,例如以不同的顺序。
Ubuntu 系统上安装的顶级程序来自 procps-ng 软件包,也是我们将在本文中使用的程序。要检查您的系统正在运行什么变体,请使用 -v 标志和 top:
$ top -v预期输出:
procps-ng 3.3.12由于信息量巨大以及使用的所有术语和缩写,顶部命令的显示窗口一开始并不是很用户友好。我们将在下面介绍您需要了解的所有内容,以便您可以从顶部解释数据。
第一行显示(按顺序):系统时间、系统正常运行时间(自上次重新启动以来的时间)、活动用户会话数以及系统的平均负载。平均负载对我们来说特别重要,因为它可以揭示系统随时间的 CPU 使用情况。
平均负载
给出了三个数字来表示平均负载。这些数字分别是 1、5 和 15 分钟内的平均负载。将这些数字视为百分比 – 负载 0.2 表示 20%,负载 1.00 表示 100%。
这应该很容易理解,但您也可能会看到平均负载大于 1.00。这是因为平均负载不是 CPU 使用率的直接测量,而是系统尝试处理的“工作”(负载)量。例如,2.50表示当前负载为250%,也表示系统过载达150%。
顶部的第二行非常不言自明,显示系统上运行的任务数量以及它们所处的当前状态。
第三行是我们找到 CPU 使用情况的地方,其中有一些详细的统计数据,需要一点知识才能解释。
从顶部开始的 CPU 使用情况
us:花费在用户空间(运行用户生成的进程)上的CPU时间百分比。
sy:花费在内核空间(运行系统进程)上的CPU时间百分比。
ni:运行具有用户定义优先级(指定的nice值)的进程所花费的CPU时间百分比。
id:空闲所花费的 CPU 时间百分比。
wa:等待硬件 I/O 所花费的 CPU 时间百分比。示例:等待硬盘完成读取数据。
hi:处理硬件中断所花费的CPU时间百分比。示例:网卡(或任何硬件)中断 CPU 以通知它新数据已到达。
si:处理软件中断所花费的CPU时间百分比。示例:中断 CPU 的高优先级服务。
st:从虚拟机窃取的 CPU 时间百分比。示例:CPU 需要从虚拟机“窃取”资源来处理物理机的工作负载。
接下来的两行专用于内存信息,与监视 CPU 使用情况无关。下面是正在运行的进程列表和标题为 %CPU 的列,其中包含列出的每个进程的当前 CPU 使用情况。
CPU使用率
这样可以快速查看哪些服务占用了最多的 CPU 资源。您可以随时按“q”退出 top。
让顶部更简单由于 top 命令显示了大量详细信息,因此它不是快速浏览 CPU 利用率的理想方法;然而,top 为我们提供了一些选项来简化输出并省去一些复杂的细节。
当 top 运行时,您可以按“t”键循环浏览一些不同的视图,并获得更简单的 CPU 使用情况输出:
CPU使用率图
另一种选择是使用 htop,它与 top 类似,但更适合正常任务。您可以使用包管理器来安装它。
Ubuntu 和 Debian:
$ sudo apt-get install htopCentOS 和红帽:
# yum install htop软呢帽:
# dnf install htop安装后,只需输入 htop 将其打开。
$ htophtop命令
从上面的屏幕截图中可以看出,htop 的输出比 top 更简洁,更适合简单测量 CPU 使用情况。
您可以按与顶部相同的方式退出此屏幕,即按“q”。
检查 CPU 利用率的更多方法我们还可以使用其他一些工具来检查 CPU 使用情况,它们包含在 sysstat 包中。您必须安装此软件包才能使用这些命令。
Ubuntu 和 Debian:
$ sudo apt-get install sysstatCentOS 和红帽:
# yum install sysstat安装 sysstat 软件包后,您将可以访问 mpstat 命令。这显示了许多与 top 相同的信息,但以简洁的一次性输出形式显示。
user@ubuntu1:~$ mpstat Linux 5.0.0-23-generic (ubuntu1) 01/16/2020 _x86_64_ (1 CPU) 02:31:05 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 02:31:05 AM all 1.41 0.05 0.40 0.04 0.00 0.00 0.00 0.00 0.00 98.09该软件包附带的另一个命令是 sar。当与命令中的数字结合使用时最有用。这允许您指定 sar 命令输出有关 CPU 利用率信息的频率(以秒为单位)。
例如,每 4 秒检查一次 CPU 使用率:
$ sar 4输出将如下所示,并且每 4 秒输出一个新行:
user@ubuntu1:~$ sar 4 Linux 5.0.0-23-generic (ubuntu1) 01/16/2020 _x86_64_ (1 CPU) 02:33:24 AM CPU %user %nice %system %iowait %steal %idle 02:33:25 AM all 9.09 0.00 0.00 0.00 0.00 90.91要使 sar 在一定数量的输出后停止,请指定第二个数字。例如:
$ sar 2 5这将使 sar 每 2 秒检查一次 CPU 使用率,共 5 次。它还会在输出末尾显示所有 5 个探头的平均值。
图形化监控如果您使用桌面客户端或安装了 GUI,则应该有一个图形工具用于监控系统使用情况。 Ubuntu 默认使用 Gnome 作为桌面环境,启动系统管理器的命令是:
$ gnome-system-monitor这将打开一个类似于 Window 任务管理器的窗口,您可以在其中按 CPU 使用率对进程进行排序。其他发行版和桌面环境应该有类似的工具。
Ubuntu 20.04 桌面上使用 GNOME System Monitor 进行图形监控
如何配置监控警报有很多不同的方法可以编写监视 CPU 使用情况的脚本。在本指南的这一部分中,我们将介绍一个可能的脚本,其中每分钟监控 CPU 使用情况,并将其配置为在 CPU 使用率较高时发送电子邮件。
#!/bin/bash CPU=$(sar 1 5 | grep "Average" | sed 's/^.* //') CPU=$( printf "%.0f" $CPU ) if [ "$CPU" -lt 20 ] then echo "CPU usage is high!" | sendmail admin@example.com fi该脚本使用 sed 从 sar 获取平均 CPU 空闲百分比。然后,它使用 if 函数检查空闲百分比是否低于特定数字,如果是,则会向管理员发送电子邮件。在本例中,它配置为 20% – 换句话说,如果 CPU 使用率超过 80%,管理员会收到一封电子邮件。
该脚本可以根据需要进行调整,例如您希望它向终端回显警告或记录到日志文件,而不是使用 sendmail 发送电子邮件。
当然,如果您希望它定期运行,您需要从 cron 调用此脚本。
$ crontab -e要每分钟运行一次,您需要编写以下行:
* * * * * /path/to/cpu-alert.sh 结论在本文中,我们了解了如何检查和监控 Linux 系统上的 CPU 利用率。我们了解了多种可以帮助我们进行监控的工具,还了解了如何设置使用警报,以便我们可以在 CPU 利用率较高时收到通知。
使用本指南中的各种方法,您将始终知道监视系统使用情况的最佳工具 - 无论您需要详细信息还是只需要快速查看系统如何分配 CPU。