# スケジューラーを構成する

Qualcomm Linuxカーネルは標準のLinuxスケジューラー・ソリューションをサポートしています。カーネルはスケジューラーを使用して、CPUのエネルギー消費量に基づき、適切なタスク配置を選択します。

スケジューラーはプロセスの実行順序を決定します。スケジューラーは各CPUの実行キューからプロセスを実行します。

カーネルベースラインは標準のLinuxスケジューラー・ソリューションをサポートしています。カーネルは [エネルギーを意識したスケジュール（EAS）](https://www.kernel.org/doc/html/next/scheduler/sched-energy.html) を使用して、CPUのエネルギー消費量に基づき、適切なタスク配置を選択します。

EASは完全に公正なスケジューラー（CFS）のタスクの復帰バランシング・コードを上書きします。EASは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と比較して最も高い周波数でCPUを実行した場合に達成される作業の量を表します。キャパシティの値は 1024 の範囲で正規化されます（最も強力なCPU/クラスターは1024に設定されます）。

EASは、CPUノードで指定されたDMIPS（Dhrystone毎秒百万命令）値と、クラスターでサポートされている最高周波数に基づいて、クラスターのキャパシティを確立します。

以下は、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周波数ガバナーを設定するには、カーネルのdefconfigurationファイルで対応するドライバーを有効にします。

    `PERFORMANCE` ガバナーをデフォルトのCPU周波数がバナーとして設定するには、defconfigurationファイルで `CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y` を設定します。
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は最適な動作ポイント（OPP）をCPU使用率に基づいて予測し、周波数リクエストとエネルギー予測の間の一貫性を維持します。

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-3JA/topics/memory.md) [Next Topic
動的電圧・周波数スケーリング（DVFS）ガバナーを構成する](https://docs.qualcomm.com/bundle/publicresource/80-70020-3JA/topics/dynamic-clock-and-voltage-scaling-dcvs.md)