@ 2013.06.12 , 20:17

苹果OSX「小牛」系统的省电魔法

[-]
WWDC上介绍新小牛系统的省电特性

前两天的世界开发者大会上,苹果强势宣布了新款Macbook的电池续航性能。比如新的13寸Air一次充电能跑满12个小时,比上一代的7小时要多出一大截,假设实测真情况真是如苹果所说能,续航能扛到程序猿都犯困,那他们是怎么做到的呢?最浅显的回答就是新本用了Haswell——但,这只是整个技术改进的一部分。

Intel的Haswell的U所带来的耗电上的改进,只是预料之中的加持。早在1月份,Intel就说新的Haswell将带来「Intel历史上,对于能耗改进的跨时代的飞跃。」而且还说这块U是他们第一次专为超极本和平板设计,新CPU运行在更低的时钟频率和更小的功率上。

在发布会上,没能听到关于「小牛」系统在移动使用耗电上的情况,只是在新技术对于改善功耗上提了几句。直到更多的信息在随后披露的,阐述技术细节PDF上,我们才能对「小牛」系统的省电技术一窥究竟。

用电效能的改进,第一个目标当然就是让电池能撑更久,但苹果还宣称,他们能达到这个目标,却不以损失系统相应速度为代价,通过以下三大技术:

首先:内存压缩技术。和传统思维里的节电技术不一样,苹果的内存压缩技术「自动将最近使用的对象,在内存内部进行压缩到原来的一半大小。」当对象需要再次调用的时候,再解压缩对象。

苹果声称,这种内存压缩/解压缩技术,比起硬盘临时交换空间(swap)要快得多,就算是和最快的SSD固态硬盘相比也是如此,这必须感谢WKdm快速压缩算法(其结果就是,如果把新的系统装在老款机械硬盘的型号上,其省电效能会更明显)。

一份2003年发表的论文(PDF)比较了三种实时内存压缩算法的性能,WKdm压缩和解压缩性能无比优秀,比其它两种算法都要快(很多)。这能节省大量内存,并提高速度(和磁盘swap技术相比),节省磁盘空间。而且苹果还声称:「这能减少系统读写磁盘swap数据的频率,最终改善苹果笔记本的耗电表现。」并只占用非常微小的CPU资源来处理压缩/解压缩的过程。

然后,就是「程序挂起(App Nap)」。这项新的特性强硬限制不在前台操作/可见的程序进入更彻底的挂起状态。(我们一位使用苹果系统的编辑表示,Safari浏览器再后台啥也不干也要占去15%的CPU资源,所以这部分的耗电还是很可观的。)新的策略是当一个程序的窗口处于不可见的状态,且没有音频播放时(所以程序可以通过出点声躲过这种监测。),严格限制程序的资源占用。OSX系统限制的是程序计数器,限制后台闲着的程序向CPU发出中断请求,「通过限制程序频繁地资源请求,极大的改善了CPU的利用效率。」

磁盘和网络活动比起上一版本,有了更严苛的限制。一个被挂起的程序被赋予对网络和磁盘资源访问的「最低优先级」,意味着降低磁盘耗电和加快前台程序的相应速度。「I/O限制减少了后台进程的开销」。

「小牛」系统也降低了UNIX进程的优先级,比挂起的程序还低,以减少对CPU资源的占用。总的来说,这些改变将更多地降低后台程序的开销,对于那些设计为后台全速运行的程序来说,系统将给与更加严厉的限制。

最后,苹果介绍了一种叫做「时钟调度」(Timer Coalescing)的技术,这种技术只在笔记本处于电池供电的状态下开启。OSX系统将采取「恒定CPU计数器」的策略,包括磁盘和网络资源,以及所有请求,像DHCP获取、wifi连接到系统升级通知触发(大部分这类请求,用户都不会察觉到。),因为程序之间没有互相协调配合发起请求动作,所以一台处于闲置状态的macbook可能被各种程序请求骚扰,使得CPU不得不一直处于活动状态,使得CPU和磁盘不能真正进入省电模式。

[-]
没有开启时钟调度,耗电曲线的情况

「时钟调度」机制试图给这种混乱的局面来点规矩。在笔记本使用电池的时候,「小牛」会先扫描所有发来的时钟请求,然后协调所有临近请求的发起时机。这种「调度机制」意味着CPU和磁盘可以一次处理多个程序的请求,然后可以在下次程序集体上访前,先回去接着多睡会儿。

苹果从没有向开发者保证,这种协调机制会在什么时候发起,也就是说,没必要紧张地去改变你的代码。苹果现在只是告诉开发者:「因为大部分的请求源都是周期性的,调度的最有效时间间隔是50~100毫秒,」而且还提到了,那些忙忙叨叨的程序会得到更多的调度支持。比如某程序将计数器设为0.1s,将只有+/-0.0001s的变数,而且听上去「小牛」的调度会有比这更好的近似值。

苹果又宣称,这项计数可以「卧槽~般地增加CPU的休眠时间,」而且给出了以下图例说明:

[-]
应用时钟调度后,耗电性能明显改善。

这项新技术是内核级层面调节CPU的资源使用,而且「小牛」系统会尽量能少用核就少用核,让不用的核全部睡去。加上Haswell的其它改进,苹果真是给电池性能的表现带来了巨大地进步。实际情况如何,我们会继续测试。

微软别忙着拍扁世界了,你倒是学着点啊!

本文译自 Ars,由译者 Junius 基于创作共用协议(BY-NC)发布。


给这篇稿打赏,让译者更有动力 !
支付宝打赏 [x]
您的大名: 打赏金额:

0.0
赞一个 (0)

24H最赞