如何使用 cpufreq-set 和 cpufreq-info 進行 CPU 調效:提升系統性能的最佳實踐

如何使用 cpufreq-setcpufreq-info 進行 CPU 調效:提升系統性能的最佳實踐

在日常的 Linux 使用中,我們經常會遇到 CPU 需要調整性能狀態的情況,比如讓系統在有性能需求時保持高效運行,或在不需要高性能的時候節省電力。這篇文章將介紹如何使用 cpufreq-setcpufreq-info 工具來有效地進行 CPU 的性能模式調整,幫助你在不同情境下達到最佳的 CPU 表現。

為什麼要調整 CPU 調度模式?

Linux 系統中的 CPU 調度模式(Governor)可以決定系統如何管理 CPU 的頻率。根據不同的需求,可以使用不同的調度模式來達到高性能或低功耗的目的。

常見的調度模式包括:

  • performance:始終以最高頻率運行,適合需要高性能的場合。
  • powersave:將 CPU 的頻率保持在最低,適合節省電力的情境。
  • ondemand:根據當前負載動態調整 CPU 頻率,這是大多數情況下的默認選擇。

使用 cpufreq-setcpufreq-info 進行 CPU 調整

為了能靈活地控制 CPU 的調度模式,我們可以使用 cpufreq-utils 工具,其中包括兩個非常有用的命令:cpufreq-setcpufreq-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 調度模式特別適合以下幾種情況:

  1. 高性能需求:當你運行需要大量計算資源的應用程序,比如視頻編輯、編譯大型代碼庫或者進行遊戲時,設置為 performance 模式可以確保程序以最高性能運行。
  2. 節能需求:在筆記本電腦上,你可能更傾向於節約電力,延長電池續航時間。這時候可以考慮將 CPU 設置為 powersave 模式。
  3. 混合使用:如果你的需求是平衡性能和功耗,可以使用默認的 ondemand 模式,這樣系統會根據當前負載動態調整 CPU 頻率,提供一個折衷方案。

小結

使用 cpufreq-setcpufreq-info,你可以靈活地調整 CPU 的性能模式來適應不同的需求。無論是想要獲得最高性能還是節省電力,這些工具都能幫助你輕鬆完成設置。希望這篇文章能幫助你更好地管理 Linux 系統中的 CPU 資源,讓系統表現達到最佳狀態!