【IT168评测中心】在上一篇文章到底改进了什么?Win7/2008 R2核心剖析当中,我们看到了Windows NT 6.1内核的多种改进,必须得讲,Windows NT 6.1的内核改进大部分是基于性能方面的,还有另一个大方面的改进是基于提升能源效率。其它如可靠性等的改进并不是主要目的。
在性能方面,NT 6.1内核去掉了线程调度器以及内存管理器上的大锁(Lock),从而提升了并性运行效率并可以支持更多的逻辑处理器数量——最多到256个,还有如DPC、线程模型的一些改进,这些改进能发挥到什么程度再过段时间将会有相应的评测报告,接下来我们要看的是能源效率方面的改进,也就是说,这些改进可以降低同样配置下的系统的整体能耗。
二十六年历程 20个版本Windows完全解析
企业专用操作系统 Windows 7企业版测试
比Vista更完善 Windows 7图形架构解析
性能提升10% Vista/7系统性能对比测试
以处理器为例,处理器、电源、存储系统是主要的能耗来源。要尽量将处理器处于闲置状态,最主要的方法是三个:
最小化运行的服务和任务
避免后台进程动作
让处理器保持闲置从而可以进入深层睡眠
如下图所示:
整个Windows 7/Windows Server 2008 R2内核的改进都是基于上述的目标而定制的,为了实现这个目标,内核作了两个改进:Core Parking以及Timer Coalescing,下面先介绍Core Parking技术,它被翻译为内核停车:
Core Parking是基于这样的理由:尽可能将负载集中在某些处理器上,而另一些处理器尽可能地处于闲置状态,这些闲置的处理器将会更多地处于节能状态。在之前的设计中,系统的负载被分配在不同的处理器上,尽管这些处理器的负载都不高,但是它们都维持在活动状态,只能达到较浅的C States。
Core Parking内核停车机制每50毫秒由定时器触发,开始计算负载、启动电源管理和进行内核停车。内核停车机制根据任务负载提升/降低的幅度来决定一个逻辑处理器将要停车还是开车(……),对于将要停车的逻辑处理器,线程调度器将尽量不将任务分配到上面。如下图所示:
为了实现按照插槽来进行内核停车,系统必须了解CPU的拓扑结构,而NUMA架构也被内核认知(每一个NUMA结点都有一个处理器保持在非停车状态)。实际上,Core Parking表现了系统内核更好地适应、利用现代硬件的能力。
最右侧的CPU利用率图像当中就指出了哪些处理器处于内核停车状态,在图上,Parking被翻译成“归位”而不是“停车”,老实说……笔者觉得都不好听,但是也没有更好的想法
笔者的Core i7机器具有超线程技术,因此内核停车机制按照超线程每两个逻辑处理器共用一个CPU内核的原则,每个CPU内核停车其中一个逻辑处理器;CPU内核只有一个逻辑处理器活动可以提升负载的性能表现
来说对于所有版本都工作的一个机制是UBPM,统一后台进程管理器,它实现了一个基于事件的服务管理机制,它增加了一个新的Taskhost的任务调度进程,以及一个新的“触发式任务”机制。UBPM有点像Unix的超级守护进程。
触发式服务机制避免了以往的机制中不管需不需要,服务都在后台始终活动的情况。如,Bthserv蓝光设备服务只会在插入蓝光设备的时候触发,lmhost IP地址维护服务只在系统获得IP的时候触发,而W32Time时钟同步服务只在需要同步的时候触发,这个机制降低了系统同时存在的进程/线程数目,降低了无必要的处理器调度以及让Core Parking更好的工作。还有一个副反应就是系统占用的内存更小了。
当开始播放音乐的时候,audiodg.exe进程(Windows音频设备图形隔离进程,不过这个名字对一般人来说没什么有用的含义)出现了,它负责将第三方音频DSP以及处理DRM;顺便说下它加载的“第三方”指的是由声卡驱动厂商,这部分代码编制不好的话会造成很多问题。相信很多人都遇到过audiodg.exe进程cpu占用率奇高、内存占用奇大的情况,这就是编写不好的音频驱动导致的;触发式服务机制多少能缓解audiodg.exe进程内存泄露从而导致内存占用过大的情况
时钟中断可以在任意时候发生,因此可以随机中断当前的睡眠,时钟聚合功能可以让一些时钟发生的时间略微偏移、集中起来,当然,需要使用新的API,通过新API,程序或驱动可以指定可忍受的时钟延迟时间;一些程序或许不喜欢忍受那么一丁点延迟
本页最开始的那张图的图示是错误的,这张图才正确表示了时钟聚合的工作方式:在指向未来的时间坐标轴上,上方是非聚合的时钟时间,下方则是时钟事件,可见,聚合的时钟保持了较长的间隔,在间隔内,处理器可以得到较多的休息
数据来源:Win7全面胜利 Thinkpad T400s完全测试,测试对象是Lenovo T400S笔记本,处理器是Core 2 Duo SP9600,因此Core Parking对它没有效果
Windows 7系统的工作功耗低了近25%,也就是四分之一;闲置功耗倒是相差不大……Core Parking要发挥作用,须要Server 2008 R2或者,使用带超线程的Core i7/Mobile Core i7
DVD回放时间上Win7长了13%,而内容创作上续航长了21.6%,没有对应到上面功耗降低的幅度,因为机器不是只处于系统满载一个状态