2025年7月23日 星期三

我的筆電的電源策略調整——TLP

序:經過半年以上的使用Ubuntu,我發現不管是GNOME還是KDE Plasma,這些桌面環境提供的電源控制選項往往是非常有限的,如果想要精準的調整電源策略,這時就可以考慮使用Terminal(終端機)來進行調整。得益於Linux的萬物皆文件,我們可以調整/etc目錄來達到我們要求的效果,放膽去試吧。而我為何會想調整我的電源策略?因為我是使用筆電,我希望我的筆點可以在接電的時候滿血釋放,離電的時候可以兼顧效能與省電

 我的平臺

  • 操作系統:Ubuntu 25.04
  • 筆電:Lennovo ideapad 530S(雙A平臺。「雙A平臺」很重要,因為不同的硬體可以調整的選項不同。)
  • CPU:AMD Ryzen 2700U(初代Zen架構)
  • GPU:AMD Vega 3/10
  • 硬碟:Kingston 512GB的NvMe 

簡介

  這次要安裝TLP來取代多數系統內建的power-profiles-daemon,雖然原本有提供圖形化界面,但是我的發行版似乎沒有收入到這個套件(不知道是不是原作者不維護這個圖形化界面了),所以我會使用nano(也可以使用Vim),我還會簡單教一下nano。

安裝

  輸入:

  1. sudo apt update 
  2. sudo apt install tlp tlp-rdw
  簡單提一下,tlp-rdw是用來管理無線設備(如Wi-Fi、藍牙等),在安裝時系統會另外安裝smartmontools與其他工具,我們一律同意即可。值得一提的是,smartmontools是用來調整硬碟轉速與硬碟節能的一種選項,因為我是使用NvMe固態硬碟,所以我不會展示調整硬碟節電策略(NvMe不能調整轉速,畢竟不是機械硬碟,加上我的節電策略沒有非常激進,就不示範了)。

預備知識

AMD CPU的調節策略:

  1. acpi_cpufreq:最通用的CPU調節策略,但是調度粗糙(頻率不能做到無級調整,以我來說,我的頻率調節就只有三檔:1.6 GHz、1.7GHz、2.2GHz)。
  2. amd_pstate=passive:類似acpi_cpufreq,效果會再好些。 
  3.  amd_pstate_epp(amd_pstate=active):需要CPU有CPPC硬體控制的固件,需要zen2以後的架構才支持。(註:我的「以」是「有包含」的意思),有不同的檔次可以選擇,按需選擇即可。
  4.  amd_pstate=guided:這個模式一樣需要CPPC硬體支持,大致做法是給定一個頻率區間,系統會自行跑道合理的工作頻率。 

進行調整

  1.  使用 tlp-stat -p 來知道這臺電腦可以進行的設定層次。以我來說,我的可用模式是 acpi_cpufreq (由第一行可以得知),目前使用的策略是 schedutil (我的Linux會根據我的處理程序的進程動態調度我的電腦資源。由第二行可以得知。),第三行的「scaling_available_governors = conservative ondemand userspace powersave performance schedutil 」可知我有六種檔次可選(等等介紹),由第六行可知我的CPU頻率有三種頻率可以調整(scaling_available_frequencies = 2200000 1700000 1600000 [kHz] ,分別是2.2 GHz、1.7GHz、1.6GHz),其他選項看看即可。

  2. 輸入 sudo nano /etc/tlp.conf ,進入編輯模式。畫面下方的「 ^ 」是control鍵,例如「 ^ O」是「 Control + O 」

  3. 文中有設定的說明,而「Default」是預設設定,下方是可以手動調整的,將等號後面的值設定好後,刪掉該行的「#」即可
    修改前:
    修改後:

  4.  聊聊我推薦的參數
    TLP_DEFAULT_MODE,這是在假設系統不知道現在是接著電源還是接著電池的時候,預訂的模式,因為我是筆電,所以策略以電池模式優先。如果看不懂說明,可以複製說明,請AI來解讀,以免自己誤會。
    CPU_SCALING_GOVERNOR,這是調整Linux的電源策略的檔次,conservative是高負載會提升頻率但是是緩慢提升,實測電腦會很卡;ondemand是按需模式,會根據負載進行調頻,會激進的控制CPU頻率;userspace是自定義,這個我沒有設定;powersave是省電模式,省電為主;performance會一直把CPU維持在最高頻率,如果是Intel 13、14代的桌上型電腦使用者,建議不要打開,電腦容易縮缸;schedutil,和ondemand類似,但是是透過處理程序的進程來調度,較不會積極的監控頻率。
    CPU_SCALING_FREQ,這是調整CPU頻率的參數,可以設定最低/高的頻率,其有效設定值可以在 tlp-stat -p 可知。
    CPU_BOOST_ON,這是調整CPU是否要有加速頻率,見仁見智,我是都打開。
    REDEON_DPM_PERF,調整GPU的頻率,我的GPU滿肉雞的,我是一律保持在high。

參考資料

沒有留言:

張貼留言