压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明
一、说明
我们的MySQL实例在备份后需要将数据打包压缩,部分低配机器在压缩时容易出现CPU打满导致报警的情况,需要在压缩文件时进行CPU资源的限制。
因此针对此问题进行了相关测试,就有了此文章。
二、测试过程
0. 正常打包
正常打包压缩操作:
[root@mysql-test data1]$ du -sh 5555
34G 5555
[root@mysql-test data1]$ tar -czf 5555.tar.gz 5555
打包压缩过程中的CPU占用:

1. nice 命令打包
nice 命令用于设定进程的优先级,取值范围[-20,19],-20为最高,19为最低。
使用nice命令:
[root@mysql-test data1]$ du -sh 5555
34G 5555
[root@mysql-test data1]$ nice -n 19 tar -czf 5555.tar.gz 5555
过程中CPU占用:

- 第4列 NI 列为19,表示优先级,此时已经是使用了最低优先级
- 由于平时并没有太多的任务进行(夜间备份期间更是如此),因此即使设置了最低优先级,依旧占用CPU较高
2. cpulimit 命令打包
cpulimit 可以为进程设置CPU使用率上限值并实时监控,若超出上限则暂停运行一段时间
使用该命令需要先进行安装:
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin
a. 安装后使用如下命令测试:
cpulimit -l 60 tar -czf 5555.tar.gz 5555 # 限制进程CPU占用率上限为60%
结果如下:

- cpulimit 只针对单个进程进行限制,而gzip是另一个子进程,因此无效
b. 使用进程号进行限制:
先进行正常打包压缩操作:
tar -czf 5555.tar.gz 5555
找到该任务的gzip进程,使用cpulimit:
[root@mysql-test data1]$ cpulimit -l 60 -p 1695
Process 1695 found
CPU使用率被限制在60%:

3. cgroups 命令集
Linux 内核提供的一种机制,利用它可以指定一组进程的资源分配,不限于CPU
该命令只在多个进程争抢资源时才生效,因此在此不再测试,有兴趣同学可自行研究,或参考最后链接的文章。
三、结论对比
nice与cgroups命令适用于多个进程任务争抢CPU资源时,进行资源的分配与限制;而只有单一进程任务时依旧会最大限度占用资源cpulimit针对单个进程生效,可以设定单个进程对CPU资源的使用率上限
四、参考文章
http://www.linuxidc.com/Linux/2015-01/112382.htm
https://my.oschina.net/feicuigu/blog/1509639
压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明的更多相关文章
- ASP.NET 使用 plupload 上传大文件时出现“blob”文件的Bug
最近在一个ASP.NET 项目中使用了plupload来上传文件,结果几天后客户发邮件说上传的文件不对,说是文件无法打开 在进入系统进行查看后发现上传的文件竟然没有后缀,经过一番测试发现如果文件上传的 ...
- pandas读取大文件时memoryerror的解决办法
再用pd.read_csv读取大文件时,如果文件太大,会出现memoryerror的问题. 解决办法一:pd.read_csv的参数中有一个chunksize参数,为其赋值后,返回一个可迭代对象Tex ...
- 优化 UltraEdit 打开大文件时的性能
UltraEdit 原本就是被设计成可以打开超大文件的工具,只不过在默认情况下需要进行以下优化设置: 禁止临时文件 禁止显示行号 禁止文件(回车 & 换行符)转换 禁止代码折叠 禁止显示函数列 ...
- ASP.NET MVC 上传大文件时404
前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传. 后来服务器升级到windows 2008,改为IIS7后,上传文件一旦超过30M ...
- Git Compare with base,比较大文件时,长时间等待,无法加载
问题 当使用Git比较一个大文件(几十兆数量级)版本见差异时,会一直等待加载,且内存消耗很大,导致其他进程很难执行.任务管理器中,可以看到此时的TortoiseGitMerge吃掉3G左右的内存. 原 ...
- .NET上传大文件时提示Maximum request length exceeded错误的解决方法
使用IIS托管应用程序时,当我们需要上传大文件(4MB以上)时,应用程序会提示Maximum request length exceeded的错误信息.该错误信息的翻译:超过最大请求长度. 解决方法: ...
- ElementTree 解析xml(minidom解析xml大文件时,MemoryError)
在使用minido解析xml文件时,因为文件过大,结果报错MemoryError.查询后得知是因为minidom在解析时是将所有文件放到内存里的,很占用内存,所以要考虑换一种方法来处理xml文件. ...
- 批量上传文件或者上传大文件时 gateWay报错DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
一.描述 最近在批量上传文件时网关出现了异常,后面发现上传大文件也会出现文件超过256发生异常,异常信息如下: org.springframework.core.io.buffer.DataBuffe ...
- WebUploader上传大文件时,上传出错问题
上传普通文件没有问题,当文件达到一定大小的时候,上传错误,返回结果是404,我可以肯定的是路径是没有问题的.因为上传小文件等都是可以的. 然后使用webuploader的uploaderror监控错误 ...
随机推荐
- layer弹框在实际项目中的一些应用
官方介绍:layer至今仍作为layui的代表作,受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力.目前,l ...
- Graphics processing architecture employing a unified shader
FIELD OF THE INVENTION The present invention generally relates to graphics processors and, more part ...
- oracle表空间查询维护命令大全之中的一个(数据表空间)史上最全
表空间是数据库的逻辑划分,一个表空间仅仅能属于一个数据库. 全部的数据库对象都存放在建立指定的表空间中.但主要存放的是表, 所以称作表空间.在oracle 数据库中至少存在一个表空间.即S ...
- error: openssl/md5.h: No such file or directory
出现:error: openssl/md5.h: No such file or directory 原因是openssl-devel没有安装,运行: yum install libssl-dev 就 ...
- M创aterial Design作风Android申请书--创建列表和卡
本人全部文章首先公布于个人博客,欢迎关注,地址:http://blog.isming.me 上次说过使用主题,应用Material Design的样式,同一时候卡片布局也是Material Desig ...
- Excel创button宏调用
今天,匆匆写了一个宏,但发现已被用来创建button开发工具菜单不见了. 在十分钟找Excel转了个遍,终究Excel通常使用在中的选项,首先Mark下一个,离开同样找不到鞋. 几个截面图.促进突然, ...
- sdk manager 打不开
解决方法1: 提示 [SDK Manager] Failed to convert path to a short DOS path: C:\windows\system32\java.exe 打开t ...
- python 简单的Socket编程
python 编写server的步骤: 1第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket(family, type ) family参数代表 ...
- NS2网络模拟(7)-homework03.tcl
1: #NS2_有线部分\homework03.tcl 2: 3: #Create a simulator object 4: set ns [new Simulator] 5: 6: #Define ...
- 2014辛星在读CSS第八节 使用背景图片
这应该是系统CSS本教程的最后一节,为什么,由于本节.我觉得基础已经完成,接下来的就是无休止的战斗,战斗非常难用知识讲出来,通过积累,战斗经验.这些都不是说出来. 伟大,下来说一下用CSS加入背景图片 ...