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