您的位置:首页 > 运维架构 > Linux

linux c控制cpu利用率

2014-08-01 15:43 302 查看
1、在x86体系结构中系统定时器的默认频率是100,即i386处理上的每秒钟时钟中断100次。所以在i386中每10ms产生一次时钟中断。
2、进程调度,可能是主动让出cpu,也可能是时钟中断中让出cpu。

3、控制cpu的利用率,实际上是控制cpu在totalTime时间内繁忙的时间busyTime。busyTime和totalTime的比值就是cpu的利用率。
4、查看cpu利用率的办法有很多中,比如在虚拟机文件系统proc下使用cat
/proc/cpuinfo。不过使用这种办法得到的cpu利用率不是很清晰。可以使用top
命令代替之。为了效果更加明显,可以将top的刷新时间间隔设置的小一点。如top -t 0.5//0.5秒刷新一次。

5、程序设计:usleep()函数可以使进程挂起,不占用cpu。假设此时主机上运行的进程占用cpu比较小,那么可以认为此时cpu为空闲状态。这样只需要控制进程运行的时间和usleep的时间即可以控制整个linux系统的cpu利用率。为了减少cpu调度产生的切换时间,我们使运行时间为系统一个时钟中断的时间,即设定总时间为100ms,运行时间为10ms,空闲时间为90ms。
程序代码如下:
#include
#include
#include

#define totalTime 100000 //totaltime is 100ms = 100000us
#define startTime 0 

void main(){
while(1){
struct timeval tvpre, tvafter;
gettimeofday(&tvpre, NULL);
while(1){
gettimeofday(&tvafter, NULL);
int interval = tvafter.tv_usec - tvpre.tv_usec;//get the
usec
while(interval < 0) {
interval += 1000000; //interval可能小于0,需要对interval取模。

if(interval >= totalTime/10) break;
}
usleep((totalTime*9)/10);
}
return ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: