リアルタイム プログラムの実行中に突然フリーズする原因は何ですか?

リアルタイム プログラムの実行中に突然フリーズする原因は何ですか?

そこで、高負荷 (CPU/GPU) のリアルタイム プログラムを実行しました。通常の実行中に、突然すべてが 1 ~ 4 秒間フリーズしました。バックグラウンドで「プロセス エクスプローラー」を開き、洞察を深め、何かを特定できるようにしました。CPU/GPU グラフを時間順に並べると、次のようになります。

ここに画像の説明を入力してください

CPU/GPU の両方で 4 つの明確な低下が見られます。CPU/GPU の使用率が、ある程度プラスの状態からほぼゼロに低下していることがわかります。グラフのこれらの低下は、リアルタイム プログラムが突然フリーズしたときと一致しています。

これらの突然の低下の原因をどうやって見つければよいのでしょうか?

注: グラフの上にマウスを置くと、カーソルの位置の時刻が秒単位で表示されます。おそらく、このマウスオーバー機能は何らかの形で役立つでしょう (たとえば、100 ミリ秒ごとにすべてのプロセスのログがあったらどうなるでしょうか)。

編集:

リアルタイム プログラムはビデオ ゲームなので、ビデオ ゲームの実行中に何らかの計測を監視することはできません。速度低下が発生したときに何が起こっていたかを確認するために、何らかの方法で時間をさかのぼることができるソリューションが必要です。

編集:

RE - データの記録とリアルタイム モニターの使用: 何らかの理由で、Windows パフォーマンス レコーダーが期待どおりに記録されません。そこで、「perfmon」の使用に切り替えて、「リソース モニター」を開きました。

RE - リアルタイム モニターを表示できるように設定: ビデオ ゲームで観戦するように設定し、ビデオ ゲームを「ウィンドウ」モードにして、リソース モニターのリアルタイム表示を表示できるようにします。

半リアルタイム (1 秒に 1 回のみ... 1 秒に 1 回以上取得するにはどうすればよいでしょうか?) を取得できるようになったので、さまざまなリアルタイム データの読み取り値を調べ始めました。

原因を突き止めると、ディスク IO が高く、CPU 使用率が低いことに強い相関関係があることに気づきました (これはゲーム中のフリーズでも見られます)。リソース モニターを使用して、問題のあるディスク IO をすべて実行しているユーザーを特定するにはどうすればよいでしょうか?

答え1

最初に確認するのはメモリ使用量とディスク I/O です。

ウイルス対策/マルウェア対策プログラム、Windows Update などのアップデータ プログラムなどのバックグラウンド プログラムを無効にしてみてください。クリーンブートを実行するサードパーティのサービスまたはプログラムがこの問題の原因となっているかどうかを確認する最良の方法です。

メモリも監視する必要があります。メモリが不足している場合、Windows はバックグラウンドでメモリをページングしている可能性があります。

特定の時間、たとえば武器を切り替えたときや新しいサウンドが再生されたときに、この現象が発生することに気付いたことがありますか? ゲーム リソースがメモリからスワップアウトされたか、ロードされていないため、ゲームがディスクからリソースをロードする必要がある可能性があります。ゲームによっては、設定の一部を下げて、ゲーム内リソースの品質、量、または種類を減らすことができる場合があります。

答え2

試すファンシーキャッシュ「書き込み量の平均化」

バーストを回避するためにディスクアクセスを分散できるようです。

関連情報