2011-11-27 4 views
1

나는 병렬 컴퓨팅을 사용하는 응용 프로그램에서 작업합니다. 병렬로 실행할 수있는 작업의 수를 파악하려면 각 작업이 차지할 메모리 양을 예측할 수 있어야합니다.프로세스의 메모리 사용량 예측

각 작업에서 사용하는 데이터의 양을 (대략) 알고 있습니다.

메모리 사용량을 예측하려면 어떻게해야합니까? 프로세스 메트릭을 사용하여 운영 연구를 수행합니까? 많은 sizeof()를 요약 해 주시겠습니까?

저는 Windows 7, x64 에디션에서 작동합니다. 각 작업은 별도의 프로세스에서 실행됩니다.

답변

0

최고 실행 시간에 작업 중 하나에 대해 GetProcessMemoryInfo을 호출하고 특정 작업 (프로세스)의 메모리 사용량을 가져옵니다. 보다 정확한 평균을 얻기 위해 다른 시간에 다른 작업에서이 함수를 호출하여이 데이터의 샘플링을 얻을 수도 있습니다.

1

그래서 실제로하려는 것은 각 작업이 취할 최대 메모리 양을 찾는 것입니다.

정확하게 작동하는 .net 기능이 있습니다. Process::PeakWorkingSet64라고 :

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

이 프로세스가 종료하기 전에이 코드를 추가하고 킬로바이트에서 원하는 정보를 얻을 것입니다.