Как рассчитываются показатели памяти Process Explorer: частные столбцы WS, общие ресурсы WS, общие столбцы WS? - PullRequest
2 голосов
/ 26 апреля 2009

Я продолжаю свою сагу , чтобы понять потребление памяти приложением VB6. Опция, которая, кажется, работает лучше всего, состоит в том, чтобы отслеживать различные метрики памяти в ключевых точках во время выполнения и понимать, где большие объемы памяти. Чтобы оценить это, нужно понять, как влияет масштабируемость приложения в многопользовательской среде на Terminal Server (Citrix) из-за изменений в потреблении памяти (проще говоря, чем больше памяти вы используете, тем меньше пользователей вы можете разместить на сервере ).

Я могу получить большинство показателей памяти для процесса, используя GetProcessMemoryInfo . Process Explorer сообщает о дополнительных показателях WS Private, WS Shareable, WS Shared - которые кажутся мне очень интересными для моего исследования.

Итак, вопрос в том, существует ли стандартный / скрытый API для получения этих показателей для процесса? Я хотел бы запросить эти метрики программно, чтобы я мог захватывать их в ключевых точках во время работы приложения и лучше понимать использование памяти.

1 Ответ

2 голосов
/ 26 апреля 2009

См. API QueryWorkingSet. Хотя это выглядит довольно неприятно, поскольку он возвращает информацию для каждой страницы и, следовательно, предоставит вам возможность агрегировать итоги. Если есть лучший способ, пожалуйста, оставьте комментарий, и я удалю этот ответ.

Кроме того, если вы имеете в виду определенные места, где вы хотите отслеживать изменения в рабочем наборе, вы можете проверить API InitializeProcessForWsWatch и GetWsChanges - это может упростить просмотр количества страниц с ошибками в вместо того, чтобы просматривать весь набор страниц до и после.

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