Fix battery life and draining issue on Linux laptops or tablets.
這篇文章Ivon要來討論一個很複雜的問題:如何改善Linux筆電的耗電?
同樣的一台電腦,Linux比Windows耗電並不奇怪,因為製造商可能沒考慮給Linux提供驅動程式,導致使用者的使用體驗不佳,即使Linux的系統服務比Windows要少,也可能因為硬體驅動問題而導致系統浪費電力。而電腦型號太多了,Linux核心無法全部涵蓋驅動程式。所以在安裝Linux系統之後,使用者要針對手上電腦的型號做一些調整才能改善耗電問題。
之所以講複雜是因為電腦廠牌太多,而Linux發行版也增加了更多變數,這篇文章Ivon只是總括性的探討可能的解決方式,分享一些我實際操作下來得出的省電訣竅。
如果要改善Linux筆電的耗電量,請嘗試以下步驟:
- 確認電池健康度
- 檢查暫停模式
- 檢查電腦風扇是否有正常運作
- 檢查獨立顯卡是否耗電
- 檢查電源管理程式
- 查看耗電的程式
- 選取特製的Linux核心或者發行版
以上的步驟在各大Linux發行版(Ubuntu、Arch Linux、Fedora、openSUSE、Gentoo)都能使用。
請注意,本文討論內容適用x86架構的Linux,即搭載Intel或AMD CPU的筆電。ARM架構的Linux筆電可能不適用。
1. 確認電池健康度#
使用 upower指令確認電池健康度,看看是不是電腦用太久了電池老化。
老了就該換電池了。
順帶一提,如果你想延長電池使用壽命,也可以透過upower設定最大充電上限(thresholds)。
2. 檢查暫停模式#
確認暫停模式是否正常,避免電腦進入待機模式還在耗電。
目前Linux 6.0的核心有兩種待機模式:暫停(Suspend)和休眠(Hibernate),原理略有不同。若是用Systmed指令控制的話,則分為suspend、hibernate、hybrid-sleep三種。
在GNOME桌面的關機選單可以看到暫停模式,背後執行的就是Suspend,效果等同執行sudo systemctl suspend
指令。當你關上筆電螢幕的時候也會進入暫停模式。
按下該按鈕之後,Linux應該會進入Suspend模式,這時網路會斷掉,電源鍵可能會一閃一閃的。之後可以用鍵盤喚醒。如果電腦無法從Suspend模式喚醒,出現黑螢幕情況,請嘗試按CTRL+ALT+F1,進入tty,再參考 Linux Kernel Documentation了解怎麼debug。
最簡單的方式是換個Linux核心,或者切換到較為穩定的Linux發行版,例如Debian和Ubuntu。
3. 檢查風扇驅動#
風扇會影響筆電散熱,散熱不佳會導致耗電。
試試跑壓力測試程式 stress_ng,看看風扇有沒有轉起來。
安裝 lm_sensors能夠看到硬體溫度和風扇轉速。
sudo apt install lm_sensors
sudo sensors
但lm_sensors並不適用於所有筆電,有些品牌需要特殊的驅動程式才能啟動風扇,很難一概而論,像MSI筆電的風扇就需要msi-ec
核心模組;ASUS需要asus-nb-wmi
等等。
遇到風扇無法驅動的問題,請用筆電品牌下去搜尋,看看Linux社群有沒有人維護驅動程式。
4. 檢查獨立顯卡耗電#
如果筆電搭載Nvidia獨立顯示卡,會導致額外耗電。
Nvidia獨立顯示卡採用預設的nouvea開源驅動可能會有效能問題,得裝Nvidia閉源驅動。可有時候裝了Nvidia閉源驅動反而會更耗電,這時要使用 Envy Control或者Optimus Manager,在不用獨顯的時候將其關閉,看是要讓它進入暫停模式,還是乾脆切斷電源。
5. 檢查電源管理程式#
Linux通用的電源管理程式有「Power Profiles Daemon」、「TuneD」、「TLP」。有些廠商還會研發自家的電源管理程式,例如System76的System76 Power和Dell的Dell Power Manager。
電源管理程式之間會互相衝突,所以不要同時裝。通常Linux發行版的套件管理器會將各種電源管理程式標記為衝突,要使用這個就必須刪除另外一個。
Power Profiles Daemon,簡稱PPD,是GNOME和KDE用於調節耗電量的服務。只有三個檔位:省電、平衡、效能,除此之外沒有能夠調整的。
這個程式可以透過以下指令安裝:
sudo apt install power-profiles-daemon
sudo systemctl enable power-profiles-daemon
重開機,然後在桌面環境的電源選單,就會有電源模式選項。通常用「平衡」就夠了,「省電」模式會導致電腦變很卡。
另外,在部份較新的Linux發行版,Power Profiles Daemon已經換成了 TuneD,安裝過程:
sudo apt install tuned
sudo systemctl enable tuned
TuneD效果類似Power Profiles Daemon,能夠在GNOME和KDE的電源界面調節耗電量。雖然表面上只有三個檔位,但實際上TuneD的設定檔有很多選項可以調整。
如果需要更細緻的選項與,請裝 TLP,它可以依照使用情境自動調節,客製選項很多,你甚至可以去調Linux核心的cpu governor。需要圖形界面請裝 TLP UI
但是我個人覺得TLP的設定有點太複雜了。
6. 查看耗電的程式#
使用 powertop看看哪些程式在耗電,比如瀏覽器播放影片要是沒有啟用硬體解碼,那就會額外耗電。
也可以搭配查看CPU使用量的 htop和GPU使用量的 nvtop使用,了解哪些程式在吃系統資源。
使用以下指令安裝:
sudo apt install powertop
查看目前正在耗電的程式:
sudo powertop
輸出HTML格式的報表:
sudo powertop --html=powerreport.html
你可以啟動PowerTop服務,按照該工具給出的建議,透過powertop2tuned傳給tuned自動調整耗電量。
sudo systemctl enable powertop
7. 選取特製的Linux核心或者發行版#
我這裡沒有叫你換系統,只是換核心罷了。
雖然x86的相容性很廣,但有些硬體就是需要特製核心才能真正達到省電效果。
比如Surface Go系列,直接裝Ubuntu使用最新版Linux核心可能會導致驅動出問題,改裝專門的 linux-surface核心,那才能確實利用所有的硬體資源。
大部分Linux發行版應該都允許你更換核心,通常就是裝一個套件解決的事情。當然如果你嫌麻煩,那最快的方式就是重裝系統。