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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    Ubuntu 14.04 卸载通过源码安装的库
    Ubuntu 14.04 indigo 相关依赖
    Ubuntu 14.04 indigo 安装 cartographer 1.0.0
    Ubuntu 14.04 改变文件或者文件夹的拥有者
    安装cartographer遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"问题
    Unrecognized syntax identifier "proto3". This parser only recognizes "proto2". ”问题解决方法
    查看所有用户组,用户名
    1卸载ROS
    Ubuntu14.04 软件安装卸载
    Ubuntu14.04系统显示器不自动休眠修改
  • 原文地址:https://www.cnblogs.com/amwuau/p/3774702.html
Copyright © 2011-2022 走看看