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


1. Определения сборщика

В настоящее время средство записи производительности Windows (WPR) поддерживает три типа сборщиков: системный сборщик, сборщик событий и сборщик событий кучи. Определение сборщика системы определяет размеры буферов и другие атрибуты для сеансов средства ведения журнала системы Windows (ETW), которые работают вместе с nt kernel Logger. Определения сборщика событий и кучи указывают размеры буферов и другие атрибуты для сеансов пользователя трассировки событий Windows.

Порядок определения сборщика ограничен схемой WPR. В WPRP-файле определения сборщика систем должны предшествовать определениям сборщика событий. Оба этих определения должны предшествовать определению сборщика кучи (при наличии определения сборщика кучи). Схема WPR определена в схеме WPRControlProfiles.

Атрибуты сборщика

Сборщики имеют следующие обязательные атрибуты:

  • Идентификатор: уникальный строковый идентификатор, который ссылается на определение сборщика в WPRP-файле.

  • Имя: имя сборщика; Например, "Сборщик WPR". Системный сборщик должен иметь имя NT Kernel Logger.

Определения сборщика должны содержать следующие определения размера буфера:

  • BufferSize: задает размер одного буфера в килобайтах (КБ).

  • Буферы. Указывает количество буферов или, если атрибут PercentageOfTotalMemory имеет значение true, процент общей памяти, используемой для буферизации.

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

Примеры определений сборщика

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

<SystemCollector
  Id="WPRSystemCollector"
  Name="NT Kernel Logger"
  FileName="WPRKernel.etl">
  <BufferSize
    Value="512"/>
  <Buffers
    Value="3"
    PercentageOfTotalMemory="true"/>
</SystemCollector>

<EventCollector
  Id="WPREventCollector"
  Name="WPR Event Collector"
  FileName="somefilename.etl">
  <BufferSize
    Value="128"/> 
  <Buffers
    Value="64"/>
</EventCollector>

<HeapEventCollector
  Id="Base_Heap_Collector"
  Name="Base Heap Collector"
  FileName="heap.etl">
</HeapEventCollector>

Примеры наследования

Средство записи производительности Windows поддерживает наследование своих объектов с помощью атрибута Base="" в XML-схеме профиля WPR. Это позволяет постепенно создавать дополнения или специализации объектов, добавляя при этом повторное использование общих определений.

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

Пример 1

Пример наследования

Если профиль A хочет использовать сборщик событий А с некоторыми изменениями, он может определить сборщик A2 , производный от сборщика A (Base="Collector A"), а затем ссылаться на этот сборщик A2. Это рекомендуется, так как только объект сборщика является производным от другого объекта сборщика и на него ссылается напрямую.

Пример 2

Пример наследования 2

Профиль A ссылается на сборщик A сборщика A. Другой профиль B требует внесения изменений в профиль A, поэтому он является производным от него, и указывает его изменения непосредственно в своем определении. Это рекомендуется, так как только объект профиля является производным от другого объекта профиля.

Пример 3

Пример наследования 3

Профиль A ссылается на сборщик A сборщика A. Сборщик A2 является производным от сборщика A. Наконец, профиль B является производным от профиля A, а также ссылается на сборщик A, на который уже ссылается родительский профиль профиля B.

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

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

Создание профилей записи

2. Определения систем и поставщиков событий

Справочник по XML-профилю записи