如何限制使用cpulimit进程的CPU使用(Debian / Ubuntu)
本教程将介绍如何使用Debian / Ubuntu上的工具cpulimit限制进程的CPU使用情况。 cpulimit是一个简单的程序,尝试限制进程的CPU使用率(以百分比表示,而不是cpu时间)。 当您不希望他们吃太多的CPU时,这对控制批处理作业是有用的。 它不会对漂亮的值或其他调度优先级的东西,而是真正的CPU使用情况。 此外,它能够自动适应整个系统的负载,动态和快速。
我不会保证这将为您工作!
1初步说明
我将以root用户身份在本教程中运行所有命令,因此可以直接以root用户身份登录(Debian)或成为root(Ubuntu):
sudo su
如果您的机器有一个处理器,您可以将百分比从0%限制为100%,这意味着如果您设置为50%,则您的进程每秒不能使用超过500 ms的cpu时间。 但如果您的机器有四个处理器,百分比可能在0%到400%之间变化,因此将极限设置为200%意味着不超过一半的可用功率。 在任何情况下,百分比与您在运行顶部时看到的相同。
cpulimit应至少运行与运行受控进程的同一用户。 但是,如果以root用户身份运行cpulimit,以便拥有更高的优先级和更精确的控制,这将会更好。
2安装cpulimit
cpulimit可用作Debian和Ubuntu的软件包,因此可以安装如下:
aptitude install cpulimit
3使用cpulimit
看看cpulimit手册页,了解如何使用它:
man cpulimit
NAME
cpulimit -- limits the CPU usage of a process
SYNOPSIS
cpulimit TARGET [OPTIONS...]
DESCRIPTION
TARGET must be exactly one of these:
-p, --pid=N
pid of the process
-e, --exe=FILE
name of the executable program file
-P, --path=PATH
absolute path name of the executable program file
OPTIONS
-l, --limit=N
percentage of CPU allowed from 0 to 100 (mandatory)
-v, --verbose
show control statistics
-z, --lazy
exit if there is no suitable target process, or if it dies
-h, --help
display this help and exit
EXAMPLES
Assuming you have started "foo --bar" and you find out with top(1) or ps(1) that this process uses all your CPU
time you can either
# cpulimit -e foo -l 50
limits the CPU usage of the process by acting on the executable program file (note: the argument "--bar" is
omitted)
# cpulimit -p 1234 -l 50
limits the CPU usage of the process by acting on its PID, as shown by ps(1)
# cpulimit -P /usr/bin/foo -l 50
same as -e but uses the absolute path name
AUTHOR
This manpage was written for the Debian project by gregor herrmann <gregor+debian@comodo.priv.at> but may be used
by others.
现在我们假设我们要将进程apache2
限制在30%。 这是我们的做法:
cpulimit -e apache2 -l 30
-e
开关采用可执行程序文件的名称。 您可以从top
命令的输出中获取该名称。
而不是使用可执行程序文件的名称,我们可以使用-p
开关的进程ID。 您可以找到apache2
进程的进程ID如下:
ps aux
要么
ps aux | grep apache2
我们假设apache2
进程ID是4510
; 那么我们可以将该过程限制为30%的CPU使用率,如下所示:
cpulimit -p 4510 -l 30
而不是使用进程ID( -p
)的可执行文件( -e
)的名称,我们也可以使用-P
开关将可执行程序文件的绝对路径名传递给cpulimit; apache2
可执行文件的绝对路径名是/ usr / sbin / apache2
,所以我们使用以下命令:
cpulimit -P /usr/sbin/apache2 -l 30
请注意,cpulimit将运行在终端的前台,直到您使用CTRL + C
终止它 - 终止它也将删除任何CPU限制。
4链接
- cpulimit: http : //cpulimit.sourceforge.net/