2013-07-18 35 views
3

我正在写一点PerformanceTest程序,我试图人为地重新测试在测试过程中可以使用的内存。某些测试在处理多达100GB的多分辨率图像时需要几个小时才能运行。设置人为内存限制

理想的是设置每个线程的限制,但我认为这将无法正常工作。测试在单独的进程或单独的AppDomain中执行。我知道如何使用ARM和ETW监视(但不限制)AppDomain的资源,并且我试图在进程级别上设置MaxWorkingSet,但是直到系统内存受到压力时才会生效。

因此,还有其他方法和解决方法可以完成此任务,例如通过在VM中运行测试或在启动选项上限制Wi​​ndows内存。开始分配大量内存的第二个进程。

是否有任何方法可以人为地恢复进程/ AppDomain可以使用的物理内存,即使系统上有可用的物理内存?也许可以限制虚拟内存吗?

回答

0

不知道任何此类功能可用,但我会限制内存消耗(与使用情况相反)。

所以当你启动一个测试时,它会有一个计数器,它可以创建和操作多少个对象/线程。如果计数器值达到其最大允许值,则测试等待直到其中一个线程/对象完成作业。

如果使用Parallel类,则可以set the max degree of parallelisation

+0

谢谢。测试顺序执行而不是平行执行,以避免它们相互影响。我正在使用不同的性能计数器来监视资源,但我想知道测试函数是如何在内存较少的系统中进行扩展,以及如果系统需要进行交换,该如何运行。 –

+0

即使我不喜欢答案,它似乎是真的。 –