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
Профиль A ссылается на сборщик A сборщика A. Другой профиль B требует внесения изменений в профиль A, поэтому он является производным от него, и указывает его изменения непосредственно в своем определении. Это рекомендуется, так как только объект профиля является производным от другого объекта профиля.
Пример 3
Профиль A ссылается на сборщик A сборщика A. Сборщик A2 является производным от сборщика A. Наконец, профиль B является производным от профиля A, а также ссылается на сборщик A, на который уже ссылается родительский профиль профиля B.
В этом случае неоднозначно, как следует оценивать определение для сборщика A2 . В одном случае приоритет имеет наследование профиля, а в другом — наследование сборщика. Это не рекомендуется, так как порядок не определен и может привести к разным результатам в зависимости от порядка операций.
Исходя из этого, никогда не следует комбинировать производные от нескольких типов объектов.