如何通过cpulimit限制进程的CPU使用率(Debian / Ubuntu)

如何限制使用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链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏