听到有人说让要写一个程序,让用户来决定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. h5固定表头公共样式

    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...

  2. JavaScript:JavaScript语法的详细介绍

    JavaScript语法:只要Java会了,基本上javascript语法就会了. ——变量的定义 ——程序的结构控制 ——数组操作 ——函数的定义即使用 基本的test.html代码如下,它会导入下 ...

  3. saltstack之(九)配置管理源码部署Nginx

    场景:rpm包安装的nginx服务,无法满足定制模块的需求,故线上环境使用nginx源码进行安装.本片文章详细介绍如何使用saltstack的配置管理功能实现nginx软件的源码安装. 下载源码:pc ...

  4. Power-BI绿色开发平台

  5. Android --资料集合

    google android 官方教程 http://hukai.me/android-training-course-in-chinese/basics/index.html android视频资料 ...

  6. Python模块(getpass)

    getpass getpass模块用于输入信息时不显示,比如输入密码时隐藏.getpass模块接收用户的输入的数据类型是str类型. #!/usr/bin/env python #-*- coding ...

  7. iTOP-4412 平台基础软件的安装和学习

    这两天在电脑上根据开发手册安装了超级终端.虚拟机.Ubuntu.以及Vim 编辑器等开发所必备的环境 1.笔记本没有串口,从实验室找了USB 转串口线来连接开发板和PC,从网盘找到并安装了USB 转串 ...

  8. tomcat部署方法总结

    可以参考之前的:http://www.cnblogs.com/youxin/archive/2013/01/18/2865814.html 在Tomcat中部署Java Web应用程序有两种方式:静态 ...

  9. C++Primer 第五章

    //1.表达式语句的作用:执行表达式并丢弃求值结果 ; value + ; //执行,并丢弃结果 //2.复合语句是指用花括号括起来的语句和声明的序列,复合语句称为块.一个块就是一个作用域.块不以分号 ...

  10. Swift实战-豆瓣电台(八)播放进度与时间

    视频观看地址:http://www.tudou.com/programs/view/4mEtz8S72k0/?resourceId=399000367_06_02_99 这节主要内容是NSTimer, ...