ニュース

そのGPU、仕事してる?Intelが「GPU Busy」を計測できる監視ツール公開

PresentMonのUI。FrametimeとGPU Busyが計測可能だ(上から2番めのグラフ)

 Intelは18日(現地時間)、同社が“GPU Busy”と定義するメトリックを計測できる無償のGPU監視ツール「PresentMon」のベータ版を公開した。このソフトウェアはIntelのGPUのみならずNVIDIAやAMDのGPUでも動作可能で、オープンソースとしてソースコードはGitHub上で21日より提供するという。

 同社が“GPU Busy”と定義する新しいメトリックが誕生した背景はこうだ。現代的なGPU監視ツールのほとんどは、1フレームが処理される時間に対し「Frametime」という指標を用いているのだが、これは「CPUにおいて、前のフレームが描画されるまでの待ち時間+当たり判定などのゲーム処理時間+(CPUの)レンダリング時間」の値(PresentとPresent間の時間)であるのだという。

 つまり、Frametimeという指標はゲーム描画における「CPUの処理時間」であって、「GPUの処理時間」ではないわけで、GPUの処理速度を計測する数値としては厳密には正しくない。そこで、GPUが本当に1フレームをレンダリングしている時間を“GPU Busy”というメトリックとして定義しよう、と提唱したわけだ。

FrametimeはCPU側の処理の時間を示しているのに対し、GPU BusyはGPU処理時間を示す

 GPUの処理が進まなければCPU側の処理も進まないので、FrametimeとGPU Busyは一定の相関関係にある。CPUがGPU処理より高速で、GPUに問題なく仕事を割り振ることができれば問題はない。問題となるのは「GPUの処理がCPUより高速な場合」だ。つまりGPUはレンダリングをさっさと終えたのに、CPUから次のレンダリングの指示(フィード)がなされない場合だ。

 特に高性能GPUを使っているにもかかわらず、ゲーム側のグラフィックスの画質設定を「低」にした場合などは、GPU側が先に処理を終えてしまうので、「GPUが待っている時間=仕事をしない時間」が増えることになる。画質設定を低にしてもフレームレートが爆速にならないなら、CPUがボトルネックとなっているということだ。

GPU Busyが短くてもFrametimeが長い例。GPU処理がCPU処理に先んじて終了してしまっているので暇を持て余しているわけだ
このようにGPU BusyとFrametimeの時間が近いほうが理想的である

 PresentMonではこのGPU BusyとFrametimeの両方を取得できるので、CPUとGPUにとってバランスが取れた画質設定になっているのか分かる、というわけだ。

Counter-Strike 2の画質設定例。Lowプリセット(薄い方)はGPU BusyがFrametimeより低くなっているので、GPUが遊んでしまっている。Ultra設定ではGPU BusyとFrametimeが近く、バランスの取れた画質設定だと言える、というわけ
PresentMonのスクリーンショット。いろんな機能があるようだ
各メトリックのグラフの色なども変更できる
ホットキーも設定可能

IntelがGPU Busyを定義する真意とは

 Intelが“GPU Busy”を打ち出したのにはもう1つ理由がある。それは「Intel ArcのGPUはハードウェアとして既に十分に高速で、ドライバの改善でフレームレートが向上できた」ことを証明・アピールするためだ。

 Intel Arcのローンチ時のドライバ「バージョン3490」は、一部ゲームにおいてGPU Busyが短くてもFrametimeが長い場合があったのだという。GPU側がレンダリングされるようになるまで、CPU側でドライバを介し、DirectXの描画命令をGPUが理解できる内部命令に変換してGPUに送る必要があるが、このパイプラインで時間がかかってFrametimeが延びていた。

 新ドライバ「バージョン4571」以降では、このパイプラインを刷新することでFrametimeを削減し、GPU Busyに近づけることができたのだという。なお、以前のドライバではDirectX 9対応ゲームの性能を向上させたが、新ドライバではDirectX 11対応ゲームの性能も引き上げたのもトピックだ。

初期ドライバにおけるOverwatch 2プレイ時のFrametime
ここにGPU Busyを重ねると、一部では理想的な処理ができているものの、乖離が生じる部分もあり、平均フレームレートが落ちる原因となっていた
これが最新ドライバではFrametimeを短縮しGPU Busyに近づけることに成功している

 ちなみにIntel ArcのドライバはCPU内蔵GPUと共通のインストールパッケージとなっているが、パイプライン刷新を行なったのはディスクリートのArc向けのみ。というのも、内蔵GPUの場合はGPUの処理速度が遅いので、CPU側が十分な命令数をフィードできるからだとしている。

最新ドライバではDirectX 11ゲームの性能も大幅に改善した