3

私は小さな PerformanceTest プログラムを書いていて、テスト中に使用できるメモリを人為的に制限しようとしています。最大約 100 GB の多重解像度画像を処理している間、実行に数時間かかるテストもあります。

スレッドごとに制限を設定するのが理想的ですが、これはうまくいかないと思います。テストは、別のプロセスまたは別の AppDomain で実行されます。ARM と ETW を使用して AppDomain のリソースを監視する (制限はしない) 方法を知っており、プロセス レベルで MaxWorkingSet を設定しようとしましたが、システム メモリが圧迫されるまで効果がありません。

もちろん、VM でテストを実行したり、ブート オプションで Windows メモリを制限したりするなど、これを達成するための他の方法と回避策があります。大量のメモリを割り当てる 2 番目のプロセスを開始します。

システムに空き物理メモリがある場合でも、プロセス/AppDomain が使用できる物理メモリを人為的に制限する方法はありますか? 仮想メモリも制限することは可能でしょうか?

4

1 に答える 1

0

利用可能なそのような機能を認識していませんが、メモリ消費を制限します(使用量とは対照的に)。

したがって、テストを開始すると、作成および操作できるオブジェクト/スレッドの数のカウンターが表示されます。カウンタ値が最大許容値に達すると、テストはスレッド/オブジェクトの 1 つがジョブを終了するまで待機します。

Parallelクラスを使用する場合、並列化の最大次数を設定できます。

于 2013-07-18T09:15:29.860 に答える