网站搜索

使用 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/CentOSFedora中,您需要首先启用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/系统性能监控。

  1. 根据 Linux 中内存和 CPU 使用率最高的情况查找运行最多的进程
  2. Cpustat – 通过在 Linux 中运行进程来监控 CPU 利用率
  3. CoreFreq – 适用于 Linux 系统的强大 CPU 监控工具
  4. 根据 Linux 中内存和 CPU 使用率最高的情况查找运行最多的进程
  5. 20 个监控 Linux 性能的命令行工具
  6. 13 个 Linux 性能监控工具 – 第 2 部分

相比之下,经过测试CPUTool和CPULimit,我们发现前者提供了更有效、更可靠的“进程CPU使用限制”功能。

这是根据针对给定进程运行这两个工具后观察到的 CPU 使用率百分比范围得出的。尝试这两种工具,并使用下面的反馈表将您的想法添加到本文中。