如何限制Linux进程的CPU使用率
如果您是 Linux 系统管理员,有时您希望限制某个进程的 CPU 使用率,以便该进程在任何时候都不会占用超过 X% 的 CPU 资源。 cpulimit
是一个命令行 Linux 程序,它可以做到这一点,即以百分比形式限制 Linux 进程的 CPU 使用率。它作为守护进程监视指定进程的CPU使用率,并动态调整其CPU利用率。
在 Linux 上安装 cpulimit
要在 Ubuntu 或 Debian 上安装 cpulimit:
$ sudo apt-get install cpulimit
要在 Fedora 上安装 cpulimit:
$ sudo yum install cpulimit
要在 CentOS 或 RHEL 上安装 cpulimit,请首先在系统上启用 EPEL 存储库,然后运行:
$ sudo yum install cpulimit
使用cpulimit
限制进程的CPU使用率
cpulimit
的示例用法如下所示:
$ sudo cpulimit -p 8645 -l 10
$ sudo cpulimit -e /usr/local/bin/myprog -l 20
第一个命令监视 PID 为 8645
的进程的 CPU 使用率,并将其 CPU 使用率限制为 10%
。同样,第二个命令将 /usr/local/bin/myprog
的 CPU 使用率限制为 20%
。
cpulimit 程序作为用户空间守护进程运行,它向指定的 Linux 进程发送 SIGSTOP 和 SIGCONT 信号以动态调整其 CPU 使用率。请注意,cpulimit
必须由 root 或被监视进程的所有者执行。从概念上讲,cpulimit
的工作原理如下。
while (1) {
wait for some time
send SIGSTOP to the process
wait for some time
send SIGCONT to the process
}
Debian 测试表明 cpulimit
不支持 SMP。也就是说,指定 -l X
实际上意味着X%
的一个 CPU。例如,如果您在双核计算机上设置 -l 100
,则会将可用 CPU 资源的使用限制为 50%
。
请注意,cpulimit
不适用于某些特定的内核进程,例如 kcryptd
或 kworker
,它们只是忽略 SIGSTOP
信号。