Сеансы

Средство записи производительности Windows (WPR) расширяет возможности трассировки событий Windows (ETW). Сеанс ведения журнала ETW — это коллекция буферов в памяти, которая принимает события через программный интерфейс (API) поставщика ETW. Эти буферы обычно не являются страничными и управляются ядром. Трассировка событий Windows назначает буфер каждому процессору. Создание событий ETW и буферизация не блокируются, что позволяет трассировки событий Windows регистрировать все виды событий.

При каждом вызове метода EventWrite трассировка событий Windows резервирует место в текущем буфере, выделенном трассировкой событий Windows для процессора, выполняющего вызывающий поток. Затем трассировка событий Windows копирует заголовок события и пользовательские данные в это пространство. Когда буфер заполнен, трассировка событий Windows сбрасывает его в файл журнала сеанса ведения журнала или в потребитель потоковой передачи в режиме реального времени. EtW затем назначает свободный буфер для этого процессора.

Если пропускная способность ведения журнала превышает способность flusher освобождать буферы, все доступное буферное пространство в сеансе ведения журнала может стать недоступным. Например, это может произойти из-за того, что пропускная способность записи на диске ниже пропускной способности входящего события. Это приводит к тому, что EventWrite вызывает ошибку ERROR_NOT_ENOUGH_MEMORY и теряет данные события. В таких случаях etW увеличивает свойство EventsLost сеанса ведения журнала, чтобы потребители могли видеть потерю данных.

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

Ведение журнала в памяти или в файл

Вы можете настроить профили для записи данных о событиях в буферы в памяти или в файл. Режим буферизации — это циклический сеанс в памяти. Содержимое этого сеанса можно сохранить в виде snapshot в файл журнала трассировки событий (ETL) по запросу. WPR не очищает содержимое буферного пространства в памяти при сохранении содержимого.

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

Дополнительные сведения о параметрах ведения журнала см. в разделе Режим ведения журнала.

Профили записи

Профиль записи управляет каждым сеансом. Профиль может быть встроенным или определяемым пользователем профилем. Дополнительные сведения см. в разделе Профили записи.

Размер буфера

Размер буфера важен для управления эффективностью ввода-вывода и обеспечения того, чтобы WPR не пропускал большие события. Очень маленькие буферы могут снизить эффективность записи ввода-вывода. Мы рекомендуем использовать минимальный размер буфера в 64 КБ или 128 КБ, чтобы повысить производительность записи и уменьшить нагрузку на диск и события потери. Размер буфера определяет максимальную продолжительность записи. Трассировка событий Windows ограничивает максимальный размер события примерно 64 КБ.

Сборщики

Необходимо определить системный сборщик и один или несколько сборщиков событий для сеанса в профиле записи. Имя сборщика должно быть уникальным для системы, а система должна иметь монопольный доступ на запись в файл журнала. Имя файла журнала также должно быть уникальным среди имен файлов всех сборщиков. WPR не расширяет переменные среды, поэтому путь к файлу журнала должен быть указан без переменных среды. Дополнительные сведения см. в разделе 1. Определения сборщика.

Поставщики

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

Функции WPR

Распространенные сценарии WPR

Профили записи

Buffers

BufferSize