フレーム表示タイミングを収集する計測ツール。スタッター/遅延解析に用いる
PresentMonは、Windows OS上で動作するアプリケーションが、GPU(グラフィックスカード)に対して「描画したフレームを画面に表示してくれ」と要求するタイミング(いわゆる「Present」コール)を精密に計測・収集するためのオープンソース・ツールです。
一般的なゲーマーが注目するのは「平均FPS(Frames Per Second)」ですが、自作PCユーザーやハードウェアレビュアー、エンジニアが重要視するのは「フレームタイム(Frame Time)」です。FPSは1秒間に何枚のフレームが表示されたかという「量」を示す指標ですが、フレームタイムは1枚のフレームが表示されるまでに何ミリ秒(ms)かかったかという「質(タイミング)」を示す指標です。
例えば、平均60FPSであっても、全てのフレームが均等に16.67ms間隔で表示される場合と、あるフレームは5msで、次のフレームが28msかかる場合では、視覚的な滑らかさは全く異なります。後者のようにフレームの間隔が不揃いな状態を「スタッター(カクつき)」と呼びます。PresentMonはこのスタッターを定量的に可視化し、解析することを可能にする基盤エンジンとして機能します。
現在、多くのユーザーはPresentMonそのものを直接操作するのではなく、これをバックエンドに組み込んだ「CapFrameX」や「NVIDIA FrameView」などのGUIツールを通じて利用しています。これにより、複雑なログ収集を自動化し、グラフ化して分析することが可能になっています。
多くのベンチマークソフトやゲーム内オーバーレイが表示する「平均FPS」は、非常に誤解を招きやすい数値です。なぜなら、平均値は極端な外れ値(瞬間的なフリーズや激しいカクつき)をかき消してしまうからです。
フレームタイムとは、CPUがゲームロジックを処理し、GPUがレンダリングを完了させ、最終的にディスプレイに信号が送られるまでの時間です。理想的な環境では、この数値は一定の直線(フラットライン)になります。
もし、平均FPSが100となっていても、一部のフレームに50ms以上の遅延が発生していれば、ユーザーは「一瞬止まった」と感じます。これがスタッターの正体です。
PresentMonを用いて収集したデータから算出されるのが「1% Low FPS」および「0.1% Low FPS」です。これは、計測期間中の下位1%(または0.1%)のフレームタイムを抽出し、それをFPSに換算したものです。
この数値が平均FPSに近ければ近いほど、そのゲーム体験は「極めて滑らか」であると言えます。逆に、平均FPSが高くても1% Lowが極端に低い場合は、ハードウェアのボトルネック(CPUのシングルスレッド性能不足や、メモリ帯域の不足など)が発生している可能性が高くなります。
| 指標 | 意味 | 特徴 | 判定基準 |
|---|---|---|---|
| 平均FPS | 1秒間の総フレーム数 $\div$ 時間 | 全体的なパフォーマンスを示す | 高いほど良いが、安定性は不明 |
| フレームタイム | 1フレームあたりの表示間隔 | 体感的な滑らかさを直接示す | 変動が少なく直線に近いほど良い |
| 1% Low FPS | 下位1%のフレームの速度 | 瞬間的なカクつきの頻度を示す | 平均FPSとの乖離が少ないほど良い |
| 0.1% Low FPS | 下位0.1%のフレームの速度 | 重いスタッター(スパイク)の有無を示す | 極端な低下がないことが重要 |
PresentMonはあくまで「データ収集エンジン」であり、ユーザーが直接解析を行うには、そのデータを可視化するフロントエンドソフトが必要です。
現在、自作PCコミュニティで最も信頼されている解析ツールです。PresentMonをベースに構築されており、詳細なフレームタイムグラフの作成、異なる設定(例:DLSS ON/OFF)でのデータ比較、さらには1% Lowの厳密な算出が可能です。
NVIDIAが提供するツールで、こちらも内部的にPresentMonの仕組みを利用しています。最大の特徴は、GPUの消費電力(W)やクロックなどのハードウェアメトリクスとフレームタイムを同時に同期させて記録できる点にあります。
PresentMonでスタッターを解析する際、以下のようなハイエンド構成であっても、ソフトウェア側の最適化不足やドライバの不整合でスタッターが発生することがあります。
例えば、RTX 4090を使用し、4K解像度で平均120FPS出ている状況でも、CPU側の処理(メインスレッド)がボトルネックとなり、特定のシーンでフレームタイムが30msまで跳ね上がることがあります。PresentMonを使えば、これが「GPUの性能不足」ではなく「CPUのスパイク」であることを特定できます。
PresentMonを用いてデータを収集する際、具体的にどのような点に注目すべきかを解説します。
フレームタイムグラフにおいて、GPU使用率が低いにもかかわらず、フレームタイムに激しいスパイク(鋭い山)が発生している場合、それはCPUボトルネックである可能性が高いです。特に、オープンワールドゲームなどでNPCが大量に登場するシーンで発生しやすく、Ryzen 9 9900Xのような多コアCPUであっても、単一コアのクロック速度(例:5.6GHz)やL3キャッシュのヒット率が影響します。
DDR5-6000のような高速メモリを使用し、さらにAMD EXPOやIntel XMPを適用して最適化していても、メモリのタイミング設定が不適切だと、1% Low FPSが低下します。PresentMonで計測し、メモリ設定を変更する前後の1% Lowを比較することで、OC(オーバークロック)の効果を数値的に証明できます。
最新のDirectStorage対応タイトルでは、SSDからのデータ転送速度がフレームタイムに影響します。Samsung 990 Proのような高速なNVMe SSDを使用しても、ゲーム側の実装によってはアセットのロード時に瞬間的なスタッターが発生します。これはPresentMonのグラフ上で、周期的なスパイクとして現れます。
2025年から2026年にかけて、PCゲーミングの世界では「フレーム生成(Frame Generation)」技術が標準となります。NVIDIA DLSS 3やAMD FSR 3などの技術は、AIを用いて「本物のフレーム」と「生成されたフレーム」を交互に挿入することで、見かけ上のFPSを大幅に向上させます。
ここが非常に重要な点ですが、従来のPresentMon(およびそれをベースとしたツール)は、「GPUがPresentコールを出したタイミング」を計測します。しかし、フレーム生成によって挿入された「偽のフレーム」は、従来の計測手法では正しく検知できない、あるいは「非常に短い間隔で挿入された」として計測される傾向にあります。
これにより、「FPS数値は200まで跳ね上がっているが、体感的な操作感(入力遅延)は100FPSのままである」という乖離が発生します。
最新のPresentMonおよびその派生ツールでは、以下のような次世代の計測アプローチが導入されつつあります。
2025年以降の自作PCビルドでは、単に「高いFPSが出るパーツ」を選ぶのではなく、「フレームタイムの分散が小さく、安定した1% Lowを維持できる構成」を選ぶことが重要になります。その際、PresentMonのようなツールによる客観的なデータ分析が、不可欠なスキルとなるでしょう。
Q1: PresentMonを導入するとPCの動作が重くなりますか? A1: 負荷は極めて低いです。PresentMonは描画パイプラインに深く介入して処理を書き換えるのではなく、OSのイベントを監視する形式であるため、計測によるパフォーマンス低下(オーバーヘッド)は無視できるレベルです。ただし、CapFrameXなどで大量のデータをメモリに蓄積し、後でグラフ化する場合、一時的にメモリ消費量が増えることがあります。
Q2: NVIDIA ReflexやAMD Anti-Lagを有効にしても計測結果に影響しますか? A2: はい、影響します。これらの機能はCPUとGPUの同期タイミングを最適化し、レンダリングキューを制御するため、フレームタイムの分布が変化します。一般的に、これらの機能を有効にするとフレームタイムのスパイクが抑制され、より安定した(直線に近い)グラフになる傾向があります。
Q3: どのくらいの期間、データをキャプチャすれば正確な1% Lowが分かりますか? A3: シーンによりますが、一般的には「同じ場所で同じ動作を30秒から60秒間」継続してキャプチャすることをお勧めします。短すぎると、たまたま発生した一度きりのスパイクが1% Lowに過剰に影響を与えてしまい、正確な傾向が掴めないためです。十分なサンプル数を集めることで、統計的に信頼できるデータが得られます。