Визуализация событий EventSource как маркеров
Визуализатор параллелизма может отображать события EventSource в качестве маркеров и предоставляет возможность настройки того, как должны отображаться эти маркеры. Чтобы просмотреть маркеры EventSource, зарегистрируйте GUID поставщика трассировки событий Windows с помощью диалогового окна Дополнительные параметры. У визуализатора параллелизма по умолчанию есть соглашения по представлению события EventSource как маркеров флагов, маркеров интервалов и маркеров сообщений. Вы можете настраивать то, как отображаются события EventSource, путем добавления пользовательских полей в события. Дополнительные сведения о маркерах см. в разделе Маркеры визуализатора параллелизма. Дополнительные сведения о событиях EventSource см. в разделе System.Diagnostics.Tracing.
Визуализация событий EventSource по умолчанию
По умолчанию визуализатор параллелизма использует указанные ниже соглашения по представлению событий EventSource.
Тип маркера
События с кодом win:Start или win:Stop рассматриваются как начало или конец интервала соответственно. Вложенные или перекрывающиеся интервалы не могут отображаться. Пары событий, которые начинаются в одном потоке и заканчиваются в другом, также не могут отображаться.
Событие, код которого отличен от win:Start и win:Stop, рассматривается как флаг маркера, если оно не имеет уровень (поле EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR) win:Verbose или выше.
Во всех остальных случаях это событие обрабатывается как сообщение.
Важность
В приведенной ниже таблице определяется способ сопоставления уровня события и важности маркера.
Уровень трассировки событий 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 для вложения интервалов, их частичного перекрытия в одном потоке, а также обеспечения ситуации, когда интервал начинается в одном потоке, а завершается в другом.