zoukankan      html  css  js  c++  java
  • 编程之美_1.1 让CPU占用率曲线听你指挥

    听到有人说让要写一个程序,让用户来决定Windows任务管理器的CPU占用率。

    觉得很好奇。但第一个想法就是写个死循环。哈哈。不知道具体的占用率是多少,但至少能保证在程序运行时,CPU的占用率终会稳定在一个值上(可能是100呢)。

    在《编程之美》上看到了这个,就顺手记下来吧。

    原题是这样的:

    写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:

    1.CPU的占用率固定在50&,为一条直线;

    2.CPU的占用率为一条直线,具体占用率由命令行参数决定(参数范围1~100);

    3.CPU的占用率状态是一条正弦曲线。

    简析:

    CPU占用率:在任务管理器的一个刷新周期内,CPU执行应用程序的时间和刷新周期总时间的比率

    任务管理器中显示的是每个刷新周期内CPU占用率的统计平均值。

    任务管理器报告CPU的使用率为0的时候,System Idle Process占用了CPU空闲的时间。

    程序在等待用户的输入,或者在等待特定事件的发生(WaitForSingleObject())时,系统中的进程可能会空闲下来。

    小结:

    在任务管理器的刷新期间内,使得CPU一会忙,一会闲,调节忙/闲的比例,就可以控制任务管理器中显示的CPU占用率。

    解法一:

    使CPU在一iduan时间内跑Busy和Idle两个不同的循环,通过不同的时间比例,调节CPU使用率。

    int main()
    {
        for (; ; )
        {
            for (int i = 0; i < 9600000; i++)
            {
                ;
            }
            Sleep(10);
        }
    }
    

    说明:

    960000000为CPU一秒种可以运行的空循环(P4 2.4GHz 时钟周期)

    若循环一一秒为周期,则波形可能为锯齿状。

    10ms接近于windows的调度时间片。

    调整循环参数,可以调整占用率曲线。

    注意点:

    1.尽量减少sleep/awake的频率,以减少操作系统内核调度程序的干扰;

    2.尽量不要调用system call(比如I/O这些privilege instruction),因为它也会导致很多不可控的内核运行时间。

    先记录一下。稍后补充。。。

    参考《编程之美》



    如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!


    作者:风来风往风伤
    出处:http://www.cnblogs.com/amwuau/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    中文词频统计及词云制作 25
    实验一 DOS实验 25
    字符串练习 25
    Python、循环的练习 25
    用requests库和BeautifulSoup4库爬取新闻列表 25
    爬取新闻列表 25
    Mockito使用总结
    20121116
    20121123
    20121115
  • 原文地址:https://www.cnblogs.com/amwuau/p/3774702.html
Copyright © 2011-2022 走看看