如何在Ubuntu中限制单个进程的CPU使用率

1,185 阅读2分钟

你可以通过使用一个叫做 "cpulimit "的工具来限制Ubuntu中某个特定进程的最大CPU使用率。 这对于有个别进程对系统资源造成压力的系统非常有用,你需要腾出一些力量让系统的其他进程正常运行,在你有终端访问权和root或sudo证书的网络托管环境中尤其有用。

在我们开始之前,本教程假定以下内容:

  1. 你正在运行Ubuntu 16Ubuntu 18操作系统。
  2. 你有rootsudo权限。

1.更新apt-get并安装cpulimit。

第一步是更新你的apt-get软件库并安装cpulimit工具。

apt-get update && apt-get install cpulimit

sudo apt-get update && sudo apt-get install cpulimit

你可以通过使用dd 命令来模拟一个将占用你大部分cpu的进程。

dd if=/dev/zero of=/dev/null &

2.找出你想限制的进程的PID或名称。

使用top 命令找出你想用cpulimit工具限制的进程的PID(进程ID)或名称。

记下你想用cpulimit限制的进程的PID或COMMAND栏中的值。

3.限制已确定的进程的cpu使用率。

现在你可以用几种不同的方式来限制已识别进程的cpu。通过使用PID或者通过使用进程名称/命令。

要使用进程/命令,其中-e 是进程名称/命令,--limit 是在cpulimit 开始之前的最大cpu使用量,--cpu 是分配给你的系统的cpu数量。--cpu 的值是可选的,因为cpulimit 一般来说可以自动检测。 但是,如果你遇到它不能正确限制cpu使用率的问题,请杀死cpulimit 进程,并再次运行它,包括--cpu 值。-b 允许你在运行命令行后继续使用。

cpulimit -e dd --limit 50 --cpu 1 -b

cpu limited to 50% for the dd command

你所限制的进程现在将运行不超过你用cpulimit 命令设置的限制的百分之几。

你也可以通过使用-p ,而不是-e ,使用pid进行限制。

cpulimit -p 14421 --limit 50 --cpu 1 -b

要标记整个进程组,你可以标记-P值,使用任何一个运行中的进程的PID,例如php-fpm 进程或apache2 ,例如:

pidof php7.3-fpm
2442 3412 3110 3226
cpulimit -P 2442 --limit 50 --cpu 1 -b
重要提示

如果你打算在cronjob或脚本中使用这个命令,你应该注意,每次你运行这个命令都会产生一个新的进程。 如果你不希望有一百万个运行中的cpulimit进程,请确保杀死任何不必要的进程。