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


Потоки отображают отчеты в визуализаторе параллелизма

В этой статье содержатся сведения о отчетах в редакторе потоков Concurrency Visualizer.

Отчет о профиле времени блокировки

Отчеты профиля предоставляют статистические данные о времени блокировки для стеков вызовов, относящихся к каждой категории блокировки (например, "I/O" или "Синхронизация"). В отчете по прерываниям перечислены процессы, которые прерывали текущий процесс, вместе с количеством случаев прерывания. Чтобы создать отчет профиля блокировки, средство собирает блокирующие вызовы API и накапливает их в дерево стеков вызовов. Данные, отображаемые в этих отчетах, зависят от текущего диапазона времени, скрытых потоков и по следующим двум фильтрам, которые могут быть применены:

  • Если выбрано «Только мой код», отображаются только кадры стека с пользовательским кодом, а также уровни на один ниже пользовательского кода.

  • Если задано значение уменьшения шума, стеки, имеющие частоту меньше указанной, пропускаются.

    Разверните любую запись дерева вызовов, чтобы найти строку кода, в которой затрачено время блокировки. Чтобы найти строку источника для записи, в контекстном меню выберите "Вид источника". Чтобы найти строку кода, вызываемую этим, в контекстном меню выберите пункт "Просмотреть сайты звонков". Если доступен только один сайт вызова, команда подключается к выделенной строке кода для сайта вызова. Если доступны несколько сайтов вызовов, команда открывает диалоговое окно, в котором можно выбрать запись, а затем нажмите кнопку "Перейти к источнику ", чтобы найти выделенный сайт вызова. Чаще всего рекомендуется просматривать исходный код для точки вызова с наибольшим количеством экземпляров, наибольшей продолжительностью времени или как того, так и другого.

Блокировка столбцов отчета о времени

В следующей таблице показаны столбцы для каждого отчета о блокирующем времени.

Имя столбца Description
Имя Имя функции для каждого уровня стека вызовов.
Экземпляры Количество случаев блокирующего вызова для видимого периода времени.
Инклюзивное время блокировки Общее время блокировки, затраченное на все стеки, которые достигают этого уровня дерева вызовов. Инклюзивное число — это сумма монопольного времени блокировки для этой функции и эксклюзивное время блокировки для всех дочерних узлов.
Эксклюзивное время блокировки Полное время блокировки, когда эта функция находится на самом нижнем уровне стека вызовов. Уникальная запись в стеке вызовов с высоким эксклюзивным временем блокировки может представлять интерес.
Категория API/Ожидание Отображается только для функций на самом низком уровне стека вызовов. Где распознается сигнатура блокирующего вызова, предоставляется имя заблокированного API. Если подпись не распознается, предоставляется информация, сообщаемая ядром.
Сведения Полностью квалифицированное имя функции. Это включает число строк, когда оно доступно.

Synchronization

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

Спать

В отчете "Спящий режим" показаны вызовы, которые отвечают за блокировку времени, которое было связано с временем, которое было потрачено на спящий режим, и агрегатное время блокировки каждого стека вызовов. Дополнительные сведения см. в разделе "Время сна".

I/O

В отчёте ввода-вывода показаны вызовы, которые отвечают за сегменты, блокирующиеся на операциях ввода-вывода, и совокупное время блокировки каждого стека вызовов. Дополнительные сведения см. в разделе "Время ввода-вывода" (представление потоков).

Управление памятью

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

Прерывание

В отчете о вытеснении перечислены процессы, которые вытеснили текущий процесс, вместе с числом экземпляров. Вы можете развернуть каждый процесс, чтобы просмотреть определенные потоки, заменившие потоки в текущем процессе, и просмотреть разбивку случаев прерывания по потокам. Этот блокирующий отчет менее полезен, чем другие, так как вытеснение накладывается операционной системой, а не проблемой в вашем коде. Дополнительные сведения см. в разделе "Время предварительного прерывания".

Обработка пользовательского интерфейса

В отчете об обработке пользовательского интерфейса представлены вызовы, которые ответственны за блокировку сегментов, препятствующих обработке пользовательского интерфейса, а также суммарное время блокировки каждого стека вызовов. Дополнительные сведения см. в разделе "Время обработки пользовательского интерфейса".

Отчет об операциях с дисками (вид потоков)

В отчете по операциям с дисками отображаются операции ввода-вывода диска в каналах дисков.

Для каждого доступа к диску, который происходит от имени процесса, профилируемого в текущем видимом окне времени, эта информация сообщается:

  • Имя и ИДЕНТИФИКАТОР процесса, выполняющего доступ к диску

  • Идентификатор потока, который обращался к диску

  • Имя файла, к которому был доступ

  • Количество операций чтения для каждого файла

  • Количество прочитанных байтов

  • Задержка чтения в миллисекундах

  • Количество операций записи

  • Число записанных байтов

  • Задержка записи в миллисекундах

Отчет профиля исполнения

Отчет профиля выполнения — это традиционный профиль выборки. Образцы берутся примерно каждую миллисекунду во время выполнения потока на логическом ядре, а Concurrency Visualizer строит типичное дерево вызовов путем сопоставления накопленных наборов выборок стека. Данные в этой таблице могут быть подвержены влиянию текущего диапазона времени и скрытых потоков, а также фильтров, которые могут быть применены:

  • Если выбрано "Только мой код" (Just My Code), отображаются только кадры стека с пользовательским кодом, плюс один дополнительный уровень ниже пользовательского кода.

  • Если установлен параметр уменьшения шума, сгруппированные стеки с частотой ниже заданной отфильтровываются из отчета.

    В следующей таблице показаны столбцы в отчете.

колонна Description
Имя Имя функции для каждого уровня стека вызовов.
Инклюзивные примеры Общее количество примеров, собранных для всех стеков, которые свернуты на этом уровне дерева стека вызовов. Инклюзивное число представляет собой сумму эксклюзивных образцов для этой функции и инклюзивных счетчиков для всех её дочерних узлов.
Эксклюзивные примеры Общее количество собранных примеров, для которых эта функция является самым низким уровнем стека вызовов.
% включительно Процент общих выборок, отображаемых в столбце инклюзивных примеров. Проценты округляются до двух десятичных разрядов.
% Эксклюзив Процент общих выборок, отображаемых в столбце эксклюзивных примеров. Проценты округляются до двух десятичных разрядов.
Сведения Полностью квалифицированное имя функции. Это включает число строк, когда оно доступно.

Эта таблица отчета можно увидеть в представлении времени выполнения (представление потоков).

Отчет о маркерах

В отчете "Маркеры" перечислены маркеры в отображаемом интервале времени. Панорамирование, масштабирование или скрытие полос может привести к появлению или исчезновению маркеров. Отчет содержит эти сведения о каждом маркере:

  • Время начала события относительно начала трассировки.

  • Его длительность. Длительность равна нулю для флагов и сообщений, так как они представляют мгновенное значение.

  • Идентификатор потока, создающего его.

  • Поставщик отслеживания событий для Windows (ETW), создающий его.

  • Серия маркеров, из которой она была написана.

  • Категория событий, к которой она принадлежит.

  • Его уровень важности.

  • Его тип (диапазон, флаг или сообщение).

  • Высокоуровневое описание того, что он представляет

    Нажмите кнопку "Экспорт ", чтобы сохранить отчет маркеров в виде CSV-файла. Данные в CSV-файле можно использовать с другими приложениями или инструментами.

Замечание

Отчет о маркерах может отображать 1000 маркеров. Чтобы просмотреть все маркеры, экспортируйте полный отчет в CSV-файл.

Сводный отчет по потоку

На этой столбчатой диаграмме показано, какую долю времени каждый видимый поток проводит в каждой категории действий в течение текущего видимого диапазона времени. "Выполнение" означает, что поток выполняется; все остальные категории означают, что поток ждет чего-то.