2009-02-27 13 views
0

私は通常の優先順位でユーザーモードプログラムを実行しています。私のプログラムはNPの問題を検索しており、その結果、最終的にスワップファイルで終わる多くのメモリを使い果たします。プログラムがスワップファイルを使用するとWindowsが停止する

マウスがフリーズして、タスクマネージャが開いてプロセスを終了させるまでに時間がかかります。

私が知りたいのは、2つのコアのうち1つだけが使用されているにもかかわらず、Windowsオペレーティングシステムがこれから完全にロックされないようにする方法です。

編集: 返信いただきありがとうございます。

メモリを少なくすると助けになることは知っていますが、OS全体がロックされているとは私には分かりません。

+0

プログラムを変更できない場合は、スワップファイルのデフラグを試み、可能であればスワップファイルをより高速なHDDに移動してください。ドライブとそのすべてのものについてDMAが有効になっていることを確認します。ヘビー・ページングは​​、最良の状況でシステムにとって非常に悲惨な経験です。 – overslacked

+0

あなたのOSはロックされておらず、負荷が重いためゆっくりと実行されています。 :)あなたは2分でどのプログラムを使用するのか分からないので、今使っていないものを単に交換します。あるいは、OSが使うより良い戦略があると提案していますか? – flodin

+0

flodin:私は、OSがGUIをスワップアウトするべきではないと思います。 – Unknown

答えて

1

問題は、別のプログラム(たとえばexplorer.exe)を実行しようとすると、そのコードとメモリがすべてスワップアウトされてしまうことです。他のプログラムのためのスペースを確保するために、Windowsはプログラムがディスクに使用しているデータを最初に書き込んでから、他のプログラムのメモリを読み込みます。他のプログラムで実行されるコードの新しいページはすべて、ディスクアクセスを必要とし、ゆっくりと実行されます。

あなたのプログラムのアクセスパターンはわかりませんが、私はすべてのメモリページをランダムに触れていると推測しています。これは、Windowsがメモリページをあなたのプログラムは、突然あなたが再びそれを必要とし、Windowsは同じ治療を与えるためにいくつかの他のページを見つける必要があります。

他のプロセスにさらに多くのRAMを割り当てるには、SetProcessWorkingSetSizeを使用して、プログラムで使用できるRAMの最大量を減らします。もちろん、プログラムのスムーズな実行は、より多くのスワッピングを実行する必要があるためです。

もう1つの方法として、システムにドライブを追加し、その上にスワップファイルを配布することもできます。デュアルコアCPUを搭載しているかもしれませんが、ドライブは1台しかありません。スワップファイルを複数のドライブに分散することで、Windowsはそれらの間で作業のバランスをとることができます(ただし、これはどれくらいうまく行っているのでしょうか)。

2

明白な答えは「メモリを減らす」です。あなたのアプリケーションがすべて の使用可能なメモリを使い切ったら、OSはあなたのアプリのためのスペースを確保するためにタスクマネージャ(など)を呼び出す必要があります。プログラムを切り替えると、OSは他のプログラムを(必要に応じて)戻す必要があります。 ディスク読み取りはメモリ読み取りよりも遅いため、すべてが になります。

これを避けたい場合は、自分のアプリを自分のメモリで管理させてください。 は、ブルートフォースよりも優れたアルゴリズムを使用してください。

1

私はこの質問にプログラミングの答えがあるとは思っていません。「あなたのアプリを再構成してメモリを少なくしてください」とは思えません。スワップファイルの問題は、特にIDE HDDまたは高度に断片化されたスワップファイルを使用している場合に、ディスクにアクセスする際のボトルネックが原因と考えられます。

1

これは少し極端ですが、スワップファイルを最小限に抑えて、すべてのディスクを固めたり、プログラムで仮想メモリを多く割り当てることはできません。 [コントロールパネル]/[詳細設定]/[詳細設定]タブ/ [Perfromance /仮想メモリ]の下で、ページファイルをカスタムサイズに設定し、2MBの値を入力します(XPでは最小値)。割り当てが失敗すると、例外が発生し、正常に終了する必要があります。)あなたの問題を解決するには、ちょうどそれをスピードアップします;)

32ビットプラットフォームで64ビットシステムに移植し、はるかにアドレス可能なRAMを備えたボックスを入手することを検討する価値があります。

関連する問題