Какой PerformanceCounter в категории процесса возвращает размер памяти для экземпляра процесса?

Я написал приложение, которое отслеживает запущенные в данный момент процессы.

В следующем фрагменте я получаю все экземпляры в категории «Процесс».

   var category = new PerformanceCounterCategory("Process");
   var instanceNames = category.GetInstanceNames();

Чуть позже я получаю все категории для одного экземпляра. Это выглядит так.

   var counters = category.GetCounters(instanse);

Я вижу, что каждый экземпляр в этой категории содержит 28 жетонов. Под списком счетчиков.

% Загруженности процессора
% времени пользователя
% привилегированного времени
пиковое значение виртуальных байтов
виртуальных байтов
сбоев страницы / сек
пиковое значение рабочего набора
рабочий набор
байтов файла подкачки Пик
байтов файла подкачки
байтов личного пользования
Количество потоков
База приоритета
Истекшее время
Идентификатор процесса
Создание идентификатора процесса
Выгружаемые байты пула
Выгружаемые байты пула
Счетчик обработчиков
Операций чтения ввода-вывода / сек
Операций записи ввода-вывода / сек
Операций ввода-вывода данных / сек
Прочих операций ввода-вывода / сек
Байт чтения ввода-вывода / сек
Запись ввода-вывода Байт / сек
Байт данных ввода-вывода / сек
Другие байты ввода-вывода / сек
Рабочий набор - частный

Так что вопрос. Какой счетчик предоставляет информацию о памяти, занятой текущим экземпляром?
Я думаю, это простой вопрос, но я не могу найти ответа. Буду признателен, если кто подскажет.

Если предположить, что это «Рабочий набор»:

Имя процесса: SkypeC2CPNRSvc | ProcessId: 2500 Процесс:
Группа: Процесс | Процесс: SkypeC2CPNRSvc | Имя: Рабочий набор | Значение: 311296

Это значение рассчитывается следующим образом: prfc.NextValue () / 1024
В диспетчере задач для этого процесса я вижу 316K


person Seva    schedule 24.06.2016    source источник
comment
Возможно рабочий набор? (Полностью основано на en.wikipedia.org/wiki/Working_set)   -  person Platinum Azure    schedule 24.06.2016


Ответы (2)


«Рабочий набор». «Рабочий набор - частный» и «частные байты» - все счетчики, которые описывают память, используемую текущим процессом.

Вы можете увидеть эту ссылку, чтобы хорошо обсудить различия:

Что такое частные байты, виртуальные байты, рабочий набор?

person Mark    schedule 24.06.2016

Я бы использовал TraceEvent, чтобы запустить Realtime Session и активируйте провайдера Microsoft-Windows-Kernel-Memory с помощью клавиш 0x40 (KERNEL_MEM_KEYWORD_MEMINFO_EX) .

Теперь Windows запускает каждые 0,5 с и событие с этими данными:

Count, ProcessID, WorkingSetPageCount, CommitPageCount, VirtualSizeInPages, PrivateWorkingSetPageCount

Разбирайте их так, как вам нужно.

person magicandre1981    schedule 27.06.2016