コンテンツにスキップ

マシンパフォーマンス

フレームレートを維持するには、GPU の処理時間と CPU のバランスを取る必要があります。

すべてのフレームは単純なパターンに従う

Section titled “すべてのフレームは単純なパターンに従う”

CPU はすべてを更新してそのフレームのレンダリングを準備し、最後に present を呼び出します。present はその後、GPU がフレームを画面に出力するまでそれ以上の CPU 動作をブロックします。

パフォーマンスの懸念に対処するには、以下のグラフが役立ちます。

シンプルな概要を確認するのに適しています。

フレームに費やされた時間を示します。点線の赤線は、その下に収まるべきラインで、これはすべての genlock パルスに間に合わせるためのフレームあたりの ms 予算です。

CPU がほとんどの時間をどこに費やしているかについての情報を表示します。

  • working time は、CPU が実際に作業に費やした時間です。
  • present wait time は、CPU が GPU の作業終了を待った時間を示します。
  • present wait time には working time は含まれないため、working time の後に CPU はその時間 GPU の作業終了を待つことになります。
  • genlock パルスを受信する(またはサーバー自身のタイミングにロックされている場合は vsync パルス)まで GPU が出力しないため、present では常にブロックされます。
  • free run の場合、GPU は present が呼ばれたタイミングでいつでも出力できますが、present はすべての出力が完了するまでブロックされ続けます。バランス取りとは、CPU が ms 予算内で終了し、GPU が genlock パルスに間に合うように終了することを確実にすることです。

フレームドロップのトラブルシューティング

Section titled “フレームドロップのトラブルシューティング”
  • working time が予算内に収まっているにもかかわらず present time が予算を超える場合、GPU がフレームドロップの原因です。
  • working time が予算を超える場合、CPU がフレームドロップの原因です。
  • Notch では CPU と GPU の両方の作業があるため、両方を考慮する必要があります。
  • CPU タイミングの内訳を確認するには、CTRL + ALT + P を押すと Profiler が表示され、関数とそれらに費やされた時間(ms 単位)が表示されます。
  • D3::frame がルートです。
  • NotchModule 呼び出しを確認することで、Notch 呼び出しに費やされる CPU 時間を確認できます。これにより、Disguise の内容によるものか Notch の内容によるものかを判別するのに役立ちます。

実際に GPU の作業終了を待っている場合、内訳を取得するのは困難です。レイヤーをミュートして、それが GPU 時間がそのセクションで非常に高くなる原因であるかどうかを確認するのが最善です。

原因がわかったら、適切に対処できます。

  • Notch が CPU 時間を多く消費している場合、これはパラメーターによるものです。
  • GPU の場合、レンダリング技術によるものです。