如何使用 cpufreq-set
和 cpufreq-info
進行 CPU 調效:提升系統性能的最佳實踐
在日常的 Linux 使用中,我們經常會遇到 CPU 需要調整性能狀態的情況,比如讓系統在有性能需求時保持高效運行,或在不需要高性能的時候節省電力。這篇文章將介紹如何使用 cpufreq-set
和 cpufreq-info
工具來有效地進行 CPU 的性能模式調整,幫助你在不同情境下達到最佳的 CPU 表現。
為什麼要調整 CPU 調度模式?
Linux 系統中的 CPU 調度模式(Governor)可以決定系統如何管理 CPU 的頻率。根據不同的需求,可以使用不同的調度模式來達到高性能或低功耗的目的。
常見的調度模式包括:
- performance:始終以最高頻率運行,適合需要高性能的場合。
- powersave:將 CPU 的頻率保持在最低,適合節省電力的情境。
- ondemand:根據當前負載動態調整 CPU 頻率,這是大多數情況下的默認選擇。
使用 cpufreq-set
和 cpufreq-info
進行 CPU 調整
為了能靈活地控制 CPU 的調度模式,我們可以使用 cpufreq-utils
工具,其中包括兩個非常有用的命令:cpufreq-set
和 cpufreq-info
。
安裝 cpufreq-utils
首先,我們需要確保系統中已安裝了 cpufreq-utils
。不同發行版的安裝方式可能略有不同:
- Ubuntu/Debian:
sudo apt install cpufrequtils
查看當前 CPU 調度器狀態
要了解當前 CPU 的調度模式,可以使用 cpufreq-info
命令。這個命令會顯示有關 CPU 各種信息,包括當前的調度策略:
cpufreq-info
執行這個命令後,你可以看到類似如下的輸出:
analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 4294.55 ms. hardware limits: 2.20 GHz - 3.40 GHz available frequency steps: 3.40 GHz, 2.80 GHz, 2.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 2.20 GHz and 3.40 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 4.05 GHz. cpufreq stats: 3.40 GHz:40.35%, 2.80 GHz:1.09%, 2.20 GHz:58.56% (793623) analyzing CPU 1: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 1 CPUs which need to have their frequency coordinated by software: 1 maximum transition latency: 4294.55 ms. hardware limits: 2.20 GHz - 3.40 GHz available frequency steps: 3.40 GHz, 2.80 GHz, 2.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 2.20 GHz and 3.40 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 4.02 GHz. cpufreq stats: 3.40 GHz:50.99%, 2.80 GHz:11.65%, 2.20 GHz:37.36% (1768010)
在這裡,你可以看到 CPU 可用的調度模式(available cpufreq governors
),以及當前的調度模式(例如 ondemand
)。
設置 CPU 調度模式為 Performance
如果你的目標是提升性能,可以將 CPU 設置為 Performance 模式,這樣 CPU 會始終以最高頻率運行,確保系統性能最大化。
sudo cpufreq-set -g performance
執行這個命令後,你可以看到類似如下的輸出:
$ cpufreq-info analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 4294.55 ms. hardware limits: 2.20 GHz - 3.40 GHz available frequency steps: 3.40 GHz, 2.80 GHz, 2.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 2.20 GHz and 3.40 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency is 4.02 GHz. cpufreq stats: 3.40 GHz:40.37%, 2.80 GHz:1.09%, 2.20 GHz:58.55% (793711)
這個命令會將所有 CPU 核心的調度策略設置為 Performance 模式。如果系統中有多個 CPU 核心,有時候這個命令可能只作用於一個核心,這時我們需要對每個核心進行設置。
為所有 CPU 核心設置 Performance 模式
你可以使用迴圈來方便地對所有核心進行設置:
for i in $(seq 0 $(($(nproc) - 1))); do sudo cpufreq-set -c $i -g performance done
上述命令會自動檢測系統中的 CPU 核心數量,並將每個核心都設置為 Performance 模式。這樣,你可以確保整個系統的所有核心都處於高性能狀態。
再次檢查設置結果
當完成設置後,可以再次使用 cpufreq-info
來檢查每個核心的狀態,確保每個 CPU 核心都已成功切換至 Performance 模式:
cpufreq-info
檢查輸出的 current policy
部分,確保每個核心的調度策略都是 performance
。
使用情境
調整 CPU 調度模式特別適合以下幾種情況:
- 高性能需求:當你運行需要大量計算資源的應用程序,比如視頻編輯、編譯大型代碼庫或者進行遊戲時,設置為
performance
模式可以確保程序以最高性能運行。 - 節能需求:在筆記本電腦上,你可能更傾向於節約電力,延長電池續航時間。這時候可以考慮將 CPU 設置為
powersave
模式。 - 混合使用:如果你的需求是平衡性能和功耗,可以使用默認的
ondemand
模式,這樣系統會根據當前負載動態調整 CPU 頻率,提供一個折衷方案。
小結
使用 cpufreq-set
和 cpufreq-info
,你可以靈活地調整 CPU 的性能模式來適應不同的需求。無論是想要獲得最高性能還是節省電力,這些工具都能幫助你輕鬆完成設置。希望這篇文章能幫助你更好地管理 Linux 系統中的 CPU 資源,讓系統表現達到最佳狀態!
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!