Поделиться через


Анализ проблем с производительностью USB с помощью Xperf и Netmon

В этом разделе содержатся сведения о том, как просмотреть временную шкалу событий, захваченных в журнале USB ETW.

Xperf предоставляет набор событий ядра для анализа проблем с производительностью. Он записывает эти события и представляет их в графиках.

Если вы знакомы с событиями XPerf и USB ETW, вы можете создать журнал USB ETW и журнал проблемы 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 см. в Справочнике Xperf Command-Line и Анализаторе производительности Windows (WPA).

Снимок экрана: анализатор производительности Windows.

Чтобы открыть объединенный журнал трассировки в 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.

Просмотр разницы времени отображаемых событий

  1. В области "Сводка кадров" щелкните правой кнопкой мыши заголовок столбца и выберите "Выбрать столбцы".

  2. В списке "Отключенные столбцы" выберите "Время дельта", нажмите "Добавить" и затем "ОК".

  3. Напишите фильтр, отображающий только события, время которого вы хотите просмотреть. Например, чтобы просмотреть задержки между непересекающимися крупнообъемными передачами и завершением событий, добавьте следующий фильтр:

    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"
    
    1. Идентификаторы событий (описания) можно выбрать из событий, которые отображаются в трассировке.
    2. Чтобы использовать идентификатор события в фильтре, щелкните правой кнопкой мыши описание события в области "Сводка кадров " и выберите "Добавить описание в фильтр отображения".