听到有人说让要写一个程序,让用户来决定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),因为它也会导致很多不可控的内核运行时间。

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

参考《编程之美》

编程之美_1.1 让CPU占用率曲线听你指挥的更多相关文章

  1. 编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器)

    [目录] 不考虑其他进程,cpu画正弦曲线 获取总体cpu利用率 获取多核处理器单个cpu利用率 考虑其他进程,cpu画正弦曲线 下面的程序针对多核处理器,可以设置让任何一个cpu显示相应的曲线(本文 ...

  2. 让cpu占用率曲线听你指挥(多核处理器)

    编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器) [版权声明]转载请注明出处 http://www.cnblogs.com/TenosDoIt/p/3242910.html  [目录] 不考 ...

  3. 第1章 游戏之乐——让CPU占用率曲线听你指挥

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

  4. 1.1 让CPU占用率曲线听你指挥[cpu manager]

    [本文链接] http://www.cnblogs.com/hellogiser/p/cpu-manager.html [题目] 写一个程序,让用户来决定Windows任务管理器(Task Manag ...

  5. 让CPU占用率曲线听你指挥

    使用GetTickCount()和Sleep(): Code#include <stdio.h> #include <unistd.h> #include <time.h ...

  6. 编程之美读书笔记1.1——让CPU占用率曲线听你的指挥

    http://blog.csdn.net/pipisorry/article/details/36189155 <strong><span style="font-size ...

  7. 让CPU的占有率曲线听我指挥

    最近我要在公司的一个study group负责AWS的AutoScaling功能的介绍.AWS可以根据instance(虚拟机)的CPU使用量进行scaling. 为了做demo,于是就有这样一个需求 ...

  8. 控制CPU占用率曲线

    编程之美的第一个问题,我的机器是双核的,用文中的代码,得到的曲线波动比较大额,受其他进程的影响比较大.文中提到10ms接近windows的调度时间片,如果选得太小,会造成线程被频繁唤醒和挂起,造成内核 ...

  9. 编程之美 之 让CPU占用率听你指挥

    昨天在bbs上淘到了这本编程之美.顺手刷了第一章,很有意思.第一章的要求是要控制CPU曲线,绘制出对应的形状. 拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的对应区域直接绘 ...

随机推荐

  1. How to read the HTML DTD

    Contents How to read the HTML DTD 1. DTD Comments 2. Parameter Entity definitions 3. Element declara ...

  2. 修改了系统自带头文件后,Xcode会报错

    1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...

  3. appcon 图标打包

    ERROR ITMS-90022: "Missing required icon file. The bundle does not contain an app icon for iPho ...

  4. networkcommon v3开源消息框架资料

    http://www.cnblogs.com/csdev/category/870400.html

  5. SqlServer常用命令

    dbcc showfilestats 显示数据库空间占用情况 sp_spaceused tb_Test 显示表占用情况 如果包含有非dbo的Scheme,需要特殊处理,比如我们表tb_Test所使用的 ...

  6. 刷新本地的DNS缓存

    用“WIN +R”快捷键打开运行窗口,输入“cmd”命令,进行命令行窗口.

  7. 封装smarty类

    <?php/** * Project:     Smarty: the PHP compiling template engine * File:        Smarty.class.php ...

  8. 。。。Ajax的回调函数function(data)中,data的返回类型。。。

    今天在做项目的过程中,突然发现了一个有趣的问题,那就是我在Java服务器端写程序,String result = "0";然后通过out.println(result),将resu ...

  9. struts配置通配符*来匹配方法,实现动态调用

    01:web.xml中配置,启动struts2 <?xml version="1.0" encoding="UTF-8"?> <web-app ...

  10. VS2012发布网站详细步骤

    1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面板,点击<新建..>,创建新的发布配置文件: 输入你自 ...