编程之美_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,能在任务管理器上的对应区域直接绘 ...
随机推荐
- 移动端省际联动插件mobiscroll
<link href="assets/css/mobiscroll.custom-2.17.0.min.css" rel="stylesheet" typ ...
- JQuery AJAX: 了解jQuery AJAX
jQuery AJAX 一.简介1.AJAX是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新.AJAX = 异步 JavaScript 和 XML(Asynchronous ...
- Android 使用FACE++架构包实现人脸识别
今天给大家带来一个通过使用Face++来实现人脸识别的功能. 我们先去这个Face++官网看看:http://www.faceplusplus.com.cn 我们点开案例可以看到众多我们熟知的软件都是 ...
- ACE的CDR中的字节对齐问题
大家应该都知道计算机中间都有字节对齐问题.CPU访问内存的时候,如果从特定的地址开始访问一般可以加快速度,比如在32位机器上,如果一个32位的整数被放在能被32模除等于0的地址上,只需要访问一次,而如 ...
- Bugfree实用心得_转
转自:http://blog.csdn.net/benkaoya/article/details/8719257 本博下有许多实用技巧 1. 什么是问题跟踪系统 问题跟踪系统(Issue Tracki ...
- 修改了系统自带头文件后,Xcode会报错
1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...
- javascript 正则表达式基础知识汇总
正则表达式:对字符串中的信息实现查找.替换和提取操作.(不支持注释和空白,必须写在一行内)正则表达式的创建:包含在一对斜杠之间的字符(直接量语法)例如:var pattern = /s$/; ...
- C# MVC提交表单的四种方式(转)
Mvc 提交表单的4种方法全程详解(转) 一,MVC HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttribu ...
- node.js中使用node-schedule实现定时任务
摘要:有时我们需要在每天的固定时间执行某个脚本,或者在某个固定时间执行某个任务.NodeJS中的 node-schedule 可以很好的实现定时任务. 1.安装 npm install node-sc ...
- 树链剖分(单点更新,求区间最值,区间求和Bzoj1036)
1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5759 Solved: 2383 [Submi ...