如何测量Linux进程的平均CPU利用率
有时您可能想了解特定 Linux 进程的 CPU 使用情况。由于进程的 CPU 使用率在其生命周期内可能会波动,因此您需要测量该进程的平均 CPU 使用率或 CPU 利用率。为此,名为 sysstat 的 Linux 工具集可能会派上用场,它包含 Linux 性能监控工具的集合,报告磁盘 I/O、CPU、内存、网络和其他系统活动的统计信息。 sysstat
中包含的实用程序之一是 pidstat
,它可以测量 Linux 进程的平均 CPU 使用率。
下面让我们了解如何使用 pidstat 工具测量特定 Linux 进程的平均 CPU 使用率,或所有可用 Linux 进程的进程级 CPU 使用率。
在 Linux 上安装 sysstat
为了使用pidstat
,您需要安装sysstat
软件包,如下所示。
在 Ubuntu、Debian 或 Linux Mint 上安装 sysstat
$ sudo apt install sysstat
在 CentOS、RHEL 或 Fedora 上安装 sysstat
$ sudo yum install sysstat
从源代码构建 sysstat
如果 sysstat
软件包在您的 Linux 系统上不可用,您可以轻松地从源代码构建它,如下所示。
$ tar -xf sysstat-12.5.3.tar.gz
$ cd sysstat-12.5.3/
$ ./configure
$ make
$ sudo make install
使用 pidstat 测量进程的平均 CPU 使用率
安装 sysstat
后,您可以使用 pidstat
来测量 Linux 进程的平均 CPU 使用率,如下所示。
$ pidstat 5 -p 11579

在此示例中,我测量了 PID 11579
的 Linux 进程的平均 CPU 使用率,这是在五秒间隔内测量的。该命令将每五秒刷新一次平均 CPU 使用率。如果按 Ctrl-C
,该命令将退出并打印总体平均 CPU 使用率。输出表明该进程平均消耗单个 CPU 核心的 5.5%。 %CPU
旁边的 CPU
字段表示进程所附加的 CPU 处理器 ID(如果系统上有多个 CPU 处理器)。 %usr
和 %system
列分别指示有多少 CPU 是在用户空间或内核中执行的。
请注意,您需要提供 interval
参数(例如 5),该参数指定每个报告之间的时间间隔(以秒为单位)。如果没有间隔参数,pidstat
报告的%CPU
将是自系统启动(引导)以来一段时间内的平均 CPU 使用率。
使用 pidstat 测量系统上进程级 CPU 使用率
如果您想测量所有正在运行的进程的进程级 CPU 使用情况,只需将 -p ALL
选项与 pidstate
结合使用即可。
$ pidstat 60 -p ALL
上面的命令将每分钟报告所有正在运行的进程的平均 CPU 使用情况。

如果要将 pidstat 的输出提供给 shell 脚本,可以使用以下 bash 脚本。该脚本测量整个系统的进程级平均 CPU 使用率(一分钟内的平均值)。
#!/bin/bash
output=$(timeout 60.1 pidstat 60 -p ALL)
IFS='
'
for line in $output; do
# extract N-th column with awk
pid=`echo $line | awk '{ print $4}'` # PID
pcpu=`echo $line | awk '{ print $9}'` # percentage CPU
cpu=`echo $line | awk '{ print $10}'` # CPU ID
cmd=`echo $line | awk '{ print $11}'` # command
echo "$pid $pcpu $cpu $cmd"
done
如果您发现本教程有用,请随时在社交网络上与您的朋友分享。