web-dev-qa-db-ja.com

ゲームをロードしたりフラッシュビデオを見たりするときに、不必要な量のソフトページフォールトが発生する

アセットをその場でロードするゲームをプレイするときに、私のコンピューターに奇妙な問題があります。間違った場所を探しているのかもしれませんが、同じような問題を抱えている人を見つけることができないようです。

はっきりしない場合は、いくつかの例を示します。ソースゲームでは、マッパーは、角を曲がるかドアを開けるまでオブジェクトがシーンに追加されないように、オブジェクトを非表示にするタイミングと場所をエンジンに指示することで、物事を最適化できます。これらのオブジェクトをロードするときに、コンピューターが窒息します。ポータル2を例にとってみましょう。エリアのロード画面が消えると、レベルに投げ込まれます。すぐに、画面がフリーズし、音声が途切れたり繰り返されたりして、約1秒間挨拶します。それが過ぎると、誰もがフルフレームレートですべてのハンキードーリーを続けます。それから私はドアまで歩いて行き、ドアを開けるようにトリガーします。反対側の部屋にロードされるときの静けさと吃音のもう1つの良い秒。他の誰かがゲームをプレイするのを見るとしたら、これは決して起こりません。とにかく、これは我慢できます。煩わしいですが、ゲームプレイを実際に妨げることはありません。それでは、進行に伴って常に読み込まれるゲーム、ソニックジェネレーションズをゲームしてみましょう。じっと立っていると、滑らかで滑らかなフレームレートが得られます。しかし、彼が前に走り始め、レベルをさらにロードするとすぐに、私は1 FPS未満に低下し、まったく再生できなくなります。最近、ますます多くのゲームがこれを行っているようです。そのため、私はついにトラブルシューティングに真剣に取り組んでいます。

これらの一時停止がゲーム自体にプログラムされているかどうかは非常に疑わしいです。ロード画面は、データがロードされるときにスムーズに実行されるように設計されており、他のマシンでは実行されます。再びSonicを例にとると、ロード画面の可動部分でさえ、ロードが完了するまで非常に途切れがちです。

私はこのコンピューターを4年近く前に製造しましたが、3Dゲームに使用し始めてからこの問題が発生しました。それ以来、マザーボード、HDD、グラフィックカードが故障したため、交換しました。 (ケースファンはある日動作を停止し、HDDはまったく別の取引でした。)

Win7 Ultimate 64ビットをAeroをオンにして、Intel 2.5Ghzクアッドコア、4GBのRAM、およびnVidia GTX460で実行します。

みなさん、ありがとうございました!

更新:ページフォールトが大量に発生していることが明らかになりました。 Sonic Generationsでの平均 170,000 /秒 、Portal 2でのロード中の平均70,000、Livestream.comでストリームを見ている間の 非常に安定した30,0 。 Resource Monitorによると、これらはハードな障害ではありません。これらの数値が他のすべての数値とどのように比較されるのか、ちょっと興味があります。

補遺:別の例と潜在的な症状を追加することもできます。まず、Trackmaniaと呼ばれるレーシングゲーム。ソロレースでは、(他のプログラムが生成している可能性があるものを超えて)目立ったページフォールトはなく、ゲームはスムーズに実行されます。ただし、オンラインでプレイすると、頻繁にランダムな間隔で大きな問題(およびページフォールトの急増)が発生します。私は一緒にレースをします。ゲームは1秒以上一時停止し、壁の横にあるしわくちゃの塊で車両を逆さまにして再開します。他のプレイヤーの車を隠しても問題は解決しません。

潜在的な症状については...関係のない問題である可能性があることを恐れ、トラブルシューティングを間違ったパスに送りたくなかったため、言及を避けました。この時点で、なぜ一体それについて言及しないのですか?基本的に、私のコンピュータはしばらくビデオを見た後、完全にフリーズします。オーディオのループ、画面全体(カーソルを含む)が応答しない、num-lockはトグルせず、ハードシャットダウン以外の何もできません。数分または数時間でトリガーできます。通常、ビューポートが大きいほど、ビューポートは早く発生します。ハードウェアアクセラレーションがオンになっている限り、フルスクリーンのYouTubeビデオは安全です。

ハードウェアアクセラレーションがオンになっているフルスクリーンのYoutubeは、ページフォールトを生成しないようです。ただし、ウィンドウ処理された場合は実行されます。 Livestreamは、フルスクリーンかどうかにかかわらず、高速化されているかどうかに関係なく、常にページフォールトを生成します。ただし、ページフォールト自体が大量に発生しているにもかかわらず、ゲームがこのようにコンピュータをフリーズすることはありません。

(タイトルを「ゲームアセットがバックグラウンドで読み込まれるとグラフィックが途切れる」から「ゲームを読み込んでフラッシュビデオを見るときに不必要な量のソフトページフォールトが発生する」に変更されました。)

8
YotaXP

ここの情報を確認し、問題が彼のページの障害がかなりあることであることがわかった後、ここで調査する可能性をさらにいくつか追加します。

これらがソフトページフォールトであり、それらが多数発生している場合、これらのフォールトを引き起こしているメモリアクセスは、テクスチャリソースの要求であると推測されます。グラフィックカードには、テクスチャフェッチ要求を高速化するためにある程度のオンボードメモリがありますが、何らかの理由で、ドライバがオンボードメモリに十分なテクスチャをキャッシュしていないか、キャッシュしていない可能性がありますそれのいずれか。私はnVidiaのグラフィックスドライバーの設定に精通していないので(私は主に過去4年間ATIカードを実行しています)、ドライバーの設定、オーバークロックの設定、またはBIOSの設定でさえそのような原因になるかどうかわかりません状態。ただし、これを調べて、問題の原因であるかどうかを確認します。

また、メモとして、Portal 2のページフォールト/秒をログに記録しましたが、ほとんど見つかりませんでした。もちろん、私のシステムはCrossfireで2台のRadeon HD 6970を使用していますが、グラフィックカードは確かにそのようなページ障害なしにPortal2を処理できるはずです。すべてが正常に動作している場合は、次のような画像が表示されると思います。 Page faults/sec for Portal 2 on my computer

グラフィックカードが原因(または、とにかくコンピュータで使用されているグラフィックハードウェア)であることを除外したい場合は、Aeroを無効にして、デスクトップでアイドリングしているときに何が起こるかを確認することをお勧めします。ページフォールトの数が減った場合、それがグラフィックスに関連しているという私の予感はおそらく正しいでしょう。そうでない場合は、他の場所にある可能性があります。

3
Ben Richards

ソフトページフォールトは、プロセスによって発行された特定のシステムコールによって生成される場合があります。問題の正確なシステムコールは、このvmwareの記事で説明されているようにpfmonツールを使用して見つけることができます。

Windowsアプリケーションによって生成された過度のページフォールトは、仮想マシンのパフォーマンスに影響を与える可能性があります

pfmonは、 Windows 2000リソースキットツール から 個別のダウンロード として引き続きダウンロードできます。 -)。これは32ビットプログラムですが、それでも機能する可能性があります。

[編集]

私は自分のコンピューターでpfmonをテストしましたが、膨大な数のソフトページフォールトに驚いていました。 FirefoxまたはInternetExplorerを数秒使用すると、このような障害が数万回発生しますが、実際には速度の低下は見られません。

私の結論は、ソフトページフォールトを数えることは無意味であるということです。どうやらWindowsは当然のことながらそれらを生成し、それらはそれが機能する方法にすぎません。 Windowsがページのメモリを検索する必要があるという事実は、LinuxがWindowsよりも高速である理由についての別の説明かもしれません。

したがって、Windowsでの非効率的なメモリ管理にチョークで書き、ハードページフォールト(投稿したリストの数が非常に少ない)だけを心配します。プロセスの多くのソフトページフォールトは、問題のプロセスが大量のメモリ処理を行っていることを示しているにすぎません。

それでもコンピュータにメモリの問題があると思われる場合は、 監視によるパフォーマンスの問題の検出と解決 の記事をご覧ください。 Windows Server 2003リソースキットツール

確かに Memtest86 + などのハードウェアテストを実行することもできますが、あなたの問題が本当にメモリにあるとは完全には確信していません。

0
harrymc