pc-perf-audit - あらゆるPC向けの計測ベースパフォーマンス監査
実際のマシン(Ryzen 7 5700X + RTX 2060、Valorant競技)での数ヶ月の作業から抽出されました。あらゆるゲーム、あらゆるCPU(Intel/AMD)、あらゆるGPU(NVIDIA/AMD/Intel)で動作します: 手法は非依存的です。ゲームごとに異なるもの(exe、設定、ログ、アンチチート、申告シナリオ)は references/jogos.md にあります。ここで重要なのは手法と測定済みのカタログです。そのマシンの数値は例であり、別のマシンへのレシピではありません。例としてValorantが挙げられている場合、「ゲームの一例」として読んでください。
どんな調整よりも価値のあるルール
- あなたは「何が最適か」を決めません。テストを組み立てます。 仮説、可逆的な変更、ユーザーがプレイし、あなたが判定を収集します。
- 2種類の判定を決して混同しないでください:
- 計測可能(フレームタイム、1% Low、ヒッチ、レイテンシ、安定性):数値で判断します。
- 判断可能(鮮明さ、コントラスト、音、「感触」、視認性):ユーザーのみが判断します。一度に1つの変更だけ。両方を別々に報告します。
- 一度に1つの変数。1回の試行だけでは何も決まりません。 最低2回の試行。ウォームアップは破棄し、分単位の偏差を見ます。平均だけではありません。
- ベースラインを下回った?元に戻します。 視覚的な向上がフレームタイムの低下を正当化することはありません(ユーザーがそう主張する場合を除き、その場合でもコストを測定して報告します)。
- コストのかからない方法を常に優先します。 CPU/GPU/レイテンシ/リスクがかかるものを提案する前に、映像出力に近いレイヤー、またはコストがかからない同じ効果を探します(例:フレーム単位のフィルターではなく、パネル設定のデジタルバイブランス;モニターではなくGPUでのスケーリング;ドライバーのFPSリミッターではなくゲームネイティブのFPSリミッター;優先順位設定ではなくアプリを閉じる)。
- 「マシンは出せるものを出している」と決して結論づけないでください。 「コストはどこにあるか」と「より速く実行できるか」は別の質問です。シリアルコードは、実効クロックが高く、メモリレイテンシが低く、キャッシュ競合が少ないほど高速に実行されます。
- 主張の前に証拠。 もっともらしい理論が何度も否定されてきました。仮説を結果として提示しないでください。測定なしに改善を宣言しないでください。
- 測定器も負荷です。 測定器、コレクター、モニター、オーバーレイ、そしてエージェント自身(Claude、ターミナル、PowerShell)がCPUを消費します。キャプチャ中はマシンを使用しないでください。
- 測定値が数日間ユーザーの体感と矛盾する場合、測定値を疑い、ユーザーの知覚は疑わないでください。 これは4回繰り返されました(
references/armadilhas.md参照)。 - 危険または不可逆的なものだけを確認します(ファームウェア、BIOS、セキュリティ、データ消去)。それ以外:選択し、理由を一行で説明し、実行します。
- 可逆性: 変更の前に、元の値と元に戻すコマンドを記録します。痕跡を残すドライランは禁止。シミュレーションはディスクに触れません。
手順(順に従ってください。各手順に終了条件があります)
手順0 - プロファイルと目標(短いインタビュー)
質問する(長い会話ではなく、AskUserQuestionで一度に尋ねます):
- 主なゲーム、モード(競技/カジュアル)、目標(目標FPS、モニターリフレッシュレート)。ゲームごとに
references/jogos.mdのシートを記入します(exe、API、エンジン、設定、ログ、アンチチート、テストモード)。 - 症状:マイクロスタッター、射撃時のドロップ、完全フリーズ、BSOD、音声途切れ、入力ラグ、ちらつき/ギザギザ、ブラックスクリーン。どの分/マップ/瞬間?(キャプチャのアンカー)
- ユーザーの譲れない条件(変更や議論不可):感度、DPI、解像度、引き伸ばしモード、クロスヘア、バイブランス、開けておく必要のあるアプリ(例:Discord)。
- 彼がすでに試したこと、良かった/悪かったこと。「完璧だった」日はあるか?いつ?
- ゲームのアンチチート(Vanguard、EAC、BattlEye、FACEIT):アフィニティ、優先度、オーバーレイ注入、サードパーティドライバーを制限します。
references/catalogo-alavancas.mdセクション11を参照してください。 終了条件: 日誌にプロファイルを書き込む(テンプレートはreferences/template-diario.md)。
手順1 - インベントリ(読み取り専用)
scripts/inventario.ps1 -Saida <フォルダ> を実行します(PowerShell 5.1、できれば管理者として。管理者でない場合、一部のフィールドが空になり、スクリプトが警告します)。CPU、GPU、RAM(設定速度と公称速度、電圧)、BIOS/マザーボード、OS、電源プランとEPP、MPO、HAGS、VBS/HVCI、ゲームモード、GameDVR、セキュアブート、Defender、アップデートサービス、NIC、ディスク、モニター、解像度/リフレッシュレート、スタートアップ、サードパーティのサービスとプロセス、既知のオーバーレイ、およびイベント6008/1001/WHEAのカウントを収集します。inventario.txt を読み、プラットフォームを分類します:
CPU: AMD Zen2/3/4/5 (X3D?) | Intel Core ハイブリッド (P+E) | Intel Core 非ハイブリッド、
GPU: NVIDIA | AMD | Intel Arc | iGPU。これにより、カタログのセクションが選択されます。
終了条件: 日誌に「項目 -> 値 -> 正常? -> 仮説」の表。まだ何も変更しないでください。
手順2 - 環境の衛生(ゲームプレイ中に動作するもの)
目標:既知かつクリーンなゲーム環境。インベントリ + Get-Process を使用します。
- バックグラウンドでCPUを消費するものをリストアップします(ブラウザ、ランチャー、クラウド同期、アップデーター、オーバーレイ、RGB、キャプチャソフト、エージェント自身)。分類:閉じる、起動を防ぐ、残す(ユーザーの決定)。
- N分ごとに強制終了するよりも、起動を防ぐ(StartupApproved、ポリシー、Storeアプリのバックグラウンド実行許可)を優先します。リストの項目が実際にプロセス名と一致するか確認します(
'WhatsApp'という文字列がWhatsApp.Rootに一致せず、17日間生き残った例があります)。 - 自動的に再起動するアップデーター/サービス(Windows Update、ベンダーアップデーター):封じ込め方法を決定し、それが持続することを確認します(落とし穴:インストーラーがタスク/サービスを再作成する場合があります)。
PresentにDLLを注入するオーバーレイ(RTSS/Afterburner OSD、Discord overlay、Steam、GeForce、Medal、OBS hook):コストは小さいがレンダリングスレッド上。リストアップし、ユーザーに知らせずに強制終了しないでください。効果の測定はオプションです(このマシンでは改善は実証されませんでした)。 終了条件: 「ゲームプレイ中のアプリ」のリスト + 封じ込めメカニズム + 確認方法。
手順3 - 測定されたベースライン
完全なプロトコルは references/metodo.md。要約:
- ゲームを閉じ、マシンを落ち着かせる(起動後5分以上)、新たに何も開かない。
- 実際のゲームプレイ中に
scripts/capturar.ps1 -Processo <exe> -Segundos 420 -Rotulo <ラベル>を実行します(申告のモード/マップで。PresentMonがリスクの場合はDMを破棄可能)。キャプチャは分析しません(分析はゲームプレイ中のCPU/RAM負荷中に行います)。 - ゲーム終了後:
python scripts/analisar-frametime.py <csv>。 - 最低2回の試行、同じマップ。最初の試行は起動/パッチ/ドライバー後のコールドラン。
- ユーザーの判定(スコア/フレーズ)を尋ね、数値の横に記録します。8回以上のキャプチャと判定が揃ったら、どのメトリクスが彼の体感と相関するか(順位)を検証し、それを使用します。 終了条件: シナリオごとのベースライン(DMと5v5は異なります!)ヒッチ/分、最悪フレーム、1%/0.1% Low、p99、分単位の偏差、およびユーザーの判定。
手順4 - 診断
references/diagnostico.md のツリー。順に質問:
- CPUバウンドかGPUバウンドか?(
MsCPUBusyvsMsGPUBusy、中央値と悪いフレーム) - 問題は平均か裾か?(ヒッチ/分、最悪フレーム、>20msの深刻なフレーム)
- ヒッチにトリガーはあるか?(ラウンド切り替え、ローディング、リスポーン、マップ、アビリティ、ゲーム終了、最近のパッチ/ドライバー = シェーダー再コンパイル)- ゲームログと照合します。
- 外部からの競合はあるか?(カーネル/ETWトレース;ISR/DPC;ディスクI/O;空きメモリ;温度とクロック)- 正しい計測器でのみ結論付けます。
- フリーズ/BSOD/音声途切れの場合、別のツリー(ハードウェア/安定性/無線)。 終了条件: (確率 x テストコスト x 可逆性) で順位付けされた仮説。
手順5 - レバー(最も安価なものから最も高価なものへ)
references/catalogo-alavancas.md を参照し、検出されたプラットフォームのセクションのみを参照し、何かを提案する前に否定されたリストを確認します。攻撃の順序:
- コストがかからないレイヤー:スキャンアウト/ディスプレイ(GPUでのスケーリング、デジタルバイブランス、モニター応答時間)、Windows(MPO、電源プラン/EPP、更新を抑制、バックグラウンドアプリ)。
- ゲームスレッドを実行するコアの速度:EPP/ブースト、電力制限、SMT/Eコア、メモリレイテンシと電圧、FCLK/リング、Curve Optimizer/アンダーボルト、冷却。
- 安定性:メモリ電圧、XMP/DOCP、BIOS、Cステート、電源、温度。
- ゲーム設定:キャラクターあたりのCPUを削減するもののみ(影、死体、カウンター)。譲れない条件と競技情報(音、敵の影)を尊重します。
- ネットワーク/オーディオ/周辺機器:測定してから。ネットワーク調整はすでに5倍悪化したことがあります。 各レバーについて:元の値、適用コマンド、元に戻すコマンド、計測可能な仮説、およびユーザーが判断する必要があるもの。
手順6 - A/Bテストと判定
各レバーについて(一度に1つ):適用 -> 同じシナリオで2回キャプチャ -> 同じマップ/モードのベースラインと比較 -> ユーザーの体感を尋ねる -> 判断:
採用 | 元に戻す | 判定なし(さらにデータが必要)。否定されたものも数値とともに記録します。否定されたリストはプロジェクトの最も価値のある資産です。
比較ルール:ベースラインを日付ではなくマシンの状態でフィルタリングします。 2回の試行の間に何かを変更した場合、その系列は逸話になります - やり直し。
手順7 - 承認状態を凍結する
ユーザーが「これでいい、元に戻したくない」と言ったとき:状態(BIOS、ドライバー、サービス、タスク、レジストリ、電源、ゲーム設定、スタートアップ)を、期待値を持つプローブのリストとして写真に撮り、定期的に、およびパッチ/ドライバー/BIOS後に実行します。ルール:
- 凍結する前に、凍結せずに比較を実行し、各偏差を解決します(意図的 -> 凍結;後退 -> 修正)。偏差があるまま凍結すると、後退を黄金として記録します。
- ゲームを閉じた状態で、管理者セッションで凍結します。
- 誤警報を生成するプローブは、プローブを無視することを教えます:値の履歴を調査します。
- キー名/値が間違っているプローブは、プローブがないよりも悪いです:実際のファイルと照合します。
- BIOS/CMOSクリアが静かに元に戻すものを文書化します(SMT、Cステート、DOCP、DRAM電圧、セキュアブート、Resizable BAR、PBO)および元に戻すためのロードマップ。
手順8 - 生きたドキュメント
日誌を維持します(references/template-diario.md):現在の状態、ベースライン、否定されたリスト、支払われた落とし穴、優先順位付きの未解決事項。誤ったエントリはトップに明示的な撤回を付けて修正し、削除しないでください - エラーの履歴は再発を防ぎます。
結果をユーザーに提供する方法
- ユーザーの言語で、直接的に。決定ごとに理由を一行。
- キャプチャごとの表:シナリオ、ヒッチ/分、最悪フレーム、>20msの深刻なフレーム、1%/0.1% Low、偏差、ユーザーの判定。「数値が示すもの」と「あなただけが言えるもの」を分離します。
- 固定FPSを「彼が見ているもの」として決して報告しないでください:ゲームのカウンターは短いウィンドウを使用します。
- 各主張をマークします:
計測済み、仮説、文献(出典)、ユーザーの決定。
このスキルのファイル
references/metodo.md- キャプチャプロトコル、メトリクス、切り抜き、メトリクス検証。references/jogos.md- ゲームごとのシート、ログマーカー、ジャンル/エンジンごとのプロファイル、普遍的なものと固有のもの。references/diagnostico.md- 症状 -> 計測器 -> 推定原因のツリー。references/catalogo-alavancas.md- 試行/測定されたすべてのもの、レイヤーとベンダー別。references/armadilhas.md- すでに反復を犠牲にした計測と思考の誤り。references/template-diario.md- 監査対象マシンの日誌/AGENTS.mdのテンプレート。scripts/inventario.ps1- 読み取り専用インベントリ(PowerShell 5.1、ASCII)。scripts/capturar.ps1- 分析なしのPresentMonキャプチャ + プロセススナップショット。scripts/analisar-frametime.py- 堅牢なオフライン分析(Python 3標準ライブラリ)。