Steam DeckをはじめとするAMD搭載Linux機のカクつきを減らすパッチがLinuxカーネルへ投稿され、初期テストでは1% low FPSが31.8%向上したことが明らかになりました。
ビジーなCPUコアのクロック低下を防ぐ「epp_boost」
このパッチは、Metaに所属するLinuxカーネル開発者のDavid Vernet氏が、AMD P-Stateドライバーの新機能「epp_boost」としてLinuxカーネルメーリングリストへ投稿したものです。
Steam Deck専用の修正ではありませんが、利用できるのはAMD P-Stateのactiveモードを使用し、MSR経由でCPPCを制御できるシステムに限られます。
Vernet氏の説明によると、ゲームのメインスレッドやレンダリングスレッドは、GPUの処理待ちなどによって短いスリープを頻繁に挟みます。現行のドライバーでは、このスリープによってハードウェア側の性能シグナルが減衰し、復帰直後の処理が低いクロックから始まることで、遅いフレームが発生する場合があると明らかにしています。実際、デフォルト設定のSteam Deckでは、『Civilization VI』のメインスレッドを処理するコアの使用率が98%に達していたにもかかわらず、動作クロックの中央値は2.43GHzにとどまっていたとのことです。
今回の新機能、epp_boostは各CPUコアのビジー度を10msに1回を上限として確認し、使用率が50%以上のコアについて、EPPを一時的に「performance」へ切り替えます。その後、ビジー状態を示すサンプルが300ms間検出されなければ、元の設定へ戻します。これは全コアを常時performance設定へ固定する方法とは異なり、負荷の高いコアだけを一時的に切り替えるため、携帯機で問題となる不要な消費電力の増加を抑えながら、カクつきの原因となるクロック低下を防ぎやすい仕組みです。
平均FPSは変わらず、1% Lowフレームが改善
Vernet氏がSteam Deck LCDモデル上で『Civilization VI』の内蔵ベンチマークを実行した結果、epp_boostの有効時には、メインスレッドを処理するコアの動作クロック中央値が2.43GHzから3.5GHzへ上昇しました。
それに伴い、1% Low FPSは31.8%向上し、フレームタイムの99パーセンタイル(p99)も4.1%改善しました。一方で、平均FPSとフレームタイムの99.9パーセンタイル(p999)には変化がなかったとのことです。1% Low FPSは、ゲーム中の一時的なフレームレート低下やカクつきの体感に関わる指標です。そのため、平均FPSが変わらなくても、1% Low FPSの改善によってゲームプレイが滑らかに感じられる可能性があります。
ただし、現時点で示されているゲームの計測結果は『Civilization VI』の1タイトルのみで、FPSの絶対値も明らかにされていません。ほかのゲームや、Ryzenを搭載するノートPC・デスクトップPCなどで、同様の効果が得られるかは不明です。加えて、パッチはまだRFCとして審査中で、メインラインのLinuxカーネルには統合されていません。一般環境へ配信される時期も未定です。
現時点で試すには、パッチを適用したカーネルを用意したうえで、起動オプションに「amd_pstate.epp_boost=1」を指定するか、sysfsの「/sys/module/amd_pstate/parameters/epp_boost」から有効化する必要があります。
SteamOSはLinuxカーネルを基盤としており、SteamOS化でハンドヘルドの性能が向上した事例のように、OS側の制御が性能へ影響することもあります。今回の機能も、メインライン化されたうえでValveがSteamOSへ採用すれば、Steam Deckユーザーが通常のアップデートを通じて恩恵を受けられる可能性があります。


