Chienomi

amd-pstate-epp CPUドライバの効果 (Linux)

Live With Linux::kernel

一般的にLinuxで利用するCPUドライバはacpi-cpufreqである。

acpi-cpufreqは現在の利用状況とgovernorに応じてCPUの周波数を変更する。

しかし、現代では電力とパフォーマンスのコントロールは非常に複雑に制御され、省電力と性能を両立している。P-Stateはそのような技術のひとつで、amd-pstate-eppはLinux 6.3で追加された、AMD Ryzen向けのCPUドライバである。

このCPUドライバは仮想のpowersave governorとperformance govenorを提供する。 powersave governorは電力性能を重視し、performance govenorは最大パフォーマンスを出そうとする。 これは、Windowsの省電力/パフォーマンスの設定とだいたい同じ。

新しいamd-pstate-eppドライバを使うには、

# echo amd_pstate > /etc/modules-load.d/amd_pstate.conf

のようにしてモジュールをロードさせ、カーネルオプションとして

amd_pstate=active

を追加する。

ブラウザパフォーマンス計測

Antutu HTML5 Benchmarkの結果。 ベンチマークの参考値はChienomiの記事にあるが、計測条件が大きく異なるため、それらと値は比較はできない。

  • Linux 6.8.5
  • Vivaldi 6.6.3271.61 (stable)
  • Ryzen 9 5950X, DDR4-2133, RX7900XTX
CPU Driver Governor Score
acpi-cpufreq performance 79899
amd-pstate-epp performance 82573

放電計測

IdeaPadの放電レートをamd-pstate-epp/powersaveで計測。 こちらは計測条件があまり変わっていないため、acpi-cpufreqの結果として前述のベンチマークの結果を引用する。

Driver Governor Idle Antutu Antutu Score
acpi-cpufreq powersave 4.2 9.55 34085
amd-pstate-epp powersave 3.4 10.70 54104

acpi-cpufreqのほうは最低周波数固定なのに対して、amd-pstate-eppでは電力効率を重視するように要求する。このため、amd-pstate-eppでは周波数は上がりやすい。 一方、acpi-cpufreqは最低周波数でもそれなりに高い(1.7GHz)のに対し、amd-pstate-eppは非常に低い(400MHz)ため、振れ幅が大きい。

結果的に、アイドル時は明らかにamd-pstate-eppのほうが低い値になった。

Antutu HTML5 Benchmarkでは最大値自体は10.70と高いが、変動幅がacpi-cpufreqと比べ非常に大きく、最小は6.73Wであったため、ベンチマーク全体での消費電力では優れていそうであった。

amd-pstate-eppでは必要であればpowersaveであっても周波数を上げてパフォーマンスを出すため、acpi-cpufreqのpowersaveと違ってウェブブラウザの利用がきついということもなく、普通にpowersaveのまま使える。 このため、スコアはacpi-cpufreqのperformance(61794)に近い。

結論

  • ウェブブラウザなどシングルスレッドが活発な状況のパフォーマンスは明確に向上する
  • アイドル時の省電力性はより高い
  • powersaveでのブラウザ利用において、うまくストレスを感じないパフォーマンスを出しつつも、良好な省電力性を保っている
  • 従来、AMDのプロセッサの低負荷時の省電力性がIntelと比べていまいちな印象であったが、大きく改善された
  • acpi-cpufreqから乗り換えるのがおすすめ