← All posts English version →

那台一個月沒關過的電腦,半夜還在燒電:常開機怎麼省又不讓它睡

房間角落那台電腦,已經一個月沒關過機了。它在幫你做種、用 Plex 讓全家看影片、錄監控畫面,或單純擺著讓你隨時遠端連回家。半夜三點,沒人坐在前面,它還是亮著燈、嗡嗡作響。

你可能早就放棄省這台的電了,因為它不能睡。很多省電指南的結論都是「讓它睡眠」,對這台電腦沒有幫助。但「不能睡」跟「不能省」是兩回事。一台不能睡眠的電腦,照樣能省下一部分電費。

常開機的浪費長什麼樣

看看這台機器凌晨 4 點實際在做什麼:做種只有少量、持續的讀寫;媒體伺服器在沒人看影片的時間,基本上是閒置的;監控錄影是持續進行,但負擔很輕。這類常開的工作,多數時間只用到機器一小部分的能力。但預設的「平衡」計畫會讓 CPU 隨時準備加速,風扇照常運轉,獨立顯示卡也維持在桌面使用的時脈。

常見的情況是,那台常開機原本是你上一台遊戲桌機。這種為了最高效能挑選的硬體,現在只做一台迷你電腦(例如 NUC)就能勝任的工作,卻全天候以 60–100 瓦空轉。深夜時段(比如 01:00–08:00)最容易浪費:沒人看串流,沒人坐在桌前,而下載也用不到 CPU 加速到 5 GHz。

這就像為了偶爾載貨買了一台大引擎卡車,結果天天只拿來去巷口買個醬油,引擎卻一直轉著。深夜做種、半夜沒人看的媒體伺服器,需要的力氣大概是「腳踏車」等級,你的電腦卻整晚開著卡車的大引擎原地空轉。油(電)就這樣燒掉,貨(工作)一點都沒多送。

不讓電腦睡著,也能降低功耗的設定

這些設定今天就能自己動手調整,做法如下:

  • 永不睡眠,但早點關螢幕。powercfg /change standby-timeout-ac 0 關掉睡眠;powercfg /change monitor-timeout-ac 5 讓螢幕 5 分鐘後關閉。沒人看的伺服器,螢幕一直開著,負責輸出畫面的顯示卡(GPU)也一直運作,這些都是不必要的耗電。
  • 限制 CPU 最大狀態。powercfg /setacvalueindex scheme_current sub_processor PROCTHROTTLEMAX 50,再執行 powercfg /setactive scheme_current,把處理器上限設在額定速度的 50%。turbo 加速會完全關閉,時脈上限約在基礎時脈的一半。對少量、持續的工作幾乎沒有影響,有負載時,功耗和溫度也會降低。
  • 散熱策略改被動。同一個 sub_processor 群組裡有散熱策略設定(SYSCOOLPOL)。被動模式會先降低 CPU 速度,再提高風扇轉速。注意:這只在 Windows 真的控制風扇的機器上有效(主要是品牌機和筆電)。自組桌機的風扇由主機板 BIOS 裡的風扇曲線控制,真正能讓機器安靜的是限制 CPU 最大狀態和給 GPU 設功耗上限。
  • 給 GPU 設功耗上限。NVIDIA 顯示卡用 nvidia-smi -pl 120(系統管理員視窗)限制整張顯示卡的功耗。注意重開機後會恢復原狀,所以開機時要再執行一次。
「把 CPU 上限設成 50%」聽起來很嚴重,其實就像在直線馬路上裝一個定速限制:你還是能正常開到目的地,只是車子不會一遇到空檔就猛踩油門,轉速衝到 5 千轉。對少量、持續的下載和待命工作來說,這個限速幾乎感覺不到,但油耗(功耗)和引擎熱度(溫度)會馬上降低。

一個提醒:如果你的伺服器晚上有要處理的工作,例如轉檔佇列、備份排程,上限請設保守一點,或避開那些時段。

這些設定是固定的,不會跟著情況改變

晚上 8 點你坐回這台機器,想正常使用,卻發現它還是 50% 上限和被動散熱,這是你之前自己設的。你可能會手動切回來,之後忘了再設回去。兩週後,這台機器又回到 24 小時全速,你可能也懶得再設定一次。

自己做的話,可以用兩個批次檔加上工作排程器:01:00 執行一個套用限制的批次檔,08:00 執行一個解除限制的批次檔,再加一個開機任務,重新套用 GPU 上限。這個做法可行,如果你願意自己維護,這篇已經列出需要的指令。它的限制有三個:它不知道你此刻是不是正在使用這台機器;如果中間有別的程式換掉了電源計畫,它不會發現,也不會告訴你;你也沒辦法知道這一切到底省了多少。

用批次檔加排程「定時調快、定時調慢」,就像在客廳裝了一台便宜的定時插座:它會準時開關,但看不到有沒有人在用。你晚上八點正坐在那台機器前面,它照樣到點就把速度降下來。而且如果有人中途把插在上面的電器關掉,它也不會知道,只會照著時間表繼續切換。

把夜班自動化

這種情況正是 PowerDoze 的核心使用情境。你可以建立一個電源模式,把 CPU 上限、散熱策略、螢幕多久沒動作後關閉、NVIDIA 功耗上限打包成一組,再用排程規則按時段切換:08:00–01:00 均衡、01:00–08:00 切到限速省電模式。伺服器程式加進保持清醒白名單後,它在執行時,機器就不會睡著。GPU 上限跟著模式一起套用。08:00–01:00 和 01:00–08:00 這兩條規則都設成每天,時段又接得起來,所以任何時刻都有一條在生效。因此開機時會重新套用一次,重開機或更新後,設定也會套用回來。

你可能會想知道,這樣到底省了多少。PowerDoze 有一頁分析儀表板(Pro 功能),會長期追蹤估算出的瓦數、度數和電費,讓你看到這台機器套用前後的差異。

排程規則、電源模式、白名單、監控全部免費、不用註冊帳號。一切都在本機執行,你機器上的任何資料都不會外傳。

常見問題

關掉螢幕,伺服器程式會停下來嗎?

關閉螢幕只是停止顯示畫面,電腦本身照常執行,所以 Plex、做種、監控錄影和 Windows 的遠端桌面都會繼續運作。會讓它們停下來的是睡眠,「永不睡眠,但早點關螢幕」那一項的指令已經把睡眠關掉了。

筆電闔上蓋子,還會繼續執行嗎?

不一定。闔上蓋子有自己的設定,跟睡眠時間是分開的,筆電通常預設闔上就會睡眠。要讓它闔上後繼續執行,在控制台打開「電源選項」,點左側的「選擇蓋上螢幕時的行為」,把插電時的選項改成「不進行動作」,再按「儲存變更」。

筆電改用電池時,這些設定還有效嗎?

沒有。這篇教的 powercfg 指令改的都是插電時的設定,改用電池時 Windows 會用另一組值;要讓用電池時也一樣,把指令裡的 -ac 換成 -dc、setacvalueindex 換成 setdcvalueindex,再執行一次。

重開機後,這些設定還在嗎?

powercfg 改的設定會存在目前的電源計畫裡,重開機後還在;會恢復原狀的是 nvidia-smi 設的顯示卡功耗上限。如果你之後換成別的電源計畫,用的是那個計畫自己的設定,要在那個計畫裡再設一次。

誰不需要這篇

如果你的常開硬體是 Raspberry Pi、NUC 或功耗 10–20 瓦的專用 NAS,你已經用硬體解決這個問題了,這篇講桌機待機功耗的文章對你沒有幫助。這篇是寫給另一種情況:因為軟體只能在 Windows 上執行,或櫃子裡剛好有一台舊桌機,於是拿它當伺服器的人。那台機器深夜有 20–40 瓦可以省下來,而且完全不需要讓機器睡著。

不想自己維護批次檔和排程工作?PowerDoze 的排程規則和電源模式免費就能用:設定一次,這台機器每天晚上會自動切到省電設定,早上再切回來。

從 Microsoft Store 取得 PowerDoze從 Microsoft Store 取得 PowerDoze

Nisonxi

我是 Nisonxi,PowerDoze 的開發者。當初純粹因為我自己受夠了 Windows 桌機整天全速發呆吃電、卻找不到一個能「看懂情況、自動切換」的工具,乾脆自己做。這個部落格就是我一路上的筆記。

關於作者與 PowerDoze →