1.1 让 CPU 占用率曲线听你指挥
1
《编程之美——微软技术面试心得》
《编程之美——微软技术面试心得》(http://www.china-pub.com/38070)是微软亚洲研究院
技术创新组研发主管邹欣继《移山之道——VSTS 软件开发指南》后的最新力作.它传达
给读者:微软重视什么样的能力,需要什么样的人才.但它更深层的意义在于引导读者思考,提倡一种发 现问题,解决问题的思维方式,充分挖掘编程的乐趣,展示编程之美.本书 3 月份上市.网上讨论和解答 在:www.msra.cn/bop
题目《让 CPU 占用率曲线听你指挥》
问题
写一个程序,让用户来决定 Windows 任务管理器(Task Manager)的 CPU 占用率.程 序越精简越好,计算机语言不限.例如,可以实现下面三种情况:
1. CPU的占用率固定在50%,为一条直线; 2. CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100) ;
编程之美——微软技术面试心得
2
1.1 让 CPU 占用率曲线听你指挥
3. CPU的占用率状态是一个正弦曲线.
分析与解法
1
有一名学生写了如下的代码:
while (true) { if (busy) i++; else }
然后她就陷入了苦苦思索: 干什么呢 怎么才能让电脑不做事情呢 CPU 使用率为 else 0 的时候,到底是什么东西在用 CPU 另一名学生花了很多时间构想如何"深入内核,以控 制 CPU 占用率"——可是事情真的有这么复杂么 MSRA TTG(Microsoft Research Asia, Technology Transfer Group)的一些实习生写了各 种解法,他们写的简单程序可以达到如图 1-1 所示的效果.
图 1-1
编码控制 CPU 占用率呈现正弦曲线形态
看来这并不是不可能完成的任务. 让我们仔细地回想一下写程序时曾经碰到的问题, 如
1
作者注:当面试的同学听到这个问题的时候,很多人都有点意外.我把我的笔记本电脑交给他们说,这是开 卷考试,你可以上网查资料,干什么都可以.大部分面试者在电脑上的第一个动作就是上网搜索"CPU 控 制 50%"这样的关键字,当然没有找到什么直接的结果.不过这本书出版以后,情况可能就不一样了.
编程之美——微软技术面试心得
1.1 让 CPU 占用率曲线听你指挥
3
果我们不小心写了一个死循环,CPU 占用率就会跳到最高,并且一直保持 100%.我们也可 以打开任务管理器 ,实际观测一下它是怎样变动的.凭肉眼观察,它大约是 1 秒钟更新一
2
次.一般情况下,CPU 使用率会很低.但是,当用户运行一个程序,执行一些复杂操作的 时候,CPU 的使用率会急剧升高.当用户晃动鼠标时,CPU 的使用率也有小幅度的变化. 那当任务管理器报告 CPU 使用率为 0 的时候, 谁在使用 CPU 呢 通过任务管理器的"进 程(Process) "一栏可以看到,System Idle Process 占用了 CPU 空闲的时间——这时候大家该 回忆起在"操作系统原理"这门课上学到的一些知识了吧.系统中有那么多进程,它们什么时 候能"闲下来"呢 答案很简单,这些程序或者在等待用户的输入,或者在等待某些事件的发 ,或者进入休眠状态(通过 Sleep()来实现) . 生(WaitForSingleObject()) 在任务管理器的一个刷新周期内,CPU 忙(执行应用程序)的时间和刷新周期总时间的 比率,就是 CPU 的占用率,也就是说,任务管理器中显示的是每个刷新周期内 CPU 占用率 的统计平均值.因此,我们写一个程序,让它在任务管理器的刷新期间内一会儿忙,一会儿 闲,然后通过调节忙/闲的比例,就可以控制任务管理器中显示的 CPU 占用率. 【解法一】简单的解法 步骤 1 要操纵 CPU 的 usage 曲线,就需要使 CPU 在一段时间内(根据 Task Manager 的采样率)跑 busy 和 idle 两个不同的 loop,从而通过不同的时间 比例,来获得调节 CPU Usage 的效果. 步骤 2 Busy loop 可以通过执行空循环来实现,idle 可以通过 Sleep()来实现.
问题的关键在于如何控制两个 loop 的时间,方法有二: Sleep一段时间,然后以for循环n次,估算n的值. 那么对于一个空循环 for(i = 0; i 50%) , 然后跌到一个很低的占用率. 我们尝试着降低两个数量级,令 n = 9 600 000,而睡眠时间相应改为 10 毫秒 (Sleep(10)) .用 10 毫秒是因为它不大也不小,比较接近 Windows 的调度时间片.如果选 得太小(比如 1 毫秒) ,则会造成线程频繁地被唤醒和挂起,无形中又增加了内核时间的不 确定性影响.最后我们可以得到如下代码: 代码清单 1-1
- 最简便降低cpu使用率 > 1.1 让 CPU 占用率曲线听你指挥
-
1.1 让 CPU 占用率曲线听你指挥
下载该文档 文档格式:PDF 更新时间:2008-03-01 下载次数:0 点击次数:1文档基本属性 文档语言: 文档格式: pdf 文档作者: lsj 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: 武汉创维特信息技术有限公司 分类: 创建时间: 上次保存者: liusj 修订次数: 1332 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 65 段落数: 463 字节数: 1522814 备注: 65 演示格式: 屏幕显示 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- PDF格式下载
- 更多文档...
-
上一篇:1.1 让 CPU 占用率曲线听你指挥
下一篇:1.1 让 CPU 占用率曲线听你指挥
点击查看更多关于最简便降低cpu使用率的相关文档
- 您可能感兴趣的
- 如何降低cpu使用率 降低cpu使用率的软件 怎么降低cpu使用率 降低cpu使用率 cpu使用率高如何降低 如何使cpu使用率降低 怎样让cpu使用率降低 降低cpu使用率apk 怎样降低cpu使用率
- 大家在找
-
- · 河南高考分数线
- · 汇编时钟程序
- · 湖北省财政厅工作网
- · 湖南人文科技学院专业
- · 2012状元之路数学答案
- · 东方汽轮机厂待遇
- · 导航陶瓷天线diy
- · 湖北课改网总登陆平台
- · 华堂商场北苑店
- · 文安大众论坛贴吧
- · 四川省南充外事学校
- · 80c51单片机指令系统
- · 华中农大食品化学
- · 钢结构雨棚施工图
- · 农业企业会计核算办法
- · www.spw518.com
- · 初中代数习题
- · 电路与电子学第三版
- · 解放j6牵引车350马力
- · 化工英语词典
- · 小型炼油设备
- · plc机床接线图
- · 杨幂冯绍峰的床照接吻
- · 郑州市电力设施和电能保护办法
- · 汽车空调维修视频
- · 素描基础课件
- · 宪法学形成性考核册
- · 情寄悠然免费下载
- · 温州女老板集资潜逃
- · cad迷你版下载
- 赞助商链接