如何使用命令行检查 Linux 中的 CPU 利用率?

linuxoperating systemopen source

简介

监控 Linux 系统的性能对于确保其以最佳状态运行至关重要。决定系统性能的关键因素之一是 CPU 利用率。

CPU 利用率是指处理器执行系统上各种进程和应用程序指令所花费的时间百分比。Linux 中有许多可用于监控 CPU 利用率的工具,但使用命令行工具可以快速有效地检查此指标。

用于检查 CPU 利用率的基本命令行工具

在 Linux 中使用命令行监控 CPU 利用率时,您有多种选择。让我们从大多数 Linux 发行版上提供的一些基本工具开始。

Top:top 命令概述以及如何使用它来检查 CPU 利用率

top 命令是一个强大的工具,用于监控系统进程,包括 CPU 利用率。运行 top 命令时,您将看到一个正在运行的进程列表,默认按 CPU 使用率(以及其他指标,例如内存使用率)排序。

您可以随时按"q"键退出。要按其他条件(例如内存使用率或进程 ID)对进程进行排序,请按"F"键并选择所需的排序选项。

$ sudo top

输出

top - 12:34:56 up 1 day, 00:00:00, 1 user, load average: 0.50, 0.75, 0.80
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 10.5 us, 3.8 sy, 0.0 ni, 84.1 id, 1.6 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem :  3963.2 total,  1023.2 free,  2056.7 used,   883.3 buff/cache
MiB Swap:  4096.0 total,  4096.0 free,     0.0 used.  1523.4 avail Mem

Htop:Htop 简介,更高级的 top 版本,拥有更多功能

如果您正在寻找比 top 更高级但仍然简单易用的工具,Htop 或许正是您所需要的。Htop 的功能与 top 类似,但还包含一些附加功能,使其更加实用。

例如,Htop 允许根据名称或状态过滤进程,并可以显示与特定进程组关联的所有线程。要使用 Htop,只需在终端中输入"htop"并按 Enter 键即可。

$ sudo htop

输出

1  [|||||                      18.6%]   Tasks: 195, 16 thr; 1 running
2  [|||||                      17.2%]   Load average: 0.74 0.89 0.93 
3  [|||||                      16.9%]   Uptime: 2 days, 3 hours, 15 mins
4  [||||||                     21.8%] 
5  [|||||                      18.7%]   Mem[||||||||||||||| 1.67G/7.79G]
6  [||||                       12.4%]   Swp[|                      0K/0K]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1370 root       20   0  3.1G  437M  136M S 10.1  5.6 12:48.24 /usr/bin/compiz
 2398 john       20   0  1.8G  272M   76M S  8.3  3.5  5:21.53 /usr/bin/firefox

Glances:Glances 概述,一款包含 CPU 利用率信息的综合系统监控工具

Glances 是一款比 top 或 htop 更全面的系统监控工具。它提供系统性能的实时信息,包括 CPU 利用率。

Glances 还能提供磁盘使用率、网络活动和内存使用率的信息。要使用 Glances,只需在终端中输入"glances"并按 Enter 键即可。

$ glances

输出

CPU:[##### ] 45.2%

总的来说,这些基本工具应该能够提供足够的功能来监控大多数 Linux 系统的 CPU 利用率。但是,如果您需要更高级的功能,例如进程跟踪或分析,您可能需要考虑我们接下来介绍的一些更专业的工具。

用于检查 CPU 利用率的高级命令行工具

Perf:强大的性能分析工具

Perf 是一款强大的性能分析工具,可用于监控和分析系统性能的各个方面,包括 CPU 利用率。它提供了丰富的功能,可用于分析应用程序、内核跟踪和硬件事件监控。Perf 可以帮助您识别 CPU 使用率瓶颈、追踪硬件问题并优化系统性能。

要使用 perf,您需要在 Linux 系统上安装 perf 工具。您可以使用发行版的软件包管理器进行安装。

$ perf stat -e cpu-clock python my_script.py

Performance counter stats for 'python my_script.py':
   10,387,682,725      cpu-clock (msec)          # CPU clock cycles
      0.498089      seconds time elapsed

Sysstat:跟踪系统活动

Sysstat 是一个包含 sar(系统活动报告器)的工具集合,可用于收集和报告系统活动,包括随时间变化的 CPU 利用率。sar 收集各种系统统计信息,例如 CPU 使用率、内存使用率、磁盘 I/O 操作、网络流量等。

要使用 sar,您需要在 Linux 系统上安装 sysstat 软件包。您可以使用发行版的软件包管理器进行安装。

安装后,sar 会在后台自动运行并定期收集数据。您可以使用"sar"命令,并结合各种选项(例如时间范围 (-s start_time -e end_time) 或输出格式 (-o output_file))来查看 sar 报告。

$ sar -u 1 5

输出

Linux 5.4.0-81-generic (hostname)    06/17/23    _x86_64_    (2 CPU)

07:36:19 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:36:20 AM     all      3.25      0.00      0.75      0.00      0.00     95.00
07:36:21 AM     all      2.50      0.00      0.50      0.00       0.00     97.00
07:36:22 AM     all      1.50      0.00      0.50      0.00       0.00     98.00
07:36:23 AM     all      2.50      0.00      0.00      0.00       0.00     97.50
07:36:24 AM     all      3.50      0.00      0.00      0.00       0.00     96.50
Average:        all      2.85      0.00      0.35      0.00       0.00     96.90

检查 CPU 利用率的利基子主题

使用 awk 或 Grep 命令结合 top 或 Htop 输出来过滤和提取有关 CPU 使用率的特定信息

虽然 top 和 htop 命令可以深入了解系统的整体 CPU 利用率,但有时我们可能需要进一步深入挖掘并提取更具体的信息。这就是 awk 和 grep 的强大之处。这些命令可用于根据特定条件过滤 top 或 htop 输出,例如按进程名称排序或仅显示活动进程。

例如,如果我们只想显示 CPU 使用率超过特定阈值的进程,我们可以使用 awk 和以下命令 -

$ top -b -n 1 | awk '{if ($9 > 10) print}'

此命令将仅显示 CPU 使用率大于 10% 的进程。我们也可以使用 grep 命令和 Top 命令来筛选出特定的进程名称。

使用 Pidstat 或 ps 命令监控单个进程

通常,仅仅监控系统整体 CPU 利用率是不够的。有时我们需要关注那些可能占用过多 CPU 资源的单个进程。

这时 pidstat 就派上用场了。 pidstat 命令允许我们监控单个进程的统计数据,包括一段时间内的 CPU 利用率。

要监控特定进程,只需运行以下命令 -

$ pidstat -p [进程 ID] [间隔] [计数]

这将为我们提供该特定进程在给定时间间隔内指定计数的资源消耗的详细报告。或者,我们可以使用 ps 命令及其 aux 选项,该选项提供所有正在运行的进程的详细信息,包括它们的 PID 以及其他相关细节,例如内存/CPU 使用率等。

$ ps aux

通过将这些小主题与 top 和 htop 等基本工具结合使用,我们可以更深入地了解系统的 CPU 利用率,并采取措施进行优化以提高性能。

结论

使用命令行工具检查 Linux 中的 CPU 利用率可以提供有关系统性能的宝贵信息,并帮助诊断进程或组的问题。虽然像 top 和 htop 这样的基本工具可以为大多数用户提供足够的信息;但像 perf 或 sysstat 这样的高级工具可以提供更详细的性能指标洞察。

通过了解用户、系统和空闲时间等细节,并结合使用合适的命令行工具来检查 CPU 利用率;系统管理员或用户可以保持系统以最佳状态运行,并在排除性能问题时做出明智的决策。总而言之,定期监控 CPU 利用率可以确保您充分利用资源,同时尽可能保持程序的顺畅运行!


相关文章


有用资源