1. Definições de coletor
Atualmente, o WPR (Gravador de Desempenho do Windows) dá suporte a três tipos de coletores: o coletor do sistema, os coletores de eventos e um coletor de eventos de heap. A definição do coletor do sistema especifica tamanhos de buffer e outros atributos para sessões de agente do sistema ETW (Rastreamento de Eventos para Windows) que funcionam em conjunto com o Agente de Kernel do NT. As definições do coletor de heap e evento especificam tamanhos de buffer e outros atributos para sessões de usuário ETW.
A ordem de definição do coletor é restrita pelo esquema WPR. No arquivo .wprp, as definições do coletor do sistema devem preceder as definições do coletor de eventos. Essas definições devem preceder a definição do coletor de heap (se houver uma definição de coletor de heap). O esquema WPR é definido no esquema WPRControlProfiles.
Atributos do coletor
Os coletores têm os seguintes atributos obrigatórios:
Id: identificador de cadeia de caracteres exclusivo que se refere à definição do coletor no arquivo .wprp.
Nome: nome do coletor; por exemplo, "Coletor WPR". O nome do coletor do sistema deve ser "NT Kernel Logger".
As definições do coletor devem conter as seguintes definições de tamanho de buffer:
BufferSize: especifica o tamanho de um único buffer, em quilobytes (KB).
Buffers: especifica o número de buffers ou, se o atributo PercentageOfTotalMemory estiver definido como "true", o percentual da memória total a ser usada para buffer.
Para obter mais informações sobre buffers, consulte Modo de registro em log.
Exemplos de definição de coletor
O exemplo de código a seguir mostra uma definição de coletor de sistema e uma definição de coletor de eventos.
<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>
Exemplos de herança
O Gravador de Desempenho do Windows dá suporte à herança de seus objetos usando o Base=""
atributo no esquema XML do perfil WPR. Isso permite que adições ou especializações de objetos sejam criadas progressivamente ao adicionar o reutilização de definições comuns.
A complexidade não intencional e os efeitos colaterais podem ocorrer em determinados cenários; esta seção descreve exemplos e práticas recomendadas.
Exemplo 1
Se um perfil perfil A quiser usar o coletor de eventos A com algumas modificações, ele poderá definir um Coletor coletor A2 que deriva do Coletor A (Base="Coletor A" e, em seguida, referencia esse coletor Coletor A2. Isso é recomendado porque apenas o objeto coletor deriva de outro objeto coletor e é referenciado diretamente.
Exemplo 2
Um perfil perfil A faz referência a um coletor A. Outro perfil perfil B requer alterações no Perfil A para que ele seja derivado dele e especifique suas alterações diretamente em sua definição. Isso é recomendado porque apenas o objeto de perfil deriva de outro objeto de perfil.
Exemplo 3
Um perfil perfil A faz referência a um coletor A. Um coletor coletor A2 deriva do Coletor A. Por fim, o perfil Perfil B deriva do Perfil A e também faz referência ao Coletor A que já é referenciado no perfil pai do Perfil B.
Nesse caso, é ambíguo como a definição do Coletor A2 deve ser avaliada. Em um caso, a derivação de perfil tem precedência e, em outro, a derivação do coletor tem precedência. Essa não é uma prática recomendada porque a ordenação é indefinida e pode levar a resultados diferentes com base na ordenação de operações.
Com base nisso, você nunca deve combinar derivações em vários tipos de objetos.