【VRChat】Ryzen 9 9950X3D のパフォーマンスを最大限に引き出す2種類の方法

VRChat動作検証結果

先日、2024年3月12日に発売された Ryzen 9 9950X3D を入手しました。本CPUは、Zen 4 アーキテクチャを採用した Ryzen 9 7950X3D の後継モデルであり、基本的な仕様はおおむね継承されています。そのため、7950X3D の性能を最大限に引き出すための設定方法は、9950X3D においても有効であると考えられます。

しかし、7950X3D に関しては、性能を最適化するための設定方法に関する網羅的かつ信頼性の高い情報が、日本語はもちろん英語でも十分に整備されていませんでした。そこで私は、インターネット上の情報を徹底的に調査した上で、実際に Ryzen 9 9950X3D を用いて比較検証を行いました。

本記事では、Ryzen 9 9950X3D の性能を最大限に引き出すための具体的な設定方法と、その検証結果について解説します。

9950X3Dのパフォーマンスを引き出すためには?

仕様を確認

まずは仕様を再確認しましょう。この仕様を比較するとわかる通り、9950X3D と 7950X3D は 2機のCCX構成(CCX0 + CCX1)である点は同一です。また、2CCX構成のCPUはVRChatの処理を片方のCCXにのみ任せるように制御しないと、全てのCCXを活用した場合と比較して、パフォーマンスが大きく低下します。いわゆる”CCD跨ぎ”です。これはVRChatに限らない既知の現象で、CPUの仕様上必ずそのような結果となります。また、9950X3Dの最大の特徴である、3D V-cache はCCX0にしか搭載されないため、VRChatのパフォーマンスを最大化させるには、VRChatに関連するCPUの処理をCCX0に集中させる必要があります。これは、同じく3D V-cache 搭載の 9900X3D や 7950X3D/7900X3D でも同じです。また、3D V-cacheを搭載していないCPU(9950X/9900X,7950X/7900X)でも、CCX跨ぎによるパフォーマンス低下をさけるため、いずれかのCCXに処理を集中させる必要があります。すべてのCCXを活用したほうがパフォーマンスが出ると誤解しがちですが、多くのゲームに関してはそうではありません。

イメージ図:Ryzen9 9950X3D のゲーム性能を引き出せる状況
参考情報

性能を引き出すための方法は二つ

さて、上記の仕様表から2機のCCX構成のRyzen9 9950X3D ではCCX0にCPU処理を集中させる必要があることがわかります。2025年3月時点では、2つの方法があることを確認しています。

Game Mode を有効にする

9950X3D の性能を引き出すために一般的なゲームでも利用される方法です。大手のPCメディア等で紹介されている方法です。このモードにすることで、Windows がゲームとして認識しているソフトウェアが起動した際に、CCX1を休止し、すべての処理をCCX0で実行するようにします。そのため、この方法で動作させている場面では、9950X3D は実質的に8コアCPUになります。つまり、Game Mode で動作中の9950X3Dは実質 9800X3Dです。発揮される性能も9800X3D とほぼ同じになります。詳細な設定の手順は、後述します。

VRChat の起動オプション (CPU Affinity) を利用する

VRChatの起動オプションで、VRChatのCPU処理を特定のCPUコアに割り振るように手動設定が可能なため、その設定を利用する方法です。9950X3Dの場合は、CCX0のコア(スレッド)が0~15なので、 「 --affinity=FFFF 」 とSteamの画面に記載します。9900X3DなどCCX0あたりのCPUコア数が6の場合は、FFF です。SMTを無効化した場合は異なる設定をする必要があります。なお、CPU AfffinityとGame Mode を両方有効にした場合、筆者の環境では動作が不安定になったため両立はできないと思われる。

参考文献
Launch Options
📘 Advanced Options: These options are more advanced and designed to help creators debug issues with their creations. The...

VRChat 開発者は、自動設定(Game Mode)を推奨している?

また、VRChat のフォーラムをあさっていたところ興味深い投稿がありました。

Do note however that on most systems running affected AMD CPUs the core affinity should also be configured automatically now, without the parameter.

(訳:ただし、影響を受けるAMD CPUを搭載したほとんどのシステムでは、現在はパラメータなしでもコアアフィニティが自動的に設定されるはずであることに注意してください。

Since we now automatically try to detect the best configuration anyway the launch parameter is purely a power-user option.

(訳:いずれにしても、最適な構成を自動的に検出しようとするため、起動パラメータは完全にパワーユーザー向けのオプションです。

そのフォーラム内では、2CCX構成のCPUに関して、特別な場合を除きCPUのAffinity(コア固定)を手動で設定する必要はないと記載があります。

また、"自動的に設定されるはず"というのは、Game mode 機能のことを指していると推測されます。この推測の理由としては、VRChat公式フォーラムでの開発者の発言が「パラメータなしでも自動的に設定される」と述べていますが、Windows 11のGame Mode機能がゲームプロセスを検出して自動的にCPUのリソース割り当てを最適化する仕組みである点で一致するためです。また、さらに、後述の検証結果でGame Mode有効時と無効時でパフォーマンスに明確な差が見られたことからも、この自動最適化機能がGame Modeを指している可能性が高いと判断しました。なお、この情報を書いている tau 氏は VRChat の開発者と思われます。フォーラム内でVRCSDK 3.6.0 でのバグ報告に対して、「We'll include a fix (以下略)」という表現でバグ修正を行う旨を返信しています。

しかし、以前7950X3Dユーザーで、自動最適化ではなくCPU Affinityの手動設定のほうが良いというユーザーもいました。この相反する情報に関して、実際にどちらの設定が優れているのか検証を通じて明らかにしたいと考え、今回、調査検証を実施しています。

参考文献
Please provide an option to adjust CPU affinity | Feature Requests | VRChat
With EAC, it is no longer possible to adjust CPU affinity for the VRChat process. On AMD processors in particular, restr...
VRCSDK 3.6.0 breaks GetComponent() | SDK Bug & Feature Requests | VRChat
3.5.2: working 3.6.0: exception occured like below GetComponent() throws because of failing to get the type of generics ...

Game Modeを有効にする際の注意事項

検証内容と結果にふれる前に、Game Mode を適切にVRChatで動作させるための手順を確認しました。これが一筋縄ではいかず、落とし穴が複数ありました。

VRChatでGameModeを有効化させるためには、具体的には下記の設定が必要です。赤線の部分が一般には紹介されていない、VRChat(SteamVRゲーム全般)に必要な要素です。

  • BIOS/Chipset Driver を最新版適用 (付随するドライバー全てインストール)
  • 電源プランを「バランス」で固定する(SteamVRで動かす際に必要)
  • Windows 11の最新化や Windows Game Bar の最新版適用
  • VRChatのウィンドウをアクティブ化する(都度実施)

これらは相互に関連しており、一つでも適切に設定されていないと、自動最適化が期待通りに機能しませんでした。特に電源プランの設定とウィンドウをアクティブにさせることは、SteamVR利用するゲーム特有の設定となります。では、必要な設定ついて、個別に説明していきます。

BIOS/Chipset Driver の最新化

BIOSは、9950X3D/9900X3D に対応したバージョンに更新しましょう。Chipsetドライバーの最新化については、AMDが提供する最新版(7.02.13.148)への更新が必要です。これは3D V-Cache技術を適切に活用するために重要な要素となります。

チップセットドライバーはご自身の環境に応じて、下記から入手してください。

電源プランを「バランス」で固定する

電源プランについては、特に注意が必要な項目です。AMDドライバーによる最適化を活用するために、「バランス」設定の使用が不可欠です。しかし、SteamVRには2016年から続く既知の不可解な仕様があります。それは、起動時に自動的に「高パフォーマンス」プランに切り替わってしまうということです。

この問題に対処するため、グループポリシーエディターを使用してバランスプランを固定する必要があります。グループポリシーエディターを開いたら、コンピューターの管理テンプレート > システム > 電源の管理 から、「カスタムのアクティブ電源プランを指定する」を有効化し、バランスプランのGUIDを指定します。 なお、Windows Pro のみ、グループポリシーエディターを使用した設定が利用可能です。 

バランスプランのGUIDはコマンドプロンプトから下記のコマンドを実行することで確認可能です。

powercfg /list | findstr "バランス"
参考情報
SteamVR changes power plan to High Performance :: SteamVR Bug Reports
Every time when SteamVR starts it changes the power plan to high performance. That destroys the ability of core parking ...
SteamVR 1.11.13 changes Windows Power Plan to "High Performance" (illegal) :: SteamVR General Discussions
When starting, SteamVR 1.11.13 changes the Power Plan (Control Panel / Power Management) to "High Performance". (current...

OS関係の最新化

Windows11の利用や最新化(24H2へのアップデート)はAMDが推奨しているため、特段理由がなければ実施しましょう。AMDは2024年にWindows 11 24H2の最適化を公式に発表しており、分岐予測の最適化により最大13%の性能向上が見込めるとしています。実際、この発表の際に9700Xでパフォーマンスの検証も行いましたが、目に見えてわかるほどfpsが向上しました。※(下記のXの投稿)23H2向けにも更新プログラム(KB5041587)で同等の性能向上が可能ですが、最新ビルドへの移行が推奨されています。

24H2ビルドは不具合が多いことでアップデートをためらっているユーザーも多いでしょうが、筆者も現在24H2で2か月ほどメインPCを利用していますが、大きな問題は起きていません。ただ、トラブルがなかったわけではありません。筆者の環境では、古いチップセットドライバーやGPUドライバーで動かしている23H2環境から24H2へアップグレートした際にトラブルが起きました。しかし、最新のドライバーを適用したうえで24H2にアップデートすると常用できる程度に安定化しました。まれにOSごとフリーズするなど、若干不安定な気はしますが頻発はしてないので致命的な問題にはなっていません。

Windows Game Bar も、Windows Game Modeにかかわるコンポーネントですので、Microsoft Store から 最新化しておきましょう。

※(余談)NVIDIAのドライバーもハズレがあるのでそれが原因のフリーズもあります。特に3月29日時点の最新ドライバー 572.83 ではVRChatの起動が明らかに前のバージョン 572.70 より不安定です。

Ryzen 9000 Series Community Update: Gaming Performance
The new “Zen 5” architecture first introduced in high end laptops earlier this summer is now available in a full stack o...

VRChatのウィンドウをアクティブに

VRChatのウィンドウをクリックしてアクティブにすることで、Game Modeが適切に機能し、3D V-Cache搭載のCCD0に処理を集中させることができます。逆をいうと、VRChatにログインしている状態で、Discordやブラウザを触ってしまうと、Game Mode が適切に機能しなくなることを意味します。何かほかのソフトを触ったらVRChatのウィンドウを都度クリックし、アクティブにする必要があります。非常にめんどくさいです。

タスクマネージャーの負荷:ウィンドウのアクティブを解除すると CCX1 の負荷が0になり、CCX0ですべての処理が行われるようになる

余談:おまじないのコマンド実行は不要

一部メディアで紹介されている下記のコマンドは、VRChatのパフォーマンス最適化という観点では、不要です。

cmd.exe /c start /wait Rundll32.exe advapi32.dll,ProcessIdleTasks

このコマンドは通常システムがアイドル状態の時に実行される低優先度タスクを強制的に実行するものです。そのため、このコマンドと同様の効果はPCを放置してれば、そのうち適用されます。ProcessIdleTasksの目的は「ベンチマークのために保留中のアイドルタスクを即座に実行させる」ことであり、メモリ解放やPC高速化とは直接関係がないとWindowsの有識者ブログで明言されています​。実際このコマンドを実行しても画面上には何も起こりませんし、完了後にシステムが劇的に軽くなるわけではありません。このコマンドを実行することで、Game mode でゲームとして識別する対象リストも最新化されますが、VRChatのような古いゲーム(厳密にいうとゲームではないが)では、既にリストに登録されている可能性が高く、強制更新の効果はないでしょう。また、VRChat以外の新しく買ったゲームをゲームモードの対象として追加したい場合も、Game Mode の画面から手動で対象に追加することで対応可能です。そのため、このコマンドで対応する必要はありません。また、パソコンを放置していれば勝手にこのコマンドと同じ内容が実行されてリストが更新されるため、このコマンドをわざわざ覚える必要はありません。複数名のインフルエンサーがこのコマンドを紹介していますが、このコマンドの詳細な意味や挙動を紹介している人は見当たりませんでした。『これをするとなんかいいらしい』といった風に、都市伝説的に広まった噂なのでしょう

What does Rundll32.exe advapi32.dll,ProcessIdleTasks do?
It is a misconception on the net that Rundll32.exe advapi32.dll,ProcessIdleTasks clears the memory or makes PC run faste...

次ページに続く

次ページで9950X3D に加えて9700X も比較対象として検証した内容と結果を記載する。

コメント

タイトルとURLをコピーしました