先贴程序:
以前看过这个算法, 不过没什么印象,大概记得它利用while循环来控制cpu利用率
#include
int main(int argc,char*argv[])
{
while(1)
{
int i=atoi(argv[1]);
while(i--);
usleep(atoi(argv[2]));
}
return 0;
}
运行: ./cpu 5000000 30000 表示每隔30ms,来一次5000000次的减法操作
运行结果:cpu idle大概一直是57
那么怎么得到50%的idle呢?
假如第一个参数5000000固定,那么我们需要知道5000000的减法运行时间
计算方法 :
x/(x+30)=0.43
得到 x=26
所以再次运行程序 ./cpu 5000000 26000
基本可以得到比较稳定为50的cpu idle
有图有真相