# 配置排程器

Qualcomm Linux 核心支援標準 Linux 排程器解決方案。核心使用排程器根據 CPU 能耗選擇合適的 CPU 以進行任務放置。

排程器決定處理序的執行順序。排程器根據每個 CPU 的執行佇列來執行處理序。

核心基準支援標準 Linux 排程器解決方案。核心使用 [Energy Aware Scheduling (EAS)](https://www.kernel.org/doc/html/next/scheduler/sched-energy.html) 根據 CPU 能耗選擇合適的 CPU 以進行任務放置。

EAS 覆蓋完全公平排程器 (CFS) 任務喚醒平衡程式碼。它使用 CPU 的能源模型 (EM) 和每實體負載追蹤 (PELT) 訊號在具有非對稱 CPU 拓撲的系統中於喚醒平衡期間選擇節能的目標 CPU。

如需基本排程器文件，請參閱 [Scheduler](https://www.kernel.org/doc/html/next/scheduler/index.html)。

## 瞭解 CPU 拓撲和 EAS

Qualcomm SoC 具有異質 CPU 拓撲，在 EAS 使用的 CPU 容量指標方面有所區別。

EAS 使用 *容量* 的概念來區分運算能力不同的 CPU。CPU 的容量表示它以最高頻率運作時完成的工作量，與系統中最強大的 CPU 相比。容量值在 1024 範圍內正規化 (最強大的 CPU/叢集被設定在 1024)。

EAS 根據在 CPU 節點中指定的 Dhrystone 每秒百萬指令數 (DMIPS) 值以及叢集支援的最大頻率來建立叢集的容量。

以下是 CPU 拓撲和容量的 `sysfs` 節點：

> 
> 
> 表：CPU 拓撲和容量
> 
> 
> | 命令 | 目的 |
> | --- | --- |
> | cat /sys/devices/system/cpu/cpu*/cpu_capacity<br>    Copy to clipboard | 取得與系統中各個 CPU 相關的容量。 |
> | cat /sys/devices/system/cpu/cpufreq/policy*/related_cpus<br>    Copy to clipboard | 取得與系統中各個叢集相關的 CPU 清單。 |

欲深入瞭解排程器如何使用 CPU 容量，請參閱 [Capacity Aware Scheduling](https://www.kernel.org/doc/html/next/scheduler/sched-capacity.html)。

## 變更預設 CPU 頻率調節器

可在執行階段變更或在建置編譯過程中靜態設定 CPU 頻率調節器。

1. Kconfig 組態選項：若要設定 CPU 頻率調節器，請在核心預設組態檔中啟用對應的驅動程式。

    To set `PERFROMANCE` governor as the default CPU frequency
governor, set `CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y` in the
defconfiguration file.
2. 核心命令列選項：若要覆寫核心組態選項，請將 `cpufreq.default_governor=performance` 參數新增至 `meta-qcom-hwe/conf/machine/include/qcom-<SoC>.inc` 檔案中的核心命令列，以設定對應的 CPU 頻率調節器。

## 設定每個實體的負載追蹤

每個實體負載追蹤 (PELT) 是用來追蹤 `sched_entities/groups/runqueues` 負載計算的機制。

調整 PELT 時脈倍頻以符合功率和效能要求。

命令列參數 `sched_pelt_multiplier` 可讓您設定時脈倍頻。時脈倍頻可調整 PELT 上升 / 下降速度，以調整系統功率和效能。

半衰期越短，任務的 CPU 利用率累積越快。這些任務被置於效能 CPU 上，進而提升效能，但伴隨高功耗。CPU 利用率也會累積，在更短的時間內選擇更高的 CPU 頻率。

備註

半衰期也會影響任務利用率下降。UTIL EST 功能提供較快的下降速度。

### PELT 倍頻

在 Linux 核心中，PELT 半衰期倍頻會影響系統如何適應不斷變化的工作負載，並根據歷史利用率資料調整 CPU 頻率。此設定可加快 PELT 時脈並縮短半衰期，進而加快系統反應。

透過核心命令列引數配置 PELT 倍頻：

`kernel.sched_pelt_multiplier=[1, 2, 4] Default value: 1 (half life 32 msec), 2 (half life 16msec), 4(half life 8 msec)]`

欲深入瞭解 PELT，請參閱 [Per-entity load tracking](https://lwn.net/Articles/531853/)。

## 配置 SchedUtil 調節器

SchedUtil CPU 頻率調節器是 Qualcomm Linux 核心的預設調節器。SchedUtil 根據 CPU 利用率預測最佳操作點 (OPP)，維持頻率要求與能源預測之間的一致性。

SchedUtil CPU 頻率調節器與 EAS 連結，嘗試預測所有 CPU 接下來在哪個 OPP 運作，以估計其能耗。

如需更多資訊，請參閱 [SchedUtil](https://www.kernel.org/doc/html/next/scheduler/schedutil.html)。

## 配置利用率箝位 (UCLAMP)

利用率箝制是一種排程器功能，允許使用者空間管理任務的效能要求。

若要執行箝制，請配置以下參數：

- `UCLAMP_MIN`：如果設為任何 `> 0` 的值，則任務需求一律大於或等於此值。如果實際任務需求大於此值，則使用實際需求訊號，但如果實際任務需求低於此值，則報告 `UCLAMP_MIN` 作為任務需求。
- `UCLAMP_MAX`：如果設為任何 `> 0` 的值，則任務需求一律小於或等於此值。如果實際任務需求小於此值，則使用實際需求訊號，但如果實際任務需求高於此值，則報告 `UCLAMP_MAX` 作為任務需求。

備註

`UCLAMP_MAX > UCLAMP_MIN`

使用 UCLAMP 影響排程器的任務放置決定。

在異質系統上，排程器使用任務需求或利用率訊號 (PELT 訊號) 將任務分類為小任務或大任務。根據來自任務分類的輸入，排程器選擇小型 (運算能力較低) 或大型 (運算能力較高) CPU 核心進行任務放置，可能對功耗造成影響。

例如，將非重要 (瑣碎 / 背景 / 內務) 任務箝制在較低的值 (`lower UCLAMP_MAX`) 以影響排程器，將任務放置在小型叢集上。同樣地，將重要 / 前景 / 執行中任務箝制在較高的值 (`higher UCLAMP_MIN`) 以影響排程器，將任務放置在大型叢集上。

UCLAMP 也允許排程器控制頻率指引。

若要滿足任務的快速頻率上升，請將任務箝制在較高的需求 (`UCLAMP_MIN`) 值。較高的箝制有助於提升叢集的頻率，以滿足任務的效能要求。

UCLAMP 操作允許從使用者空間對任務 / 任務群組進行效能管理。

UCLAMP 允許任務放置或任務群組，以及效能提示或限制。此機制用來影響排程器放置決定或影響叢集的頻率指引。

如需更多資訊，請參閱 [UCLAMP](https://www.kernel.org/doc/html/next/scheduler/sched-util-clamp.html)。欲深入瞭解介面和組態，請參閱 [Utilization Clamping](https://www.kernel.org/doc/html/v6.6/scheduler/sched-util-clamp.html)。

Last Published: Jan 01, 2026

[Previous Topic
配置和管理記憶體](https://docs.qualcomm.com/bundle/publicresource/80-70020-3TC/topics/memory.md) [Next Topic
配置動態電壓和頻率縮放 (DVFS) 調節器](https://docs.qualcomm.com/bundle/publicresource/80-70020-3TC/topics/dynamic-clock-and-voltage-scaling-dcvs.md)