Прогнозирование использования памяти процессом - PullRequest
1 голос
/ 27 ноября 2011

Я работаю над приложением, которое использует параллельные вычисления. Чтобы знать, сколько задач я могу запустить параллельно, мне нужно уметь прогнозировать объем памяти, который займет каждая задача.

Я знаю (приблизительно), сколько данных каждого типа будет использовать каждое задание.

Как мне прогнозировать использование памяти? Выполнить исследование операций с использованием метрик процесса? Суммируйте много sizeof () s?

Я работаю на Windows 7, x64 edition. Каждая задача выполняется в отдельном процессе.

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Итак, что вы на самом деле пытаетесь сделать, так это найти максимальный объем памяти, который займет каждая задача, приблизительно.

Существует функция .net, которая делает именно это. Это называется Process::PeakWorkingSet64:

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

Добавьте этот код до завершения процесса и получите необходимую информацию в килобайтах.

0 голосов
/ 27 ноября 2011

В пиковое время выполнения вызовите GetProcessMemoryInfo для одной из задач и получите использование памяти конкретной задачей (процессом). Вы также можете получить выборку этих данных, вызывая эту функцию для разных задач в разное время, чтобы получить более точное среднее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...