先贴程序:

以前看过这个算法, 不过没什么印象,大概记得它利用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
 
有图有真相