使用nice,cpulimit和cgroups限制进程CPU使用率

栏目: 服务器 · Linux · 发布时间: 5年前

内容简介:大多数进程以相同的优先级启动,Linux内核在处理器上均匀地为每个任务安排时间。有一个CPU密集型进程可以以较低的优先级运行吗?然后你需要告诉调度程序有关它!至少有三种方法可以控制进程获得的CPU时间:

大多数进程以相同的优先级启动,Linux内核在处理器上均匀地为每个任务安排时间。有一个CPU密集型进程可以以较低的优先级运行吗?然后你需要告诉调度程序有关它!

至少有三种方法可以控制进程获得的CPU时间:

  • 使用nice命令手动降低任务的优先级。
  • 使用cpulimit命令重复暂停执行进程,使其不超过某个限制。
  • 使用 Linux 的内置控制组,这种机制告诉调度程序限制进程可用的资源量。

nice

nice命令调整进程的优先级,使其运行频率降低。当您需要将CPU密集型任务作为后台或批处理作业运行时,这非常有用。程度范围从-20(最有利的调度)到19(最不利的)。Linux上的进程默认情况下以0的良好状态启动。nice命令(没有任何附加参数)将启动一个程度为10的进程。在该级别,调度程序将其视为优先级较低的任务并为其提供较少的CPU资源。

Nice有一个名为的相关命令renice。它改变了已经运行的进程的niceness级别。要使用它,找出占用所有CPU时间的进程的PID(使用ps),然后运行renice:

renice +10 1234

其中1234是PID。

CPULimit

cpulimit工具通过以不同的间隔暂停进程来限制进程的CPU使用率,以使其保持在定义的上限之下。它通过向进程发送SIGSTOP和SIGCONT信号来实现此目的。它不会更改nice进程的值,而是监视和控制实际的CPU使用情况。

当您想要确保进程不使用超过CPU的某个部分时,cpulimit非常有用。

相比nice的缺点是当系统空闲时,进程无法使用所有可用的CPU时间。

安装:

wget -O cpulimit.zip https:<font><i>//github.com/opsengine/cpulimit/archive/master.zip</i></font><font>
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin
</font>

上面的命令将从GitHub下载源代码,解压缩归档文件,构建二进制文件并将其复制到/usr/bin。

cpulimit的使用类似nice的方式,但是您需要使用'-l'参数显式定义进程的最大CPU限制。

可以通过使用'-p'参数指定其PID来限制当前正在运行的进程。例如

cpulimit -l 50 -p 1234

其中1234是PID。

cgroup

控制组(cgroup)是Linux内核功能,允许您指定内核应如何将特定资源分配给一组进程。使用cgroup,您可以指定驻留在特定组中的进程可以使用多少CPU时间,系统内存,网络带宽或这些资源的组合。

控制组的优势超过nice或者cpulimit是限制应用于一组进程,而不是仅应用于一个进程。此外,nice或cpulimit仅限制进程的CPU使用率,而cgroup可以限制其他进程资源。

通过明智地使用cgroup,可以控制服务器的整个子系统的资源。例如,在为大规模服务器部署而设计的最小Linux发行版CoreOS中,升级过程由cgroup控制。这意味着下载和安装系统更新不会影响系统性能。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

小白学运营

小白学运营

刘异、伍斌、赵强 / 电子工业出版社 / 2015-9-1 / 49.00元

《小白学运营》是针对网络游戏行业,产品运营及数据分析工作的入门读物,主要为了帮助刚入行或有意从事游戏产品运营和数据分析的朋友。 《小白学运营》没有烦琐的理论阐述,更接地气。基础运营部分可以理解为入门新人的to do list;用户营销部分则是对用户管理的概述,从用户需求及体验出发,说明产品运营与用户管理的依附关系;数据分析实战中,侧重业务分析,着重阐述的是分析框架,以虚拟案例的方式进行陈述,......一起来看看 《小白学运营》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具