2012-05-31 3 views
5

Возможно ли использование ETW для получения статистики памяти всех процессов и системы? Со статистикой памяти я имею в виду: например. Заданные байты, частные байты, выгружаемый пул, рабочий набор, ...Можно ли использовать ETW (отслеживание событий для окон) для сбора статистики памяти?

Я ничего не могу найти об использовании xperf для получения статистики статистики. Это всегда о CPU, диске, сети.

Возможно, можно использовать счетчики производительности для получения такой информации, но как можно накладывать статистику графически на одну диаграмму (как соотнести/синхронизировать временные метки)?

ответ

6

Ваш лучший выбор на Windows 8.1 и выше - это поставщик Microsoft-Windows-Kernel-Memory, который записывает информацию о каждой рабочей памяти каждые 0,5 с. См. https://github.com/google/UIforETW/issues/80. UIforETW позволяет это по умолчанию, когда он доступен.

Вы также можете попробовать провайдер MEMINFO. Он дает общесистемный обзор давления памяти. Он показывает активный список (в настоящее время в используемой памяти), резервный список («полезные» страницы, которые в настоящее время не используются, например, кеш диска) и списки «нуль» и «бесплатно» (действительно свободная память). Это, по крайней мере, позволяет определить, закончилась ли в системе нехватка памяти.

Вы также можете попробовать MEMINFO_WS и CONTMEMGEN, но они недокументированы, поэтому я действительно не знаю, что они делают. Они отображаются в xperf-providers k, но когда я записываю с ними, я не вижу никаких новых графиков. По-видимому, Microsoft отправляет этих поставщиков, но нет возможности их просматривать. Sigh ...

Если вам нужна дополнительная информация о памяти в Windows 7 - например, для рабочих наборов для каждого процесса, лучше всего запустить процесс, который периодически запрашивает эти данные и отправляет их в пользовательские события ETW. Это доступно в предварительно упакованной форме в UIforETW, которая может запрашивать рабочий набор указанного набора процессов один раз в секунду. См. Объявление о том, как получить UIforETW: https://randomascii.wordpress.com/2015/04/14/uiforetw-windows-performance-made-easier/

Данные рабочего набора UIforETW для Windows 7 отображаются в общих событиях под названием задачи == WorkingSet. В Windows 8.1 данные рабочего набора ОС (более подробные, более эффективно записанные) отображаются в разделе Память-> Снимки виртуальной памяти.

2

Вы можете трассировать использование памяти с помощью группы ядра ReferenceSet. Она включает в себя следующие traceflags:

PROC_THREAD+LOADER+HARD_FAULTS+MEMORY+FOOTPRINT+VIRT_ALLOC+MEMINFO+VAMAP+SESSION+REFSET+MEMINFO_WS 

памяти = Память трассировки

СЛЕД + ССЫЛНАБ анализ = Поддержка след

MemInfo = Список рекомендованных модулей памяти Info (активный, ожидания и oters вы видите из ResMon)

VIRT_ALLOC = резерв и освобождение виртуального распределения

VAMAP = информация о картах

MEMINFO_WS = Рабочий набор Info

Как вы можете видеть Xperf может захватить много данных памяти, когда вы подать в суд на правильные флаги.

+1

Да, он может захватывать много данных, но как мы можем его отображать *, чтобы отображать * эти данные или иным образом извлекать их? В частности, я не могу найти способ отображения данных MEMINFO_WS. В разделе «Память» WPA я могу увидеть использование памяти (активные/измененные/etc. Списки), «жесткие ошибки», «время жизни виртуального пользователя», «диаграммы пулов» и «резидентный набор». Resident Set выглядит наиболее полезным, но, похоже, отображает информацию REFSET, и что отображает данные MEMINFO_WS? –

+1

Резидентский набор, похоже, только что захватил снимок в конце трассы, поэтому он плохо заметен в течение хода. Я думаю, что мне действительно нужны данные MEMINFO_WS. –

 Смежные вопросы

  • Нет связанных вопросов^_^