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


Визуализация событий EventSource как маркеров

Визуализатор параллелизма может отображать события EventSource в качестве маркеров и предоставляет возможность настройки того, как должны отображаться эти маркеры. Чтобы просмотреть маркеры EventSource, зарегистрируйте GUID поставщика трассировки событий Windows с помощью диалогового окна Дополнительные параметры. У визуализатора параллелизма по умолчанию есть соглашения по представлению события EventSource как маркеров флагов, маркеров интервалов и маркеров сообщений. Вы можете настраивать то, как отображаются события EventSource, путем добавления пользовательских полей в события. Дополнительные сведения о маркерах см. в разделе Маркеры визуализатора параллелизма. Дополнительные сведения о событиях EventSource см. в разделе System.Diagnostics.Tracing.

Визуализация событий EventSource по умолчанию

По умолчанию визуализатор параллелизма использует указанные ниже соглашения по представлению событий EventSource.

Тип маркера

  1. События с кодом win:Start или win:Stop рассматриваются как начало или конец интервала соответственно. Вложенные или перекрывающиеся интервалы не могут отображаться. Пары событий, которые начинаются в одном потоке и заканчиваются в другом, также не могут отображаться.

  2. Событие, код которого отличен от win:Start и win:Stop, рассматривается как флаг маркера, если оно не имеет уровень (поле EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR) win:Verbose или выше.

  3. Во всех остальных случаях это событие обрабатывается как сообщение.

Важность

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

Уровень трассировки событий Windows Важность в визуализаторе параллелизма
win:LogAlways Обычная
win:Critical Критически важно
win:Error Критически важно
win:Warning Высокая
win:Informational Обычная
win:Verbose Низкая
Выше, чем win:verbose Низкая

Имя ряда

Имя задачи события используется для имени ряда. Имя ряда остается пустым, если для данного события не указана задача.

Категория

Если уровень — win:Critical или win:Error, то категория — Alert (–1). В противном случае категория имеет значение по умолчанию (0).

Text

Если для события определено сообщение форматированного текста (как для функции printf), то оно отображается в качестве описания маркера. В противном случае описанием будет имя события и значение каждого поля полезных данных.

Настройка визуализации событий EventSource

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

Тип маркера

Используйте поле cvType типа byte для управления типом маркера, который используется для представления события. Ниже приведены доступные значения для cvType.

Значение cvType Итоговый тип маркера
0 Message
1 Начало интервала
2 Конец интервала
3 Флаг
Все остальные значения Message

Важность

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

Значение cvImportance Важность в визуализаторе параллелизма
0 Обычная
1 Критически важно
2 Высокий
3 Высокий
4 Обычная
5 Низкая
Все остальные значения Низкая

Имя ряда

Используйте строковое поле события cvSeries, чтобы управлять именем ряда, которое визуализатор параллелизма назначает событию EventSource.

Категория

Используйте поле cvCategory типа byte, чтобы управлять категорией, которую визуализатор параллелизма назначает событию EventSource.

Text

Используйте строковое поле cvTextW, чтобы управлять описанием, которое визуализатор параллелизма назначает событию EventSource.

SpanID

Используйте поле cvSpanId типа int, чтобы сопоставлять пары событий. Значение для каждой пары событий start — stop, представляющей интервал, должно быть уникальным. Обычно для параллельного кода это требует использования примитивов синхронизации, таких как Exchange, для обеспечения правильности ключа (значения, которое используется для CvSpanID).

Примечание.

Не поддерживается использование SpanID для вложения интервалов, их частичного перекрытия в одном потоке, а также обеспечения ситуации, когда интервал начинается в одном потоке, а завершается в другом.