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

37

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

jlupolt
источник

Ответы:

41

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

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

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

    Windows Performance Recorder

    или с помощью командной строки с повышенными привилегиями перейдите в папку, в которой она находится, и используйте инструмент командной строки 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.

Дейв Андерсен
источник
Хороший! Очень хорошо сделано.
Михал Соколовский
Хорошо объяснил. В моем случае это оказался audiodg.exe. Как только я его убил, ЦОДы почти ни к чему не пришли. Я нашел дополнительные подробности о том , как решить эту проблему здесь: windows-exe-errors.com/...
CJBS
Одно исправление - вам нужно расширить Computing-> CPU Usage (Sampled) - «Использование CPU» неоднозначно.
Брюс Доусон
В моем случае у меня было 10% DPC в диспетчере задач, но в основном это был ntoskrnl.exe в трассировке. Однако расширение стека этого модуля выявило стороннюю службу «RfeCo10X64.sys», которая была частью Killer Performance Suite. Я удалил это программное обеспечение (какая-то система определения приоритетов в сети, которая выполняла действие, противоположное тому, что было предпринято), и моя проблема была решена.
Крис
Это работает на Windows 10? Любые другие инструменты доступны? Я не хочу устанавливать файлы GiB всего пакета.
Неизвестно123
4

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

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

Анализатор производительности Windows (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

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

резюме

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

интервал [дт]

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

ведро [дт]

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

диапазон T1 T2

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

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

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

RandomNickName42
источник
3

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

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

Syclone0044
источник
1
Добро пожаловать в сбой сервера! Как правило, нам нравятся ответы на сайте, чтобы они могли стоять сами по себе - Ссылки - это здорово, но если эта ссылка когда-либо разорвется, в ответе должно быть достаточно информации, чтобы она оставалась полезной. Пожалуйста, рассмотрите возможность редактирования своего ответа, чтобы включить больше деталей. Смотрите FAQ для получения дополнительной информации.
СЛМ
0

Взгляните на Windows Process Explorer:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Это должно помочь.

Davey
источник
2
Process Explorer показывает, сколько процессорного времени затрачивается на обработку прерываний, но, насколько я могу судить, не позволяет определить причину прерываний.
Jlupolt