詞彙表/CPU、GPU和能源

閒置喚醒

又稱:喚醒次數

簡短回答

「閒置喚醒」計算某個程序把CPU從閒置狀態喚醒的次數。頻繁喚醒會讓處理器無法休息,即使「% CPU」看起來很低,也可能縮短電池續航力。

CPU能長時間保持閒置時最省電。每當有程序設定計時器或檢查某樣東西,CPU就得醒來處理。喚醒一次的代價很小,但成千上萬次加起來就不少了。

你可以在「活動監視器」的「CPU」標籤頁中顯示「閒置喚醒」欄位。它最適合用來找出那些不停輪詢、卻沒做多少實際工作的背景App。

如何在「活動監視器」中查看「閒置喚醒」

按一下「CPU」標籤頁,然後選擇「顯示方式」>「直欄」,確認已勾選「閒置喚醒」。按一下該欄位標題即可依它排序。

喚醒次數多的原因

常見的原因有:用短間隔計時器輪詢更新的App、在看不見的視窗裡持續執行的動畫,以及一直保持連線的同步或聊天App。開了很多標籤頁的瀏覽器也會產生大量喚醒。

對於隱藏的App,macOS會用App小睡等功能減少喚醒,放慢你沒在用的App的計時器。

為什麼「% CPU」很低,喚醒仍然會耗電

當所有核心都閒置時,晶片不只可以讓核心斷電,還能讓處理器的共用部分斷電。Apple的powermetrics手冊說明,一個計時器或中斷結束這種深度閒置狀態所耗的能量,比CPU原本就醒著時做同樣的工作還多。

所以一個App可能幾乎不使用CPU時間,卻仍然讓Mac無法休息。每次喚醒都很短,所以在「% CPU」中幾乎看不出來,但晶片始終無法長時間停留在最低耗電狀態。

macOS會把差不多同時到期的計時器集中起來,讓CPU醒來一次就處理好幾個,藉此減少喚醒。Apple稱之為計時器合併。對於隱藏的App,App小睡則更進一步,減少它們計時器觸發的次數。

如何找出最常喚醒Mac的App

  1. 結束或隱藏你正在使用的App,讓列表顯示的是背景行為。
  2. 在活動監視器中按一下「CPU」標籤頁,依「閒置喚醒」排序。
  3. 觀察一分鐘。記下那些你沒在使用、卻一直排在前面的App。
  4. 按一下「能源」標籤頁,看看同樣這些App在「能耗影響」上是否也排得很高。
  5. 如果要在「終端機」中查看,請執行top -o idlew -stats pid,command,cpu,idlew。IDLEW欄是累計總數,所以要看哪些數值增加得最快。按q離開。
  6. 想看更詳細的取樣,請執行sudo powermetrics --samplers tasks --order wakeups -n 1。它會列出每個程序的計時器喚醒和中斷喚醒,並依讓晶片脫離閒置狀態的喚醒次數排序。

正常與值得擔心的閒置喚醒

沒有哪個數字一定算太高,因為次數取決於App本身,以及它已經執行了多久。重要的是模式。

  • 正常:kernel_task和WindowServer這類系統程序排在前面。它們負責處理硬體事件和繪製畫面,所以本來就會頻繁喚醒CPU。
  • 正常:你正在使用,而且正在播放音訊、進行通話或保持即時連線的App。
  • 值得一看:一個你沒在使用的隱藏App,次數卻一直快速攀升,尤其是它在「App小睡」欄中還顯示「否」。
  • 值得一看:經常重新整理的小型選單列工具,例如顯示秒數的時鐘或即時統計資料。很多這類工具都能在設定中選擇較長的更新間隔。

喚醒次數過多的App該怎麼處理

在App的設定中找找重新整理或同步的間隔,把它調長。關閉不需要的即時預覽或動畫。更新App;如果問題仍在,就告訴開發者:Apple要求開發者盡量少用計時器,所以閒置的App不斷喚醒,是值得回報的錯誤。

大家常問的問題

「活動監視器」中的「閒置喚醒」是什麼意思?

它是某個程序把CPU從閒置狀態喚醒的次數。次數多的App,即使「% CPU」很低,也可能耗電。

「閒置喚醒」次數多是壞事嗎?

不一定。播放音訊或保持網路連線的App需要經常醒來。最該留意的是那些你沒在用、卻依然排在前面的App。

如何減少閒置喚醒?

結束不用的App,關掉不需要的瀏覽器標籤頁,並讓App保持最新版本。隱藏或縮到最小App,也能讓App小睡放慢它們。

為什麼kernel_task的閒置喚醒這麼多?

kernel_task就是macOS核心,它負責處理來自鍵盤、觸控式軌跡板、網路和儲存裝置等硬體的中斷。它的次數高是意料中的事,不需要處理。

Mac接上電源時,閒置喚醒還重要嗎?

沒那麼重要。喚醒主要消耗的是電池續航力。接上電源時,它們只會增加一點能源用量和熱量,很少是Mac變慢的原因。

閒置喚醒多少才算好?

沒有固定的標準值。請把各個App互相比較,找出那些你沒在使用、次數卻仍快速攀升的App。

相關詞條

逐步教學:是什麼在消耗Mac的電池。

想找比活動監視器更好的工具?請參閱Mac上最好用的活動監視器替代方案,或瀏覽詞彙表中的所有詞條。