如何控制生成WMV时的CPU临时用地占用基本农田率

让cpu占用率曲线听你指挥学习笔记
我的图书馆
让cpu占用率曲线听你指挥学习笔记
1.写一个程序,让用户决定windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,机器语言不限。例如:可实现一下三种情况:(1)CPU的占用率固定在50%,为一条直线;(2)cpu的占用率为一条直线,具体占用率由命令行参数决定(参数范围为1-100);(3)CPU的占用率状态是一条正弦曲线。2分析与解法:让我们仔细思考写程序时曾经遇到的问题,如果不小心写了一个死循环,CPU占用率会跳到最高,并且一直保持在100%,我们也可以打开任务管理器,实际观测一下它是怎么样变动的,凭肉眼观察,它大约是1S重更新一次,一般情况下,CPU使用率会很低,但是,当用户运行一个程序,执行一些复杂的操作的时候,CPU的使用率就会急剧升高,当用户晃动鼠标时,CPU的使用率也有小幅度的变化。那当任务管理器报告CPU的使用率为0的时候,谁使用CPU呢,通过任务管理器的进程(PROCESS)一栏可以看到,system idle process占用CPU空闲的时间,这个学习过操作系统的娃肯定熟悉不过了哈。系统那么多进程,他们什么时候能够闲下来,答案很简单,这些程序或者在等待用户的输入,或者在等待某些事情的发生,或者主动进入休眠状态咯。在任务管理器的一个刷新周期内,CPU忙(执行应用程序)的时间和刷新周期时间的比率就是CPU的占用率,也就是说,任务管理器中显示的是每个刷新周期内的CPU占用率的统计平均值。因此我们可以写一个程序,让它在任务管理器的刷新期间内一会儿忙,一会儿闲。然后调节忙/闲的比例,就可以控制任务管理器中显示CPU占用率。(1)解法1要操控CPU的使用率曲线,就需要使CPU在一段时间内(根据task manager的采样率跑BUSY与IDLE两个不同的循环(loop)),从而通过不同的时间比例,来调节CPU使用率。BUSY LOOP可以通过空循环来实现,idle可以通过sleep()来实现问题的关键在于如何控制两个loop的时间,我们先测试sleep一段时间,然后循环N次,估算N的值。那么对于一个空循环for(int i=0;i&n;i++);又该如何估算这个最合适的N值呢,我们知道cpu执行的是机器指令,而最接近机器指令的语言是汇编语言,所以我们可以先把这个空循环简答的写成如下汇编代码后再进行分析:loop:mov dx,iinc dxmov i,dxcmp i,njl loop&&&&&&&&&& ;i&n时重复循环我的CPU是1.28GHZ(1.28*109次个时钟周期每秒)。现在COU每个时钟周期可以执行两条以上的代码,我们取平均值2条,于是有(*2)/5=(循环每秒),也就是说CPU一秒钟可以运行这个空循环次,但是我们还是不能够将N=,然后sleep(1000)了事,如果我们把CPU工作1s,然后休息1s钟,波形很有可能是锯齿型的,先达到一个峰值,然后跌倒一个很低的占用率。我们尝试降低两个数量级,令N=,而睡眠时间则相应的改为10ms& sleep(10),用10ms的原因是因为比较接近windows的调度时间片,如果选的太小,比如1ms,就会造成线程频繁的被唤醒和挂起,无形中又增加了内核时间的不确定性。本人试过,在N=的时候cpu占用率=100%n=时候cpu占用率≈95%,n=5120000时候,cpu占用率≈50%代码清单如下:#include "Windows.h"#include "stdlib.h"#include "math.h"int main(){&&& for(; ;)&&& {&&& &&& for(int i=0;i&5120000;i++)&&& &&& &&& ;&&& &&& Sleep(10);&&& }&&& return 0;}
只是约等于哈,因为 我电脑还有点其它东西,做这个程序的时候最好把其它程序乱七八糟的全部关了,才能得到最好的数据,之后就是一直停在50%。在不断调整5120000的参数后,我们就可以在一台指定的机器上获得一条大致稳定的50%CPU占用率曲线。使用这种方法要注意两点影响:A:尽量减少sleep/awake的频率,以减少操作系统内核调度程序的干扰;B:尽量不要调用system call(比如I/O这些privilege instruction),因为她会导致很多不可控的内核运行时间。该方法的缺点也很明显:不能适应机器差异性。一旦换了一个CPU我们又得重新估算N值。解法2:使用GetTickC我们知道GetTIckCount()可以得到系统启动到现在所经历时间的毫秒值,最多能统计到49.7天。我们可以利用GetTickCount()来判断busy loop 要循环多久代码如下所示#include "Windows.h"#include "stdlib.h"#include "math.h"#define ture 1int main(){&&& int& busyTime=10;&&& int idleTime=busyT&& //same ratio will lead to 50%cpu usage&&& _int64 startTime=0;&&& while(ture)&&& {&&&&&&&& startTime=GetTickCount();&&&&&&&& while((GetTickCount() - startTime)&=busyTime)&&&&&&&&&&&&&&&&&&& ;//idle loop&&&&&&&& Sleep(idleTime);&&&& &&& }&&& return 0;}
这两种解法都是假设目前系统上只有当前程序在运行,但是实际上操作系统中有很多很多的程序会同时执行各种各样的任务吗,如果此时其它进程使用了10%,那么这个程序只能使用40的CPU,这样才能达到50%的效果----此时需要一个工具,Perfmon.exeperfmon是从windows NT开始就包含在windows管理工具组中的专业检测工具之意,perfmon可获取有关操作系统,应用程序以及硬件的各种效能计数器(perf counter)Perfmon的用法相当直接,只要选择你索要检测的对象,(比如:处理器、ram或者硬盘),或者选择效能计数器(比如监视物理磁盘的平均队列长度)即可。我们可以通过写程序来查询Perfmon的值,Microsoft .net framework提供了performanceCounter这一对象,可以方便的得到当前各种性能数据,包括CPU的使用率,代码清单如下:// c# code static void MakeUsage(float level){&&& && PerfomanceCountwe p=new PerformanceCounter("Processor","%Processor Time","Total");&&& & & if(p==NULL)&&&& {& & & & return&& && }& && while(ture)& & {& & & && if (p.NextValue()&level)&&&&&&&& System.Threading.Thread.Sleep(10);& & }}这个似乎是一段c#代码,没学过,也不晓得该带什么头文件,因此没有实验过好吧,现在可以画一段美好的正弦曲线了:#include "Windows.h"#include "stdlib.h"#include "math.h"#include &stdio.h&#include &tchar.h&const double SPLIT=0.01;const int COUNT =200;const double PI=3.;const int INTERVAL=300;#define ture 1int _tmain(int argc,TCHAR* argv[]){&&& DWORD busySpan[COUNT];&&& DWORD idleSpan[COUNT];&&& int half=INTERVAL/2;&&& double radian=0.0;&&& for(int i=0;i&COUNT;i++)&&& {&&& &&& busySpan[i]=(DWORD)(half + (sin(PI*radian)*half));&&& &&& idleSpan[i]=INTERVAL-busySpan[i];&&& &&& radian+=SPLIT;&&& }&&& DWORD startTime=0;&&& int j=0;&&& while(ture)&&& {&&& & j=j%COUNT;&&& & startTime=GetTickCount();&&& & while((GetTickCount()-startTime)&=busySpan[j])&&& &&& & ;&&& & Sleep(idleSpan[j]);&&& & j++;&&& }&&& return 0;}用过C的人都知道每一个C的程序都会有一个main(),但有时看别人写的程序发现主函数不是int main(),而是int _tmain(),而且头文件也不是&iostream.h&而是&stdafx.h&,会困惑吧?
一起来看看他们有什么关系吧
首先,这个_tmain()是为了支持unicode所使用的main一个别名而已,既然是别名,应该有宏定义过的,在哪里定义的呢?就在那个让你困惑的&stdafx.h&里,有这么两行
#include &stdio.h&
#include &tchar.h&
我们可以在头文件&tchar.h&里找到_tmain的宏定义
#define _tmain
所以,经过预编译以后, _tmain就变成main了,这下明白了吧(我的编译器里找不到&stdafx.h&所以我直接#include &stdio.h& #include &tchar.h&这两个东西进去,编译成功,搞定。 )这个就是编译出来的东西讨论问题:假如机器是多个cpu像现在很多电脑都是双核神马的,如何才能在多cpu时显示同样的状态,例如在双核的机器上,如果让一个单线程的程序死循环,能让两个cpu的使用率达到50%的水平吗?为什么?。。。。。我也不知道,我的电脑是单核的多cpu的问题首先需要获得系统的CPU的信息,可以使用GetProcessInfo()获得多处理器的信息,然后指定进程在那一个处理器上运行,其中制定运行的是SetThreadAffintyMask()函数。另外,还可以使用RDTSC指令获得CPU核心运行周期数。在x86上定义函数:inline _int64 GetCPUTickCount(){
}}在x86平台上定义:#define GetCPUTickCount() _rdtsc()
使用CalNtPowerInformation API得到cpu的频率,从而将周期数转化为毫秒数,如下面所示:_PROCESSOR_POWER+INFORMATION info;CallNTPowerInformation(11,
Sizeof(info));
_int64 t_begin =GetCPUTickCount();
_int64 t_end =GetCPUTickCount();
double millsec=((double)t_end-(double)t_begin)/(double)info.CurrentMRDTSC指令读取当前CPU的周期数,在多CPU系统中这个周期数在不同的CPU之间的基数不同,频率可能也不同,用从两个不同的CPU得到的周期数来计算会得到没用意义的值。如果线程在运行在被调度到了不同的CPU就会出现上述的情况,可用SetThreadAffinityMask避免线程迁移。另外cpu的频率会随系统供电以及负荷有所调整。总结:线程/进程/系统效能的API大致有以下这些:1.Sleep()---这个方法能够让当前线程“停”下来2.WaitForSingleObject()--自己停下来等待某个事件的发生3.QueryPerformanceFrequency(),QueryPerformanceCounter()--让你访问到精度更高的CPU数据4.GetTickCount()----dida5.timeGetSystemTime()--另一个得到高精度时间的方法6.PerformanceCounter---效能计数器7.GetProcessorInfo()/SetThreadAffinityMask()遇到多核问题怎么办呢,这两个帮你更好的控制CPU8.GetCPUTickCount()想拿到COU核心运行周期数吗,用这个方法好了,这个实验over了,祝大家学习愉快
TA的最新馆藏法律顾问:
皖ICP增值电信信息业务许可证编号: 皖B2- 安徽省互联网协会会员编号:00273 网站备案:皖ICP备号-1
危害信息举报: 业务联系电话:
万维网络机房带宽支持 广德网警备案:01
Powered by
Server Time
Processed in 0.07 second(s)win7播放视频时cpu占用率高解决步骤
下面图老师小编跟大家分享win7播放视频时cpu占用率高解决步骤,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~
top1:win7播放视频时cpu占用率高解决步骤
&  1、点击开始菜单,在所有程序中找到Windows Media Player并将其打开,如图所示:  2、右键Windows Media Player窗口,选择工具&选项,如图所示:  3、打开选项窗口后,切换至性能项,取消勾选启用WMV的DirectX视频加速,如图所示:  4、最后重新切换至播放机项,将自动更新更改为每月一次,若是无法更改则不管它,接着取消勾选播放时允许运行屏幕保护程序和播放时向库添加远程媒体文件,如图所示:</
top2:win7系统优(图老师整理)化Power DVD播放效果的方法
&  1、首先我们需要先找到CyberLink PowerDVD的快捷方式,接着我们可以直接进入CyberLink PowerDVD;  2、当我们进入程序主界面的右上方点击小齿轮标志的按钮进入程序的设置;  3、看到左侧的设置类别,选择视频选项;  4、接着可进入TrueTheater特效这一栏, TrueTheaterHD前面的勾选上,并调整下面的清晰度。如果是AMD的cpu还可以勾选AMD
Accelerated Parallel Processing选项。  5、最后我们设置配置文件,根据自身需要选择原始、生动、明亮、剧院四种模式,点击确定就完成了对CyberLink
PowerDVD的画质优化设置即可。
top3:重装win7系统后怎么删除Windows.old文件夹释放C盘空间
&  重装win7系统后删除Windows.old文件的方法:  1、进入资源管理器,在C盘(有后产生的Windows.old的系统盘)右键点击属性;  2、打开C盘的属性对话框,如图,点击磁盘清理;  3、等待分析新内的垃圾文件、文件夹;  4、没有搜到大的文件,一般在10G以上,这时候可以点击清理系统文件;  5、继续扫描分析,会搜索到以前的Windows安装,勾选,然后点击确定;  6、会弹出一个确认窗口,点击删除文件;  7、此时会对C盘进行清理,包括重装系统后产生的Windows.old文件夹;  8、清理旧系统中,清理结束后去看下系统盘文件吧,这个重装系统后产生的Windows.old文件夹就不会再存在了。  补充说明:重装系统后产生的Windows.old文件夹对于新系统没有什么影响和作用,还会占用空间,所以可以删除的。& 搜索“图”或者“tulaoshi_com”加关注,每天最新的美食、、、美妆、、手工DIY等教程让你一手全掌握。推荐关注!【扫描下图可直接关注】
点击查看更多与《》相关的文章>>
下面是个超简单的如何解决XP中CPU占用率100%方法技巧教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~
XP中CPU占用率100%原因及解决方法,XP中CPU占用率100%原因及解决方法
今天图老师小编给大家展示的是QQ占用CPU资源过高问题的解决办法,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!
今天图老师小编给大家介绍下解决QQ占用CPU资源过高问题的办法,平时喜欢解决QQ占用CPU资源过高问题的办法的朋友赶紧收藏起来吧!记得点赞哦~
生活已是百般艰难,为何不努力一点。下面图老师就给大家分享SVCHOST进程CPU占用高的解决方法,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
今天图老师小编给大家精心推荐个CPU占用率高的九种可能教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
热门搜索:
PS调色 青绿的非主流色调
PS照片 阿宝色的调色教程
使用word绘制卡通美女趣味图解教程
怎样在电脑里将缩略图显示功能关闭
如今很多人都想如何利用橡皮泥捏出可爱的小鸡,不要担心,今天我就来告诉你如何解决这件事情,接下来介绍的是如何利用橡皮泥捏出可爱的小鸡,如果你对这个内容很感兴趣的话,就和我一起来学习一下吧,希望这些能够帮助到你。
如今很多人都想知道怎样制作创意礼物,不要担心,今天我就来告诉你如何解决这件事情,接下来介绍的是怎样制作创意礼物,如果你对这个内容很感兴趣的话,就和我一起来学习一下吧,希望这些能够帮助到你。
如今很多人都节日应该送什么礼物给男友,不要担心,今天我就来告诉你如何解决这件事情,接下来介绍的是节日应该送什么礼物给男友如果你对这个内容很感兴趣的话,就和我一起来学习一下吧,希望这些能够帮助到你。
如今很多人都想知道怎样自制包包,不要担心,今天我就来告诉你如何解决这件事情,接下来介绍的是怎样自制包包,如果你对这个内容很感兴趣的话,就和我一起来学习一下吧,希望这些能够帮助到你。
王者荣耀是当下非常火热的一款网游,不管男女老少很多朋友都非常喜欢玩,要想在王者荣耀里面玩的尽兴就要学会掌握一定的王者荣耀技巧,这样更加能提升你的手法,那么王者荣耀技巧有哪些呢?
微信是我们日常生活中经常使用的一种通讯软件工具,我们可以有效的利用微信和我们的家人、朋友、同事进行沟通。但是很多人在使用微信的过程中经常不会不小心删除了聊天记录。那么,此时该如何恢复微信的聊天记录呢?
大家出门在外可能经常会遇到下雨又没带伞的情况,随着社会的发展,现今在广州一种共享雨伞的投入使用大大的便利了市民的生活。我们知道广州的地铁服务一向不错,早在2008年开始就推出了地铁便民雨伞的服务。那么,共享雨伞和地铁便民雨伞是一样的吗?有什么不同呢?
2017年最受欢迎的生活服务APP!!生活服务类App的出现为日常生活带来极大便利,我们可以通过手机客户端预约各种家政服务,足不出户就能够享受实惠、便捷的生活服务,那么接下来我为大家推荐一些生活中必备生活app。
由于现在抢红包大热起来,很多app都开始支持发红包抢红包了,因此也出现了微信抢红包神器,可以自动抢微信红包,肯定比认为手动操作快,有消息就会自动打开,然后打开红包。今天就给大家分享2017微信自动抢红包神器大全。
2017手机赚钱软件排行榜!!很多朋友都在苦恼每天的钱不够话,空闲时间不知道怎么打发,总想寻找一种简单的赚钱方式,我们的手机app就有很多,下面具体给大家介绍手机赚钱软件有哪些,总有一款你中意的。
经常玩微信的朋友都知道,微信小程序已经全面上线了,对于小程序的出现是否会引发App变革众说纷纭,但不可否认的是小程序能够带给用户及产商一定的便利,那么今天为大家汇总目前上线的一些实用小程序。
男女交往一直都是人们比较关注的一个问题,都说相爱容易,相处不易,交往过的朋友应该都能深刻的体会到,女生常常抱怨着让男生理解自己,但男生也希望多体谅一下他们。尤其不要老是问一些无法回答的问题来考验他们。
很多朋友都信风水一说,对于自己家里房屋客厅的装修也是有一定要求的,因为客厅的风水关系着整个家居的运势,更关系着主人的财运与健康,因而客厅里的风水禁忌是需要我们谨慎注意的,那么风水学中客厅风水禁忌有哪些呢?
春天已经来临了,夏天也不远了,新的一才刚刚开始,时尚爱美的美眉们最关注的就是春夏服装设计的流行趋势了,早早的把握住时尚趋势走在流行的最尖端,今天就给大家整理分享2017春夏女装设计流行趋势 ,你绝对不能错过的亮点。热门搜索:
您的位置: -&
软件教程分类查找
非常抱歉!2345软件大全没能为您提供完善服务,万分感谢能得到您的指点!
您的建议:
精品软件课程
人气:369775
Cool Edit是一个非常出色的数字音乐编辑器
人气:694880
腾讯QQ支持在线聊天、视频电话、点对点断点
人气:611228
搜狗拼音输入法是网上最流行、功能最强大的
人气:95320
LoadRunner是一种预测系统行为和性能的负载
小游戏推荐
win7播放视频时cpu占用率高怎么办
出处:2345软件大全
核心提示:win7播放视频时cpu占用率高怎么办?一起看看吧!
  win7播放视频时cpu占用率高怎么办?很多朋友可能还不知道,下面小编给你分享下解决办法。  1、点击开始菜单,在所有程序中找到“Windows Media Player”并将其打开,如图所示:  2、鼠标右键“Windows Media Player”窗口,选择“工具→选项”,如图所示:  3、打开选项窗口后,切换至“性能”项,取消勾选“启用WMV文件的DirectX视频加速”,如图所示:  4、最后重新切换至“播放机”项,将自动更新更改为每月一次,若是无法更改则不管它,接着取消勾选“播放时允许运行屏幕保护程序”和“播放时向库添加远程媒体文件”,如图所示:
相关教程推荐
相关软件推荐
资源统计:无插件软件:186457个 无病毒软件:186770个 昨日已处理109个带插件、病毒的软件
本站总软件:186770个 软件总下载次数:22.826亿次
软件教程文章:103122篇 总浏览次数:3.364亿次在Linux系统中限制CPU占用率的教程
栏目: 服务器教程 来源:  
&  Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的正常运转。
同时,内核也很公正:它将资源公平地分配给各个进程。
  但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢?
  答案是需要由用户来为内核指定进程的优先级
  大部分进程启动时的优先级是相同的,因此Linux内核会公平地进行调度。
如果想让一个CPU密集型的进程运行在较低优先级,那么你就得事先配置好调度器。
  下面介绍3种控制进程运行时间的方法:
  使用 nice 命令手动降低任务的优先级。
  使用 cpulimit 命令不断的暂停进程,以控制进程所占用处理能力不超过特定限制。
  使用linux内建的control groups(控制组)功能,它提供了限制进程资源消耗的机制。
  我们来看一下这3个工具的工作原理和各自的优缺点。
  模拟高cpu占用率
  在分析这3种技术前,我们要先安装一个工具来模拟高CPU占用率的场景。我们会用到CentOS作为测试系统,并使用Mathomatic
toolkit中的质数生成器来模拟CPU负载。
  很不幸,在CentOS上这个工具没有预编译好的版本,所以必须要从源码进行安装。先从
http://mathomatic.orgserve.de/mathomatic-16.0.5.tar.bz2 这个链接下载源码包并解压。然后进入
mathomatic-16.0.5/primes 文件夹,运行 make 和 sudo make install 进行编译和安装。这样,就把
matho-primes 程序安装到了 /usr/local/bin 目录中。
  接下来,通过命令行运行:
  代码如下:
  /usr/local/bin/matho-primes 0
& /dev/null &
  程序运行后,将输出从0到之间的质数。因为我们并不需要这些输出结果,直接将输出重定向到/dev/null就好。
  现在,使用top命令就可以看到matho-primes进程榨干了你所有的cpu资源。
  好了,接下来(按q键)退出 top 并杀掉 matho-primes 进程(使用 fg 命令将进程切换到前台,再按 CTRL+C)
  nice命令
  下面介绍一下nice命令的使用方法,nice命令可以修改进程的优先级,这样就可以让进程运行得不那么频繁。
这个功能在运行cpu密集型的后台进程或批处理作业时尤为有用。 nice值的取值范围是[-20,19],-20表示最高优先级,而19表示最低优先级。
Linux进程的默认nice值为0。使用nice命令(不带任何参数时)可以将进程的nice值设置为10。这样调度器就会将此进程视为较低优先级的进程,从而减少cpu资源的分配。
  下面来看一个例子,我们同时运行两个 matho-primes 进程,一个使用nice命令来启动运行,而另一个正常启动运行:
  代码如下:
  nice matho-primes 0
& /dev/null &
  matho-primes 0
& /dev/null &
  再运行top命令。
  看到没,正常运行的进程(nice值为0)获得了更多的cpu运行时间,相反的,用nice命令运行的进程占用的cpu时间会较少(nice值为10)。
  在实际使用中,如果你要运行一个CPU密集型的程序,那么最好用nice命令来启动它,这样就可以保证其他进程获得更高的优先级。
也就是说,即使你的服务器或者台式机在重载的情况下,也可以快速响应。
  nice 还有一个关联命令叫做 renice,它可以在运行时调整进程的 nice 值。使用 renice 命令时,要先找出进程的
PID。下面是一个例子:
  代码如下:
  renice +10 1234
  其中,1234是进程的 PID。
  测试完 nice 和 renice 命令后,记得要将 matho-primes 进程全部杀掉。
  cpulimit命令
  接下来介绍 cpulimit 命令的用法。 cpulimit 命令的工作原理是为进程预设一个 cpu
占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT
这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。
  cpulimit 的优势是可以控制进程的cpu使用率的上限值。但与 nice 相比也有缺点,那就是即使 cpu 是空闲的,进程也不能完全使用整个
cpu 资源。
  在 CentOS 上,可以用下面的方法来安装它:
  代码如下:
  wget -O cpulimit.zip
/opsengine/cpulimit/archive/master.zip
  unzip cpulimit.zip
  cd cpulimit-master
  sudo cp src/cpulimit /usr/bin
  上面的命令行,会先从从 GitHub 上将源码下载到本地,然后再解压、编译、并安装到 /usr/bin 目录下。
  cpulimit 的使用方式和 nice 命令类似,但是需要用户使用 -l 选项显式地定义进程的 cpu 使用率上限值。举例说明:
  代码如下:
  cpulimit -l 50 matho-primes 0
& /dev/null &
  从上面的例子可以看出 matho-primes 只使用了50%的 cpu 资源,剩余的 cpu 时间都在 idle。
  cpulimit 还可以在运行时对进程进行动态限制,使用 -p 选项来指定进程的 PID,下面是一个实例:
  代码如下:
  cpulimit -l 50 -p 1234
  其中,1234是进程的 PID。
  cgroups 命令集
  最后介绍,功能最为强大的控制组(cgroups)的用法。cgroups 是 Linux 内核提供的一种机制,利用它可以指定一组进程的资源分配。
具体来说,使用 cgroups,用户能够限定一组进程的 cpu 占用率、系统内存消耗、网络带宽,以及这几种资源的组合。
  对比nice和cpulimit,cgroups 的优势在于它可以控制一组进程,不像前者仅能控制单进程。同时,nice 和 cpulimit 只能限制
cpu 使用率,而 cgroups 则可以限制其他进程资源的使用。
  对 cgroups 善加利用就可以控制好整个子系统的资源消耗。就拿 CoreOS 作为例子,这是一个专为大规模服务器部署而设计的最简化的 Linux
发行版本,它的 upgrade 进程就是使用 cgroups 来管控。这样,系统在下载和安装升级版本时也不会影响到系统的性能。
  下面做一下演示,我们将创建两个控制组(cgroups),并对其分配不同的 cpu
资源。这两个控制组分别命名为&cpulimited&和&lesscpulimited&。
  使用 cgcreate 命令来创建控制组,如下所示:
  代码如下:
  sudo cgcreate -g cpu:/cpulimited
  sudo cgcreate -g cpu:/lesscpulimited
  其中&-g cpu&选项用于设定 cpu 的使用上限。除 cpu 外,cgroups 还提供 cpuset、memory、blkio
等控制器。cpuset 控制器与 cpu 控制器的不同在于,cpu 控制器只能限制一个 cpu 核的使用率,而 cpuset 可以控制多个 cpu 核。
  cpu 控制器中的 cpu.shares 属性用于控制 cpu 使用率。它的默认值是 1024,我们将 lesscpulimited 控制组的
cpu.shares 设为1024(默认值),而 cpulimited 设为512,配置后内核就会按照2:1的比例为这两个控制组分配资源。
  要设置 cpulimited 组的 cpu.shares 为 512,输入以下命令:
  代码如下:
  sudo cgset -r cpu.shares=512 cpulimited
  使用 cgexec 命令来启动控制组的运行,为了测试这两个控制组,我们先用cpulimited 控制组来启动 matho-primes
进程,命令行如下:
  代码如下:
  sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0
/dev/null &
  打开 top 可以看到,matho-primes 进程占用了所有的 cpu 资源。
  因为只有一个进程在系统中运行,不管将其放到哪个控制组中启动,它都会尽可能多的使用cpu资源。cpu
资源限制只有在两个进程争夺cpu资源时才会生效。
  那么,现在我们就启动第二个 matho-primes 进程,这一次我们在 lesscpulimited 控制组中来启动它:
  代码如下:
  sudo cgexec -g cpu:lesscpulimited /usr/local/bin/matho-primes 0
& /dev/null &
  再打开 top 就可以看到,cpu.shares 值大的控制组会得到更多的 cpu 运行时间。
  现在,我们再在 cpulimited 控制组中增加一个 matho-primes 进程:
  代码如下:
  sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0
/dev/null &
  看到没,两个控制组的 cpu 的占用率比例仍然为2:1。其中,cpulimited 控制组中的两个 matho-primes 进程获得的cpu
时间基本相当,而另一组中的 matho-primes 进程显然获得了更多的运行时间。
  更多的使用方法,可以在 Red Hat 上查看详细的 cgroups 使用说明。(当然CentOS 7也有)
  使用Scout来监控cpu占用率
  监控cpu占用率最为简单的方法是什么?Scout 工具能够监控能够自动监控进程的cpu使用率和内存使用情况。
  Scout的触发器(trigger)功能还可以设定 cpu 和内存的使用门限,超出门限时会自动产生报警。
  从这里可以获取 Scout 的试用版。
  计算机的系统资源是非常宝贵的。上面介绍的这3个工具能够帮助大家有效地管理系统资源,特别是cpu资源:
  nice可以一次性调整进程的优先级。
  cpulimit在运行cpu密集型任务且要保持系统的响应性时会很有用。
  cgroups是资源管理的瑞士军刀,同时在使用上也很灵活。
06-10 06-10 06-10 06-09 06-06 06-06 06-06 06-06

我要回帖

更多关于 lol更新时文件被占用 的文章

 

随机推荐