Анализ проблем с производительностью USB с помощью Xperf и Netmon
В этом разделе содержатся сведения о том, как просмотреть временная шкала событий, собранных в журнале ТРАССИРОВКИ USB.
Xperf предоставляет набор событий ядра для анализа проблем с производительностью. Он записывает эти события и представляет их в графах.
Если вы знакомы с событиями Xperf и USB ETW, вы можете создать журнал ТРАССИРОВКИ USB и журнал Xperf для сценария проблемы, объединить два файла журнала и проанализировать их вместе. Совместное использование Xperf и Netmon позволяет просматривать системные события (Xperf) и события USB (Netmon) для заданного сценария.
Запустите две трассировки параллельно, выполнив следующие команды из командной строки с повышенными привилегиями:
Xperf –on Diag
Logman start Usbtrace -p Microsoft-Windows-USB-USBPORT -o usbtrace.etl -ets -nb 128 640 -bs 128
Logman update Usbtrace -p Microsoft-Windows-USB-USBHUB –ets
Выполните действия для сценария проблемы, а затем остановите трассировки, выполнив следующие команды из командной строки с повышенными привилегиями:
Logman stop Usbtrace -ets
Xperf –stop
Объедините два файла журнала трассировки в один файл с помощью следующей команды (привилегии не требуются):
Xperf –merge usbtrace.etl C:\kernel.etl merged.etl
В этом примере создается объединенный файл с именем merged.etl. Этот файл можно открыть с помощью Анализатор производительности Xperf или Netmon. Чтобы открыть файл в Xperf, выполните следующую команду:
Xperf merged.etl
Xperf показывает специализированные графики для широкого спектра событий ядра, как показано на этом изображении. Дополнительные сведения о параметрах записи Xperf и графическом интерфейсе Xperf см. в справочнике по Command-Line Xperf и Windows Анализатор производительности (WPA).
Чтобы открыть объединенный журнал трассировки в Netmon, запустите Netmon, щелкните Файл —> Открыть —> Запись, а затем выберите файл. Объединенный файл можно открыть одновременно в Xperf и Netmon. Вы можете переключаться между графическим интерфейсом Xperf и Netmon, чтобы проанализировать, что происходило в системе и в стеке USB в течение определенного периода времени. Вы можете просматривать события USB в Xperf в дополнение к системным событиям, но события USB могут быть проще читать в Netmon.
По умолчанию Netmon отображает все события в объединенном файле трассировки. Чтобы отобразить только события USB, примените фильтр следующего вида:
ProtocolName == "USBHub_MicrosoftWindowsUSBUSBHUB" OR ProtocolName == "USBPort_MicrosoftWindowsUSBUSBPORT"
Этот текст фильтра можно ввести на панели Отображения фильтра Netmon. Дополнительные сведения об использовании фильтров в Netmon см. в разделе "Фильтры USB Netmon" в этом примере: устранение неполадок с неизвестным USB-устройством с помощью ETW и Netmon.
Чтобы проанализировать время событий USB, можно просмотреть разницу во времени между отображаемыми событиями в Netmon.
Просмотр разницы во времени отображаемых событий
В области Сводка по кадрам щелкните правой кнопкой мыши заголовок столбца и выберите Выбрать столбцы.
В списке Отключенные столбцы выберите Разностное время, нажмите кнопку Добавить, а затем нажмите кнопку ОК.
Напишите фильтр, отображающий только те события, время которых вы хотите просмотреть. Например, чтобы просмотреть задержки между неперекрывающимися событиями массовой передачи и событиями завершения, добавьте следующий фильтр:
Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Dispatch URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER" OR Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER" OR Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER with Data"
- Вы можете выбрать идентификаторы событий (описания) из событий, которые отображаются в трассировке.
- Чтобы использовать идентификатор события в фильтре, щелкните правой кнопкой мыши описание события в области Сводка по кадру и выберите Добавить описание в фильтр отображения.