Как узнать, что является причиной прерываний в Windows?

Как узнать, что является причиной прерываний в Windows?

Иногда я сталкиваюсь с серверами (Windows 2003 и 2008) с высоким % времени прерывания процессора. Есть ли способ узнать, какая программа или устройство вызывает прерывания?

решение1

После изучения документации (основанной на других ответах здесь) я в итоге применил следующий процесс:

  1. Запишите журнал ETW проблемы

    Самый простой способ сделать это — использоватьРегистратор производительности Windows. Я не уверен, когда он впервые появился, но, кажется, он встроен в последние версии Windows. Установите профиль на CPU usage.

    Регистратор производительности Windows

    или, используя командную строку с повышенными привилегиями, перейдите в папку, содержащую его, и используйте инструмент командной строки xperf:

    xperf -on base+interrupt+dpc
    

    Обратите внимание, что вам необходимо закрыть Process Monitor или любое другое приложение, использующее ETW, иначе вы получите следующую ошибку: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).

  2. Остановить отслеживание / сохранить журнал

    xperf -d interrupt_trace.etl
    
  3. Откройте трассировку в Windows Performance Analyzer(часть Windows Performance Toolkit); в некоторых местах xperfviewвместо этого упоминается использование .

  4. Разверните Computation-> CPU Usage (Sampled)-> DPC and ISR Usage by Module, Stack, щелкните правой кнопкой мыши иadd graph to analysis view

    Анализатор производительности Windows

  5. Это указало прямо на драйвер, о котором идет речь. В этом случае HDAudBus.sys использует постоянные 10,82% моего процессора через прерывания, что как раз и показывал мне Process Explorer.

решение2

Если вы умеете работать с низкоуровневыми системными инструментами;

Анализатор производительности Windows (WPA)

Windows Performance Analyzer (WPA) — это набор инструментов мониторинга производительности, используемых для создания подробных профилей производительности операционных систем и приложений Microsoft Windows.

После того, как вы научитесь использовать xperf, ознакомьтесь с:

Действие DPC/ISR

Действие DPC/ISR создает текстовый отчет, который суммирует различные метрики, касающиеся DPC и ISR. Использование этого действия:

Копировать код -a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2 ]

Вариант

Описание

dpc

Показать статистику только для DPC

иср

Показать статистику только для ISR

краткое содержание

Показать сводный отчет

интервал [dt]

Показывать отчет об использовании для интервалов dt, по умолчанию 1 секунда

ведро [дт]

Показать гистограмму для интервалов dt, по умолчанию 2 секунды

диапазон Т1 Т2

Показать задержки между T1 и T2

If no data type is specified, default is to show report for both DPC

и ISR. Если тип отчета не указан, по умолчанию печатаются все три вида отчета.

решение3

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

http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/

решение4

Два замечательных инструмента:LatencyMonиПроверка задержки DPC.

Связанный контент