在今年的 Worldwide Developer Conference (WWDC) keynote 中,蘋果(Apple)發表了他們在筆記型電腦電池續航力上的改進,像新的 13 吋 Macbook Air 一次充電的續航力從原本的 7 小時增加為 12 小時,假設蘋果的這個數字沒有灌水,那這樣的大改進是如何辦到的呢?

一個大家都想像得到的部分就是新的 Intel Haswell CPU,這顆 CPU 對於節能有一定的貢獻,據 Intel 的說法 Haswell 是從以前到現在能源效率上躍進最大的一顆 CPU,而其內部的晶片架構也是第一次專門為輕薄型的筆記型電腦與平板電腦所設計的,所以其時脈與用電量都比較低。


除了 CPU 的改進之外,OS X 10.9 Mavericks 的能源效率改進也佔了很重要的因素,一般在軟體上要讓電腦省電、電池可以撐得更久,通常就是降低電腦的工作效率,但是蘋果宣稱 Mavericks 所使用的新技術不但可以在不影響計算效能的情況下改善續航力,甚至在某些情況下,電腦的效能還會更好!以下是三個主要的技術。

記憶體壓縮(Compressed Memory)

Mavericks 所使用的壓縮方式跟以往不同,他會在系統的記憶體快用完時,將不常用的資料自動壓縮,而壓縮完之後的大小只有原來的一半左右,如果之後系統要用到這些資料時,它會自動解壓縮回復成原來的資料。

記憶體的壓縮可以讓更多的資料儲存在記憶體中,藉由 WKdm 快速壓縮演算法的幫助,資料在記憶體中的壓縮與解壓縮,會比儲存至一般硬碟或是固態硬碟還要快,所以這樣系統效能可以提升,又不需要讓硬碟進行讀取或寫入的動作,進而降低硬碟使用率、延長硬碟壽命,最重要的是:會比較省電。

當然要進行資料的壓縮與解壓縮會使用到 CPU,這會造成而外的能源消耗,但蘋果宣稱 CPU 所使用微量計算的能源消耗,比起硬碟的的耗電量來說是小很多的,所以整體而言還是會比較好。

應用程式自動休眠(App Nap)

應用程式自動休眠(App Nap)的概念很簡單,就是讓沒有在前景執行的應用程式休息,以目前的 Safari 來說,他如果放在背景執行時還是有可能吃掉 15% 的 CPU 資源,這對於系統效能與能源效率來說是一個很大的浪費。

而現在藉由應用程式自動休眠的功能,可以將那在背景執行的程式切換為一種省電模式,控制這些程式的 CPU、網路、硬碟存取的使用率。

這個 App Nap 功能會在應用程式放到背景時(也就是沒有顯示在螢幕上、也沒有播放音樂時)自動啓動,啟動 App Nap 之後的影響包含以下三項:

  • Timer throttling:降低影用程式的 timer 頻率,這樣可以使 CPU 的 idle 時間增加。
  • I/O throttling:降低磁碟與網路的使用優先權(priority),這樣可以使背景程式的 I/O 明顯降低,另外也可以避免背景程式跟前景程式搶 I/O 資源。
  • Priority reduction:降低 UNIX process 的優先權,讓 CPU 計算資源使用率降低。

合併應用程式 Timer(Timer Coalescing)

這個部分比較有趣,在系統中通常有很多的背景程式,每個 OS X 的程式會設定一個 timer,每隔一段時間就會使用 CPU、磁碟或網路處理一些事情,像是檢查 DHCP 租約、軟體更新或是啓動鬧鈴等等,大部分的事情都是使用者所看不見的。

因為每個程式的 timer 都是獨立的,所以每個程式在處理事情的時間點都會不同,在電腦 idle 時,只要有程式的 timer 被驅動,系統就要離開休息的狀態(也就是省電的狀態),處理這些事情,整個過程就會像這樣:

coalesced_before

所以即便電腦完全沒有在使用,它還是會因為這些 timer 的因素導致無法長期進入省電模式。

如果要讓電腦省電,就是要想辦法讓電腦長時間處於省電的狀態,而解決方案就是合併應用程式的 timer,也就是將一小段時間內的所有 timer 搜集起來,一起執行,透過這樣的方式可以讓電腦有更多的休息時間,休息長一點之後再一次處理所有的工作,這樣的狀況就會像這樣:

coalesced-after

這樣合併 timer 的方式會造成程式的 timer 執行的時間點稍微延後,但其實影響不大,因為蘋果本來就沒有保證 timer 觸發時會馬上執行。而這樣的機制可以有效的讓電腦處於真正 idle 狀態的時間延長,當然也會更省電。

參考資料:arstechnica