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

VRChat動作検証結果

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

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

この記事の内容はRyzen 9 シリーズ全般に適用可能な内容であるため、本記事ではRyzen 9 の性能を最大限に引き出すための具体的な設定方法と、その検証結果について解説します。

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

仕様を確認

まずは仕様を再確認しましょう。この仕様を比較するとわかる通り、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を活用したほうがパフォーマンスが出ると誤解しがちですが、多くのゲームに関してはそうではありません。

※「本記事では、3D V-Cacheが搭載されたコア群(CCD)をCCX0と呼称します」

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

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

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

Game Mode を有効にする

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

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...

【追記2025/06/28】Process LassoによるCPUリソース管理という選択肢

本記事で紹介している手段以外にも 「Process Lasso」というツールを使ってCPUリソースを細かく管理する方法もあります。これは万人向けではありませんが、特定の状況下で有効な選択肢となり得ます。

Process Lassoのメリットと使い方

Process Lassoの最大のメリットは、プロセス単位でCPUコアの割り当て(アフィニティ)を恒久的に指定できる点にあります。

例えば、Ryzen X3DシリーズのCPUで、以下のような詳細な制御が可能です。

  • VRChat.exe 本体はもちろん、SteamVR (vrserver.exe)VirtualDesktopStreamer.exe といったVR体験に直接関わる重要なプロセス群を、3D V-Cacheが搭載されたCCX0(CPU 0-15)にまとめて割り当てる。
  • その一方で、Discordやブラウザ、その他バックグラウンドで動くVRとは直接関係ないプロセスを、すべてCCX1側(CPU 16-31)で処理させる。

このように、処理の特性に応じてCPUリソースを完全に分離させることで、VR関連の処理が他のアプリケーションから干渉されるのを防ぐ、といった使い方ができます。

上級者向けのツール

ただし、こうした設定は非常に手間がかかります。対象としたいプロセスを一つ一つ手動で登録・設定していく必要があり、どのプロセスが重要かを自分で判断しなければなりません。

また、設定を誤るとかえってパフォーマンスを低下させるリスクも伴います。そのため、Process Lassoは手軽な解決策ではなく、PCのシステム動作に詳しく、特定の目的を持ってCPUリソースを厳密に管理したいと考える上級者向けのツールと言えるでしょう。

次ページに続く

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

検証の前提条件と環境設定

下記の検証環境を用意し Game Modeが有効な状態とCPU Affinity設定が有効な状態、またその双方が無効な状態で検証を行いました。また、比較対象として、手元にあったRyzen 7 9700X も検証対象に加えて調査を行いました。

テスト環境(CPUと設定)

  • AMD Ryzen 7 9700X (設定なし)
  • AMD Ryzen 9 9950X3D (設定なし)
  • AMD Ryzen 9 9950X3D (Game Mode ON)
  • AMD Ryzen 9 9950X3D (affinity=FFFF)

検証PC

なお、9950X3DはPBO OFF 、TDP 170 W設定で稼働しています。CPU クーラーの ARCTIC Liquid Freezer Ⅲ 280 はRyzen 9 9950X3D を十分に冷やしきれており、検証中のCPU温度は最大でも67 ℃でした。(室温:23℃) 普段使いでもVRChat中の冷却は十分だと感じています。

測定方法

  • fps 情報取得       :CapframeX
  • 目視での状況確認   :VirtualDesktopのパフォーマンスオーバーレイ
  • CPUコアの利用状況  :fpsVRのCPU使用率の表示を確認

負荷の増大と主に、fpsがどのように変化するかをCapframeXで記録した。また、ちくわの本数とfpsの変動の相関関係を VirtualDesktopで目視にて確認して記録した。ただし、CapframeXでの測定はSteamVRとの相性が悪いという既知の問題により測定データの取得に失敗することがありました、CapframeXでのデータが取得できなかったテストパターンもあることはあらかじめ断っておきたい。無限に降ってくるちくわを眺め続ける苦行を筆者以外にもやってくださる方がいればぜひ同じ方法で検証してデータをネットで公開してください。詳細な手順をお教えします。

HMDの接続方法・グラフィック設定

GPU負荷が低いがCPU負荷が高い状況を作り、CPUのパフォーマンスがfps に直接影響するCPUボトルネックな状況を作っています。なお、VirtualDesktopの解像度設定を Highの状態でも同じ結果になることを確認してます。

  • HMD: Quest 3
  • Virtual Desktopで接続
  • 解像度設定:Virtual Desktop Potato(片目当たり)
  • グラフィックプリセット:低
  • リフレッシュレート:120 Hz
  • 極力バックグラウンドアプリケーションは停止

負荷のかけ方(VR)

VRChat - Home
Chikuwa Paradise by yoshio_will - a virtual reality world on VRChat

空から無限にDynamicBone入りのChikuwaが降ってくるワールドで、頭を動かさずにちくわを眺め続けました。CPUだけに非常に高い負荷がかかるうえに、完全ではないもののある程度の再現性がある負荷が発生する。※ここ以外に、VRChat上で再現性のあるCPU負荷をかけることができるワールドや手段をご存じの方がいればぜひ教えてください。

テスト結果

fpsの測定結果

CapFrameX で測定したfps  ※Affinity 設定のパターンは何度やってもCapframeXのデータが正しく出力できなかったため、目視で確認したおおよその内容を手書きで追加してる点はご容赦願いたい

120fpsを最も維持できたのは、affinity 設定を利用した場合だった。なお、この設定を入れた際、Game Modeは無効にして検証を行っている。この設定では、ちくわが480 本を超えるまで、120fpsを維持していた。次にfps が高かったのは、GameModeを有効にしている場合だ。GameMode設定が有効な状態ではちくわが450本を超えるまで、120fpsを維持していた。 そして、適切な設定がされていない9950X3D は 9700X と比べても圧倒的に低いfpsになった。"CCD跨ぎ"による性能低下の影響だろう。

コアごとのCPU負荷分散傾向

Game Mode利用時は、CPUの負荷は完全にCCX0でしか発生しておらず、Game Mode動作に関する期待値通りの動作になっています。対して、affinity 設定を利用している場合は、CCX0に負荷の大半が集中しているものの、CCX1にも少しCPU負荷が発生していました。また、特定のコアがCPU使用率90~100%に偏る傾向が、affinity 設定の場合は確認されました。おそらくWindowsの自動的なコアの負荷分散とaffinity設定の挙動が鑑賞していると推察されます。affinity 設定はあくまでVRChatの処理だけをCCX0に寄せる設定であるため、SteamVRや VirtualDesktop の処理はCCX0やCCX1を行ったり来たりしている可能性があります

結論:CPU affinity 設定 がおすすめ (2025年10月更新)

10月29日時点の結論 CPU affinity 設定 がおすすめ

CPU affinity 設定 のほうがお勧めです。 affinity 設定はCPUの負荷の偏り方に不自然な点はあります。しかし、affinity 設定で3か月ほどVRChatプレイ時をしても、それが実害を及ぼすような場面はありませんでした。ここ半年ほど実際にVRChatで様々な負荷の状況で利用した結果なのである程度信ぴょう性があると考えます。また、ゲームモードがこの記事に記載した設定をしても適切にコア割り振りが働かない場面が起きた事例をフレンドの9950X3D ユーザーで確認しており、より確実にCPUパフォーマンスが高く動作させることができるCPU affinity 設定がお勧めという結論になりました。

(参考過去ログ)3月29日時点の結論 

2025年3月29日時点の結論としては、Game Mode か CPU affinity 設定のどちらが適切な設定か断定できないと筆者は結論付けた。継続的な利用での安定動作に関する評価がまだのためです

fpsの測定結果だけ見ると、より高いfpsを発揮できているCPU affinity 設定のほうが適切に見えます。理屈的にもCCX1 が完全に無効化されて、利用できるCPUのリソースが減ってしまうGameModeよりも CPU affinity設定のほうがパフォーマンスがでるのは納得がいきます。しかし、affinity 設定はCPUの負荷の偏り方に不自然な点があり、長期的に利用し安定性の観点でも評価をする必要があると考えている。あくまで今回の結果はちくわが無限に降ってくるワールドでの計測であり、一般的なVRChatの遊び方とは逸脱してる点も考慮が必要です。

ただ、どちらがいいかと聞かれれば、Game Mode をお勧めする。理由は、他のゲームでも9950X3Dのパフォーマンスを最大限に発揮させるにはGame Modeが必要な設定であるからです。モンスターハンターなどのデスクトップで遊ぶゲームで9950X3Dのゲームパフォーマンスを適切に引き出すには、Game Mode設定は必須です。VRChatもGame Mode利用を前提とすることで、設定をONのままで一貫して運用でき、管理がシンプルになるでしょう。VRChatのウィンドウを都度クリックしないといけない点が、 Game Mode 利用時のデメリットではあります。ただ、筆者的にはそこまで苦ではない操作ですし、fpsVRを見たらCPU負荷の偏りからすぐにGameModeがONか確認できるため、そこまで大きなデメリットとは思ってません。ほかのゲームもよく遊ぶなら Game Mode 、VRChatしかやらないなら affinity 設定という判断でもいいかもしれません。

9950X3D は玄人向け

9950X3Dは明らかに高いポテンシャルを持つCPUですが、その性能を安定して引き出すためには、適切な設定と環境整備が不可欠です。筆者としては、ゲーム用CPUとしては面倒な設定や運用なしに利用できる、9800X3DやCore Ultraのほうがおすすめです。本記事では検証していませんが、ゲーム性能に関しては9800X3Dと9950X3Dはほぼ同等であることから、ゲームのみを目的とするユーザーであれば9950X3Dは費用対効果の観点からもお勧めできません。あくまで9950X3Dは自作PC好きのギーク向けCPUであり、そうでないユーザーはほかのCPUを選んだほうが無難だと考えます。

話は若干それましたが、今後も継続的な検証を通じて、9950X3D 利用時にVR体験を最適化するための知見を蓄積していきたい。

コメント

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