使用 CPULimit 工具限制 Linux 中进程的 CPU 使用率
在之前的文章中,我们解释了 CPUTool 用于限制和控制 Linux 中任何进程的 CPU 使用率。如果 CPU/系统负载超出定义的阈值,它允许系统管理员中断进程(或进程组)的执行。在这里,我们将学习如何使用名为cpulimit的类似工具。
Cpulimit 用于限制进程的 CPU 使用率,其方式与 CPUTool 相同,但与同类工具相比,它提供了更多的使用选项。一个重要的区别是 cpulimit 不像 cputool 那样管理系统负载。
建议阅读: 在 Linux 上获取 CPU 信息的 9 个有用命令
安装 CPULimit 以限制 Linux 中进程的 CPU 使用率
CPULimit 可以使用包管理工具从 Debian/Ubuntu 及其衍生产品的默认软件存储库进行安装。
sudo apt install cpulimit
在RHEL/CentOS和Fedora中,您需要首先启用EPEL存储库,然后安装cpulimit,如图所示。
# yum install epel-release
# yum 安装 cpulimit
使用 CUPLimit 限制进程 CPU 使用
在本小节中,我们将解释 cpulimit 的工作原理。首先,让我们运行一个命令(与我们在介绍 cputool 时查看的dd 命令相同),这应该会在后台产生较高的 CPU 百分比(请注意,运行该命令后会打印出进程 PID) 。
dd if=/dev/zero of=/dev/null &
[1] 17918
接下来,我们可以使用top或glances工具输出正在运行的Linux系统的实际频繁更新状态,来观察上述命令的CPU使用率。
top
查看上面的输出,我们可以看到 dd 进程使用的 CPU 时间百分比最高100.0%。
但我们可以使用 cpulimit 来限制它,如下所示。 --pid
或 -p
选项用于指定 PID,--limit
或 -l
是用于设置进程的使用百分比。
以下命令将dd 命令 (PID 17918) 限制为一个CPU 核心的50% 使用。
sudo cpulimit --pid 17918 --limit 50
Process 17918 detected
一旦我们运行了 cpulimit,我们就可以通过 top 或 Glaces 查看 dd 命令的当前 CPU 使用情况。从输出来看,该值的范围为(51.5%-55.0% 或稍高)。
我们可以按如下方式第二次限制其 CPU 使用率,这次进一步降低百分比,如下所示:
sudo cpulimit --pid 17918 --limit 20
Process 17918 detected
正如我们之前所做的那样,我们可以运行 top 或 Glaces 来查看该进程的新 CPU 使用率,其范围为 20%-25.0% 或稍超出此范围。
top
注意:shell 变为非交互式 - 当 cpulimit 运行时不需要任何用户输入。要终止它(这应该停止 CPU 使用限制操作),请按 [Ctrl + C]
。
要将 cpulimit 作为后台进程运行,请使用 --background
或 -b
开关,释放终端。
sudo cpulimit --pid 17918 --limit 20 --background
要指定系统上存在的 CPU 核心数,请使用 --cpu
或 -c
标志(通常会自动检测到)。
sudo cpulimit --pid 17918 --limit 20 --cpu 4
我们可以使用 --kill
或 -k
选项来终止进程,而不是限制进程的 CPU 使用率。默认发送到进程的信号是 SIGCONT,但要发送不同的信号,请使用 --signal
或 -s
标志。
sudo cpulimit --pid 17918 --limit 20 --kill
要在没有合适的目标进程或进程终止时退出,请包含 -z
或 --lazy
,如下所示。
sudo cpulimit --pid 17918 --limit 20 --kill --lazy
有关其他信息和使用选项,请查看 cpulimit 手册页。
man cpulimit
请查看以下有用的指南来查找 CPU 信息和 CPU/系统性能监控。
- 根据 Linux 中内存和 CPU 使用率最高的情况查找运行最多的进程
- Cpustat – 通过在 Linux 中运行进程来监控 CPU 利用率
- CoreFreq – 适用于 Linux 系统的强大 CPU 监控工具
- 根据 Linux 中内存和 CPU 使用率最高的情况查找运行最多的进程
- 20 个监控 Linux 性能的命令行工具
- 13 个 Linux 性能监控工具 – 第 2 部分
相比之下,经过测试CPUTool和CPULimit,我们发现前者提供了更有效、更可靠的“进程CPU使用限制”功能。
这是根据针对给定进程运行这两个工具后观察到的 CPU 使用率百分比范围得出的。尝试这两种工具,并使用下面的反馈表将您的想法添加到本文中。