見出し画像

「レジストリ設定1つでエイムレスポンスが変わる」Win32PrioritySeparationの真価&おすすめ値

下の記事はWin32PrioritySeparationの100回検証データ+詳細値がある記事です。

FPSゲーマーがFPSを上げる、レイテンシを下げるといった記事を見るたびに目撃する「Win32PrioritySeparation」について

まず、Win32PrioritySeparationとはなんぞや?
Win32PrioritySeparationは、Windowsに組み込まれた機能で、フォアグラウンド(アクティブに使用しているアプリ)とバックグラウンド(サービスなどのプロセス)の両方のプロセッサ使用率を最適化するものです 。簡単に言うと、CPUの優先度を調整し、現在作業しているアプリを優先するか、バックグラウンドプロセスを優先するかを制御できますというもの。

でこれ、制御したからなんやって話
設定を調整する主な目的は、CPUがフォアグラウンドまたはバックグラウンドのプロセスに費やす時間の長さを調整すれば※コンテキストスイッチングを減らし、パフォーマンスを向上させるって点。よりスムーズなゲームプレイや良好なヒットレジストレーションにも繋がる可能性があるよねってこと。

コンテキストスイッチ (context switching)とは、コンピュータの 処理装置 (CPU)が現在実行している処理の流れ (プロセス、スレッド)を一時停止し、別のものに切り替えて実行を再開すること。 あるプロセスを実行している最中に、処理を中断してCPU内部のレジスタの状態などを特定のメモリ領域などに保存し、同じように途中で中断されていた別のプロセスの実行状態を読み込んで処理を再開する=別のスレッドの処理に移るプロセスのことで、負荷が高い可能性があるよね 、だからコンテキストスイッチングを最小限に抑えることで、パフォーマンスの向上が期待できるよねッて話。
色々な記事やYOUTUBEを見ると推奨設定数値がバラバラ(16や22、36とか)しかもこの内容に触れず、ここの数字はこれがいいと言われてますって、変更している本人も何も知らず脳死なのを見かける。

FPSゲーマーやリアルタイムアプリケーションの応答性にこだわる方に向けて、Win32PrioritySeparationの理解と最適設定方法、検証内容を解説。

なお検証にはCapFrameXとLatencyMonを使用ー試しただけだから感想用で。
Win32PrioritySeparation変更手順はWin + R を押して「ファイル名を指定して実行」を開く。
regedit と入力して「OK」を押す「ユーザーアカウント制御」が出たら「はい」をクリック。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl

左側のツリーをたどって上記の場所まで移動します↑
Win32PrioritySeparation をダブルクリックして「値のデータ」欄に、目的の値を 10進数または16進数 で入力(10進数タブ or 16進数タブを切り替え可能)入力が終わったら「OK」を押すレジストリエディタを閉じて、PCを再起動(※設定を確実に反映させるため)を繰り返して試す。


機能にはいくつかの重要な概念がある(ただの説明、覚えなくていい)

Fixed(固定): これは、プロセスの優先度やその他の要因に関係なく、各プロセスに一定の実行時間が割り当てられることを意味します。すべてのプロセスが同じ量のCPU時間を受け取ります。

Variable(可変): これは、プロセスの優先度に基づいて時間枠が変化することを意味します。優先度の高いプロセスほど、より多くのCPU時間を受け取る可能性があります 。(0進数21ではフォアグラウンドが125ミリ秒で処理されるのに対し、バックグラウンドは62.50ミリ秒で処理される)

Short Quantum(短いクォンタム)とLong Quantum(長いクォンタム): これらは、Windowsのプロセスケジューラがスレッドに割り当てる時間の長さを指します。短いクォンタムは頻繁な切り替えを、長いクォンタムはより長い連続実行を意味する可能性があります 。

Foreground Boost(フォアグラウンドブースト): これは、フォアグラウンドで実行されているプログラムに追加の時間を与える機能です 。設定によっては、通常の時間の2倍または3倍になることもあります

画像
試した数値

各カテゴリの理解
上記の表の各値には、主にインターバル、長さ、フォアグラウンド/バックグラウンドの優先度という3つの特性があります。これらの3つのカテゴリによって、テストする値がより良いFPS(フレームレート)をもたらすか、より良い入力応答性をもたらすか、またはその両方のバランスを取ろうとするかが決まります。

Long vs Short(長い vs 短い)
長いとFPSパフォーマンスの向上、ーディオアプリケーションの安定性の向上にもつながる場合がある。
短いとは、データがより速く更新され、フォアグラウンドアプリケーション(ゲーム)にとってより最新の状態になるため、理論的には応答性が向上するはずです。)
Variable vs Fixed(可変 vs 固定)
固定は、時間がアプリケーション間で均等に分割されることを意味します。
可変は、必要に応じて特定のアプリケーションがより長くCPUを保持できるようにします。
したがって、可変はゲームがより多くのCPU時間を獲得できるため、より良いFPSで実行される可能性があり、固定クォンタムはCPU時間がゲームと入力デバイスを担当するプロセス間で均等に分配されるため、より良い入力応答性を可能にするはずです

フォアグラウンドアプリケーションをブーストするかどうか
フォアグラウンドブーストなし
は、フォアグラウンドプロセスとバックグラウンドプロセス間で時間を1:1で分配する。
中程度のフォアグラウンドブーストはリアルタイムアプリケーション(ゲーム)を優先して2:1の比率にする。
高いフォアグラウンドブーストはCPUがバックグラウンドサービスと比較して、フォアグラウンドアプリケーションに3倍の時間を費やすようにします。

注意点とリスク

  • これらの設定変更は、システムの安定性や他のアプリケーションのパフォーマンスに影響を与える可能性があります。​

  • 特に高いフォアグラウンドブーストを設定すると、バックグラウンドプロセスの遅延やシステム全体の応答性の低下が生じることがあります。

理論的考察

上記のすべての情報を整理することで、各値の特性に基づいて特定の理論的な結論を導き出すことができます。
たとえば10進数の22(16進数の16) – Long、Variable、High foreground boost –は、ゲームのFPSパフォーマンスを向上させるためのすべての特性を備えていると理解できる。これは、長いインターバル(CPUに負担をかけるコンテキストスイッチングを最小限に抑える)、可変クォンタム(アプリケーションがCPUをより長く保持できる)、および高いフォアグラウンドブースト(CPUがゲームに3:1の時間を費やし、大きく優先する)によって示されます(数字上はね)

同様の値である 10進数の38(16進数の26 – Short、Variable、High foreground boost – は、短い応答を優先した妥協案であり、本質としてFPSの安定性をわずかに犠牲にして応答性を高めることを意味する。
XBitLabs  Win32PrioritySeparation - Understanding How the Values Impact Your Performance - XBitLabsの著者が特に関心を持っている値は、10進数の24(16進数の18)と 10進数の40(16進数の28)だった。
その理由は、値が固定を持ち、フォアグラウンドブーストがないため、CPUがゲームと入力デバイスを担当するバックグラウンドプロセスに1:1の時間を優先するためです。フォアグラウンドブーストがないことは、ゲームと入力デバイスを担当するCSRSSのようなバックグラウンドプロセス間で1:1のクォンタムを費やす計算負荷に耐えられるゲーマーにとってはより良いかもしれません
これまでの会話では、10進数の22と38がFPS向上に理論的に適している可能性があり、0進数の36または37がレイテンシの最小化に適している可能性が議論されました。また、固定長のインターバルは避けるべきであるという点も合意されました。

テスト

今回はCapFrameXとLatencyMon VALORANTデスマッチで
FPSをキャプチャできるその他のユーティリティ。レジストリの値を変更しながら、– 値は即座に適用されるため、リアルタイムで簡単にテストできます。  FPSと、テスト中の入力感がどのように変化するかを(適当な殴り書きメモしますっすー体感てきな所なんで流してもいいです。自分的メモなんで。

10進数で入力()内は16進数


20(14)FPSは平均的。レイテンシが良くキビキビ動く体感はあるがキル速度が速く感じる(敵自分どちらもww)サブモニターに映してるYOUTUBEがカクつく。
21(15)と22(16)fpsは平均的 サブモニターは普通。ただ22(16)の方がたまーにカクツキがある感じがした。レイテンシは普通。
24(18)25(19)なんか普通、よくわからん。レイテンシは普通。
26(1a)なんか重い気がする。FPSも平均より下に下がったり。レイテンシはわずかに低い。
36(24)FPSが安定してる。レイテンシはちょっと低い。
37(25)FPSが安定してる。レイテンシも変わらない。
38(26)FPSが安定してる。レイテンシも変わらない。
40(28)FPSが安定してる。レイテンシも変わらない。
41(29)42(2a)FPSが安定してる。レイテンシは普通。
てかよくわからんwwwwwww

Win32PrioritySeparationのwindows初期値はエディションによって違う(初期構築が違うから多分ここでかなり変わる)
HOMEなら2
PROなら38
WORKSTATIONなら26または36
SEVERなら18
自分のエディションの調べ方 スタート→「システム情報」「Windowsの仕様」セクションを見る。「エディション」欄に表示される(例:Windows 11 Home、Proとか)

こうやってみると一般家庭のPCはHOMEが多いからLong Fixed Noの2はうなずける(バランスいいし、なにより安定性重視、バックグラウンドも優遇。でもフォアグラウンドブーストがないからゲーム特化ってわけじゃない)レスポンスが遅め、入力ラグを感じやすい設定ではある(USBやらサブモニターやらいろいろバックグラウンドのプロセスが多いから一概には言えないんだけどね)

PROも一般家庭に普及してる、ちょっとお高いBTOのPCだとPROになるから多いと思う。
Short Fixed Medium(フォアグラウンドアプリ優先の設計をしつつ、Shortで応答性も意識)そう思ったら38が最適値じゃなかなと思う。

WORKSTATIONは開発向けモデルだから26や36は妥当か。Short Variable Medium または High短い + 可変 + 高ブーストという設定が多く、低レイテンシ・高応答性を優先。

Windows ServeRは18だからLong Variable Noだね。HOME同様、フォアグラウンドブーストなしでバックグラウンドタスクの公平性を最重視て感じ。
HOMEとの違いは長い可変により同時に多数のプロセスを効率よく処理できるって点。たまーに紹介されてるけどゲームするなら絶対やめたほうがいい。

疲れたから結論。
自身の環境でテストを行い、最適なバランスを見つけること
ですwwwwwwwwwwwwwwwwwwwwwwww

でも一つの答えを出すなら


HOMEのゲーム用途なら10進数で38が一番いいと思う。次点で36も価値ある。
システム全体の公平性と安定性重視なら初期値の2が無難、ただしゲームには不向きです(レスポンス悪い)

PROなら10進数で36か初期値の38やね。逆にゲームレスポンスよりも全体処理を優先したい人は18に変更した方がいい。ただ低遅延マウスやキーボードを使用してて、シングルモニターかつ、いらないUSB機器を抜いてやれるなら10進数の22が最も遅延が少ないです。

Apex Legends において、レジストリ値を 0x2A(10進数で42)に設定したユーザーが、ロード時間とFPSの大幅な改善を報告していますHow to Fix FPS drops with Win32 Priority Separationっていう記事。ただレイテンシは少し下がる。なにごともトレードオフなんよねー。

WorkstationとWindows Serverはしらん(はなほじー)

他の最適化手法(例:コアパーキングの無効化、電源設定の変更)と組み合わせることで、さらなるパフォーマンス向上が期待ができるよーん。

↑これすればコアパーキングの無効化も電源設定の最適化もできます↑

他にも記事あるんで読んでみてね。
Xも始めたのでそちらもよろしくお願いします。

いいなと思ったら応援しよう!

この記事が参加している募集

ピックアップされています

(必須級)ゲーマー用"最適化"記事

  • 16本

コメント

ログイン または 会員登録 するとコメントできます。
「最適化、それは愛。」 探究心○ それ以外は✖︎ PUBG Valorant Apex タルコフゲームは色々するおじさん。 PCゲームな話題に深く切り込んでます。適当な殴り書きも。 「Amazonのアソシエイトとして、[最適化おじさん(K)]は適格販売により収入を得ています。」
「レジストリ設定1つでエイムレスポンスが変わる」Win32PrioritySeparationの真価&おすすめ値|最適化おじさん(K)PCゲームのあれこれ
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1