编程之美_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),因为它也会导致很多不可控的内核运行时间。
先记录一下。稍后补充。。。
参考《编程之美》
编程之美_1.1 让CPU占用率曲线听你指挥的更多相关文章
- 编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器)
[目录] 不考虑其他进程,cpu画正弦曲线 获取总体cpu利用率 获取多核处理器单个cpu利用率 考虑其他进程,cpu画正弦曲线 下面的程序针对多核处理器,可以设置让任何一个cpu显示相应的曲线(本文 ...
- 让cpu占用率曲线听你指挥(多核处理器)
编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器) [版权声明]转载请注明出处 http://www.cnblogs.com/TenosDoIt/p/3242910.html [目录] 不考 ...
- 第1章 游戏之乐——让CPU占用率曲线听你指挥
让CPU占用率曲线听你指挥 写一个程序,让用于来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: CPU的占用率固定 ...
- 1.1 让CPU占用率曲线听你指挥[cpu manager]
[本文链接] http://www.cnblogs.com/hellogiser/p/cpu-manager.html [题目] 写一个程序,让用户来决定Windows任务管理器(Task Manag ...
- 让CPU占用率曲线听你指挥
使用GetTickCount()和Sleep(): Code#include <stdio.h> #include <unistd.h> #include <time.h ...
- 编程之美读书笔记1.1——让CPU占用率曲线听你的指挥
http://blog.csdn.net/pipisorry/article/details/36189155 <strong><span style="font-size ...
- 让CPU的占有率曲线听我指挥
最近我要在公司的一个study group负责AWS的AutoScaling功能的介绍.AWS可以根据instance(虚拟机)的CPU使用量进行scaling. 为了做demo,于是就有这样一个需求 ...
- 控制CPU占用率曲线
编程之美的第一个问题,我的机器是双核的,用文中的代码,得到的曲线波动比较大额,受其他进程的影响比较大.文中提到10ms接近windows的调度时间片,如果选得太小,会造成线程被频繁唤醒和挂起,造成内核 ...
- 编程之美 之 让CPU占用率听你指挥
昨天在bbs上淘到了这本编程之美.顺手刷了第一章,很有意思.第一章的要求是要控制CPU曲线,绘制出对应的形状. 拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的对应区域直接绘 ...
随机推荐
- iOS:crash崩溃日志分析
一.前言: 作为一个合格的iOS开发者,除了具有规范强悍的编码能力外,还应该具有过硬的查错纠错能力.在项目运行时,程序崩溃是不可避免的,遇到这个问题,有时会出现一大堆的crash日志,艹,貌似看不懂呀 ...
- Python开发【第二章】:Python的数据类型
基本数据类型 一.整型 如: 18.73.84 整型具备如下功能: class int(object): """ int(x=0) -> int or long i ...
- 搭建和使用Docker私有仓库
需要注意的是,从Docker Pool下载的镜像文件,与官方镜像文件是完全一致的. 安装Docker之后,可以是使用官方提供的registry镜像来搭建一套本地私有仓库环境: docker run ...
- linux安装pip报错
解决方法:升级pip工具 sudo python -m pip install -U pip
- 如何在makefile中写cd命令
http://stackoverflow.com/questions/1789594/how-to-write-cd-command-in-makefile
- html 二级联动(省市联动)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Swift实战-豆瓣电台(五)播放音乐
观看地址 http://v.youku.com/v_show/id_XNzMwODM0MzI0.html 在这节里面,我们简单学习了一下MediaPlayer的使用 引入媒体框架 import Med ...
- 转:Tomcat配置
一.修改Tomcat端口号步骤: 1.找到Tomcat目录下的conf文件夹 2.进入conf文件夹里面找到server.xml文件 3.打开server.xml文件 4.在server.xml文件里 ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- mysql长连接和短连接的问题 转
什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-> ...