# 動的電圧・周波数スケーリング(DVFS)ガバナーを構成する
Qualcomm Linuxカーネルベースラインは、システム要件に対応する動的な形で周波数スケーリングを管理するため、複数のDVFS実装をサポートしています。
## CPU DVFSガバナーを選択する
ガバナーを選択してシステムを電力またはパフォーマンスを基準に調整し、同時に `CPUfreq` ガバナー(`powersave/performance/schedutil` )を変更することができます。デフォルトでは、CPU周波数ガバナーはQualcomm Linuxカーネルで `performance` に設定されています。
表:CPU DVFS変数
| 変数 | 説明 | パス |
| --- | --- | --- |
| scaling_governor
Copy to clipboard | ガバナーをパフォーマンスに設定します。 | echo performance > /sys/devices/system/cpu/cpufreq/policy*/scaling_governor
Copy to clipboard |
| scaling_max_freq
Copy to clipboard | CPUクラスターの最高周波数を設定します。 | /sys/devices/system/cpu/cpufreq/policy*/scaling_max_freq
Copy to clipboard |
| scaling_min_freq
Copy to clipboard | CPUクラスターの最低周波数を設定します。 | /sys/devices/system/cpu/cpufreq/policy*/scaling_min_freq
Copy to clipboard |
`CPUfreq` の詳細については、[CPU frequency and voltage scaling code in the Linux(TM) kernel](https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt) を参照してください。
## キャッシュとメモリのDVFSガバナーを構成する
静的マップDVFSガバナーは、CPU動作周波数を以下のものに合わせます。
- レベル3キャッシュ(L3)
- 最終レベル・キャッシュ・コントローラー(LLCC)
- DDR RAM
CPU周波数ガバナーがパフォーマンスに設定されているか、システム内の負荷が原因で、CPU周波数が最大レベルの場合、L3、LLCC、DDRも最大周波数で実行されます。
このガバナーのドライバーは `drivers/cpufreq/qcom-cpufreq-hw.c` ファイルにあり、静的マッピングは `arch/arm64/boot/dts/qcom/sc7280.dtsi` ファイルにあります。
注釈
Qualcomm SoCの場合については、プラットフォーム専用のDTSIファイルでこの情報を参照してください。
もう一方の帯域幅モニター(BWMON)ガバナーは、CPUからLLCCへのトラフィックとCPUからDDRへのトラフィックの測定値に基づいて、LLCCとDDRの周波数を決定します。このガバナーのドライバーは `drivers/soc/qcom/icc-bwmon.c` ファイルにあります。
**CPU周波数** と **L3/DDR周波数** の間のマッピングは、電力またはパフォーマンスの要件に基づいて調整されます。
DTSIでは、CPUxノードごとに `operating-points-v2 = <&cpux_opp_table>` エントリーがあります。`cpux_opp_table` には、CPU、L3、DDRの各周波数間の静的マッピングが格納されます。
例:
cpu0_opp_300mhz: opp-300000000 {
opp-hz = /bits/ 64 <300000000>;
opp-peak-kBps = <800000 9600000>;
};
Copy to clipboard
CPU 0が300 MHzで動作する場合、L3に対して9600000が指定されます。これはL3の周波数が300,000 Hz(9600000/w)であることを表します。DDRに対して800,000 Hzが指定された場合、DDRの周波数は200,000 Hz(800000 / w)となります。
それぞれの式で、‘w’ は1サイクルで書き込むことができるバイト数を表します。
- DDRの場合、‘w’ は 4です(各チャネルはサイクルごとに2件のトランザクションを実行し、トランザクションごとに2バイトが処理されます)。
- L3の場合、‘w’ は32です(サイクルごとに1件のトランザクションが実行され、トランザクションごとに32バイトが処理されます)。
注釈
これらの値はDDRのチャネルごとに設定され、マッピングによりCPU周波数がメモリコントローラー(MC)チャネルの帯域幅に関連付けられます。このマップテーブルを調整すると、電力とパフォーマンスの特性に影響します。
動作パフォーマンス・ポイント(OPP)のフレームワークと構文については、[Generic OPP (Operating Performance Points) Bindings](https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt) を参照してください。
## スケジューラーDVFS設定を構成する
スケジューラーDVFS設定は `post_boot script` ファイルで定義されます。
すべての起動完了後設定は `meta-qcom-hwe/recipes-core/initscripts/files/post_boot.sh` スクリプトにあります。詳細については、[post_boot.sh](https://github.com/qualcomm-linux/meta-qcom-hwe/blob/scarthgap/recipes-core/initscripts/files/post_boot.sh) を参照してください。
Last Published: Jan 01, 2026
[Previous Topic
スケジューラーを構成する](https://docs.qualcomm.com/bundle/publicresource/80-70020-3JA/topics/scheduler.md) [Next Topic
pinctrlドライバーを構成する](https://docs.qualcomm.com/bundle/publicresource/80-70020-3JA/topics/pinctrl-configuration.md)