Когда я исследовал некоторые жесткие ошибки страницы, я наткнулся на это. Объекты Память и Процесс дают разные значения одного и того же счетчика: Ошибок страницы / сек. Существуют ли какие-либо процессы, связанные с ОС, которые вызывают сбои страниц, которые не отслеживаются объектом Process Monitor? Почему число ошибок процесса \ страницы / сек всегда ниже числа ошибок страницы памяти / сек?
Счетчик Memory => Page Faults/sec
представляет собой общесистемное количество ошибок страниц. И мягкие, и жесткие ошибки. И пользовательский режим, и режим ядра.
С другой стороны, счетчик Process => Page Faults/sec
- это набор счетчиков, который имеет экземпляр для каждого процесса пользовательского режима, запущенного на машине. Таким образом, вы можете проверить ошибки страниц, вызванные одним конкретным процессом. Или вы можете выбрать _Total
instance, чтобы получить сумму всех ошибок страниц, возникших во всех запущенных процессах.
Но даже если вы выбрали _Total
, вы по-прежнему могли получать только ошибки страниц, вызванные процессами пользовательского режима. Не сбои страниц в ядре, например, из-за драйверов устройств.
Ошибки страниц могут быть устранены при IRQL ЦП 0 (все пользовательские режимы и большинство режимов ядра) или 1 (APC ядра и ошибки страниц), но ошибки страниц не могут быть устранены при IRQL 2 (отправка) или выше.
Ошибки страницы бывают двух видов: мягкие ошибки и жесткие ошибки. Жесткие сбои - это те, которые могут вызвать серьезное снижение производительности, потому что вам нужно перейти на диск (файл подкачки), чтобы устранить жесткую ошибку. Мягкие сбои не так уж и плохи, потому что страница все еще где-то в ОЗУ, она просто не входит в рабочий набор процесса и должна быть извлечена из другого места в основной памяти, что намного быстрее, чем на диске.
Так Process => Page Faults/sec => _Total
- это сумма всех ошибок страниц, вызванных всеми запущенными процессами пользовательского режима. Memory => Page Faults/sec
в том, что плюс любые дополнительные ошибки страницы режима ядра.