web-dev-qa-db-ja.com

単一のWindowsプロセスのメモリ使用量を最大化するにはどうすればよいですか?

大量のメモリを搭載したシステムがあります。現在、単一のアプリケーションがページングされないようにするために、ページングファイルを完全に無効にしました。私が直面している問題は、気になる単一のプロセスのメモリ使用量を最大化できないことです。単一のプロセスのページングを無効にして、ページアウトしないようにし、メモリのほとんど(95%?)を使用できるようにします。他のすべてのプロセスはページアウトできるはずです。現在、ページングファイルが無効になっていると、使用可能なメモリの約%80を使用することになりますが、これらのプロセスがページングファイルに送信されることは気にしないことがわかっています。これは私が実行しているオープンソースプログラムではないため、他の.NET/Windows呼び出しを使用してページングを防ぐようにコードを変更することはできません。

Linuxではこれは「swappiness」と呼ばれていると思います。

1
EGr

あなたはO.S.プロセスデータをメモリに保持するため。プロセスは、「メモリ内のページをロックする」権限があればそれ自体を実行できますが、コードで明示的に要求する必要があります。それ以外の場合、Windowsは適切と見なしたときにページアウトします。

ページファイルを完全に無効にすると、Windowsはそれ自体のために一部のメモリを予約し、すでに使用されているメモリが多すぎるとメモリ割り当て要求を拒否し始めます。

ページファイルを有効のままにしておくと(実際にそうする必要があります)、何をいつページアウトするかを完全に制御することはできません。

とにかく、メモリマネージャの信頼性を高める必要があります。その仕事は未使用/不要なデータをページアウトすることであり、プロセスがメモリにアクティブにアクセスしている場合、ページアウトされる可能性はほとんどありません。もちろん、メモリ使用量が多すぎてシステムがそれに対処できない場合を除きます。ただし、これが当てはまる場合は、ボックスにメモリを追加することを検討する必要があります。

3
Massimo