AMD P-State Linuxパッチ、ゲームFPS下限を31%改善
MetaのカーネルハッカーDavid VernetがAMD P-Stateドライバにepp_boost機能を提案。Steam Deckで1%低FPSが31.8%向上し、Linuxゲーム性能に大きな影響を与える可能性がある。
MetaのLinuxカーネルハッカーであるDavid Vernetが、AMD P-Stateドライバ向けの新機能「epp_boost」を提案するパッチ群をカーネルメーリングリストに投稿した。この変更は、最近ビジー状態だったCPUコアに対して動的にEnergy Performance Preference(EPP)を引き上げる仕組みを導入するもので、特にゲームワークロードにおいて顕著な効果を発揮する。Vernetのテストによれば、Valve Steam Deck上で動作するCivilization VIのベンチマークにおいて、1%低FPSが31.8%向上し、p99フレームタイムも4.1%改善したという。
ゲーム性能を制約する要因
現在のAMD P-State CPU周波数スケーリングドライバは、アクティブ(EPP)モードにおいて、プラットフォームが自律的にmin_perfとmax_perfの間で動作点を選択する。この選択はEPPヒントによって偏りを与えられるが、カーネルはポリシーや制限の変更時にのみCPPC要求を書き換える。こうした設計は、1つのスレッドが大半の負荷を占めつつ頻繁に短いスリープを行うワークロード(多くのゲームが該当する)で問題を引き起こす。
スリープごとにハードウェアのパフォーマンス信号が減衰し、起床後のバーストが低い動作点から始まるため、テールレイテンシが増大する。Vernetはこの問題を次のように説明している。
ゲームのメインスレッドやレンダリングスレッドは通常、毎フレームごとにfutexやGPUフェンスで短時間ブロックする。その結果生じる周波数の低下は、スタックフレームやフレームタイムパーセンタイルの悪化に直接現れる。cpufreq層でこれを解決するには、かなり狭い経路を歩む必要がある。グローバルにEPP=performanceを強制すればテールは改善するが、すべてのコアのすべてのワークロードで電力を消費する。これはCPUとGPUが電力予算を共有するハンドヘルドでは特に問題となる。ビジーコアのmin_perfを引き上げるのは一見すると適切な外科的修正に思えるが、マイクロアイドル中やvsync待機中でもコアを公称値以上に固定してしまう。私がVan Gogh(Steam Deck)で実施した実験では、その方法はSMUの共有CPU/GPUブースト管理を乱し、何もしない場合と比べてフレームタイムテールを悪化させた。
epp_boostの仕組み
この問題に対処するため、パッチシリーズではオプトイン方式のコアごとのEPPブースト「epp_boost」を実装している。この機能が有効化されると、update_utilフックが各コアのC0滞在率(delta MPERF / delta TSC)を最大でも10ミリ秒ごとにサンプリングする。もしサンプルでコアが50%以上ビジーと判断されれば、そのコアのMSR_AMD_CPPC_REQのEPPフィールドがperformance(0)に設定される。この状態は、その後300ミリ秒間にわたってビジーサンプルがなければ解除され、ポリシー管理が最後に保存した要求に戻される。
Vernetが示したベンチマーク結果は明確だ。Steam Deck上のCivilization VIにおいて、1%低FPSは31.8%向上し、p99フレームタイムも4.1%改善した。この改善はSteam Deckだけでなく、他の現代的なAMD Ryzenベースのハンドヘルドやデスクトップシステム全体にも恩恵をもたらす可能性がある。特に、CPUとGPUが密接に電力予算を共有する携帯ゲーム機では、従来の全コア固定ブーストに頼らないこの動的制御が重要になる。
カーネルとLinuxゲーミングへの展望
本パッチはまだレビュー段階だが、ゲーム性能に直結する改善であるため、コミュニティの関心は高い。AMD Ryzen系のプロセッサを搭載するLinuxゲーミングデバイス(Steam Deck、ROG Ally、Lenovo Legion Goなど)のユーザーはもちろん、デスクトップでのProton経由のゲームプレイにも恩恵が及ぶ。また、このアプローチはゲーム以外にも、短いスリープを伴うバースト的なワークロード全般(インタラクティブアプリケーションや低レイテンシ処理)に応用可能だ。
同様の観点から、先日取り上げたLinux Cache Aware Scheduling拡張、MySQL最大360%高速化でも、ワークロード特性に応じたスケジューリング最適化が議論されている。epp_boostは周波数制御の面でこれに並ぶ注目すべき改良と言える。
編集部の見解
短期的には、本パッチがマージされればLinux上のゲーム体験が大きく向上する。特にSteam Deckユーザーにとって、フレームレートの下限が安定することは実用上の価値が高い。ただし、この機能はオプトイン方式であり、ディストリビューションやカーネルコンフィグで有効化する必要がある。今後数ヶ月のうちに主要なディストリビューションがこのパッチをバックポートするかどうかが、実際の普及を左右するだろう。 長期的な視点では、AMD P-StateドライバがCPUとGPUの協調制御をより細かく行えるようになることで、ハンドヘルドゲーミングデバイスのLinux対応が標準化される可能性がある。また、この仕組みは電力効率を犠牲にせずに性能を引き出す手法として、サーバーやエッジコンピューティングの分野でも応用が検討されるかもしれない。ただし、EPP制御の挙動はハードウェアのマイクロコードにも依存するため、AMD側のファームウェア更新も併せて評価する必要があろう。
参考
- 「AMD P-State Linux Driver Patches Can Boost 1%-Low FPS Gaming Performance By 31%」, by Michael Larabel — Phoronix, 2026-07-28T10:03:00.000Z (ARR)
- 元記事URL: https://www.phoronix.com/news/AMD-P-State-Better-1p-Lows
よくある質問
- このパッチはどのLinuxカーネルバージョンにマージされる見込みですか?
- 現時点では提案段階であり、具体的なマージ先バージョンは未定です。通常、新機能のパッチは次期メジャーカーネル(例えば6.13など)をターゲットに議論されますが、バックポートの可能性もあります。
- epp_boostはIntel CPUでも利用できますか?
- 本パッチはAMD P-Stateドライバ専用の変更です。Intel CPUではintel_pstateドライバが使われており、同様の機能は現時点では提供されていません。ただし、同様のアイデアは適用可能かもしれません。
- パッチを自分で試すにはどうすればよいですか?
- カーネルメーリングリストからパッチを取得し、ソースコードに適用してカーネルを再構築する必要があります。もしくは、一部の実験的なディストリビューション(Arch LinuxのAURなど)でテストパッケージが提供される可能性があります。
コメント