2011-11-27 66 views
1

我在使用并行计算的应用程序上工作。要知道我可以同时运行多少任务,我需要能够预测每个任务将占用的内存量。预测进程的内存使用情况

我知道(大约)每个任务将使用每种类型的数据量。

如何预测内存使用情况?使用流程指标执行运营研究?总结许多sizeof()s?

我在Windows 7 x64版本上工作。每个任务在一个单独的进程中运行。

回答

0

在其高峰运行时间,请拨打GetProcessMemoryInfo作为其中一项任务,并获取特定任务(进程)的内存使用情况。您可能还想通过在不同时间对不同任务调用此函数来获取此数据的抽样,以获得更精确的平均值。

1

所以你实际上试图做的是找到每个任务将要花费的最大内存量。

有一个.net函数可以做到这一点。这就是所谓的Process::PeakWorkingSet64

Process p = Process.GetCurrentProcess(); 
int maxSizeInKb = (int) p.PeakWorkingSet64()/(float) 1024; 
Console.WriteLine(maxSizeInKb + "KB"); 

你的进程退出之前添加该代码,并会得到你想要的信息,以KB为单位。