Partager via


Héritage

Les profils d’enregistrement WPR (Windows Performance Recorder) sont stockés dans un fichier XML qui a une extension .wprp. WPR prend en charge l’héritage de ses objets à l’aide de l’attribut Base=" » dans le schéma XML du profil WPR. L’héritage vous permet de conserver, réutiliser et créer des définitions de profil courantes pour enregistrer des scénarios spécialisés. Par exemple, vous pouvez ajouter un fournisseur à un profil existant et ainsi modifier les tailles de mémoire tampon sans modifier une définition dans le profil réel.

Important Lorsque vous créez des profils WPRP, vous devez hériter des données de profil des profils de base intégrés de WPR, ou réutiliser les mêmes noms de session pour éviter d’activer le même fournisseur plusieurs fois.

Profils de base

Vous pouvez utiliser des balises XML pour modifier le contenu d’un profil. Vous devez utiliser l’attribut Operation . Les valeurs possibles pour l’attribut Operation sont Set et Add. Dans l’exemple suivant, DerivedProfile ajoute le système ReadyThread mot clé aux mots clés CpuConfig, CSwitch et SampledProfile que BaseProfile définit.

<SystemCollector
  Id="BaseSystemCollector" ... />

<SystemProvider
  Id="MainSystemProvider">
  <Keywords>
    <Keyword
      Value="CpuConfig"/>
    <Keyword
      Value="CSwitch"/>
    <Keyword
      Value="SampledProfile"/>
  </Keywords>
</SystemProvider>

<SystemProvider
  Id="AnotherSystemProvider">
  <Keywords> 
    <Keyword
      Value="ReadyThread"/>
  </Keywords>
</SystemProvider>

<Profile
  Id="BaseProfile"...>
  ... 
  <Collectors>
    <SystemCollectorId
      Value="BaseSystemCollector">
      <SystemProviderId
        Value="MainSystemProvider"/>
    </SystemCollectorId>
  </Collectors>
</Profile>

<Profile
  Id="DerivedProfile"
  Base="BaseProfile"...>
... 
  <Collectors Operation="Add"> <!--Use "Add" operation to add new provider to an existing one. -->
    <SystemCollectorId
      Value="BaseSystemCollector">
      <SystemProviderId
        Value="AnotherSystemProvider"/> <!--Specify provider to add. --> 
    </SystemCollectorId> 
  </Collectors>
</Profile>

Note Si vous ne spécifiez pas l’attribut Operation , mais que vous utilisez l’héritage, WPR utilise la valeur par défaut Set.

Exemple

L’exemple suivant définit un profil pour le mode de journalisation des fichiers. La version de mémoire hérite de la version du fichier et remplace uniquement le mode de journalisation.

<Profile
   Id="SampleProfile.Verbose.File"
   LoggingMode = "File"
   DetailLevel = "Verbose"
   Name = "SampleProfile"
   Description = "A sample profile">
   …

</Profile>

<Profile
   Id="SampleProfile.Verbose.Memory"
   Base="SampleProfile.Verbose.File”
   LoggingMode = "Memory"
   DetailLevel = "Verbose"
   Name = "SampleProfile"
   Description = "A sample profile"/>

Meilleures pratiques en matière d’héritage

Un héritage mal conçu peut avoir des conséquences inattendues. Nous vous recommandons de dériver uniquement des collecteurs à partir de collecteurs ou des profils à partir de profils. Vous ne devez jamais combiner des dérivations sur plusieurs types d’objets.

Les trois exemples suivants décrivent deux bonnes façons d’utiliser l’héritage : le troisième exemple décrit une mauvaise utilisation de l’héritage.

Exemple 1 : Bonne utilisation de l’héritage

Vous souhaitez utiliser les spécifications de Event Collector-A, avec quelques modifications. Pour cela :

  1. Définissez un deuxième collecteur (Collector-B) qui hérite de ses spécifications de Collector-A.

  2. Modifiez le collecteur B.

  3. Définissez le profil pour référencer Collector-B.

Il s’agit d’une bonne pratique, car seul l’objet collecteur hérite des attributs d’un autre objet collecteur, qui est alors directement référencé par le profil.

Exemple 2 : Bonne utilisation de l’héritage

  1. Profile-A fait référence au collecteur-A.

  2. Profile-B hérite des attributs de Profile-A.

  3. Vous modifiez des attributs particuliers dans Profile-B.

Il s’agit d’une bonne pratique, car seul l’objet de profil dérive d’un autre objet de profil.

Exemple 3 : Mauvaise utilisation de l’héritage

  1. Profile-A fait référence au collecteur-A.

  2. Le collecteur B hérite de Collector-A.

  3. Profile-B hérite de Profile-A et fait également référence à Collector-B.

Dans ce cas, le profil B fait référence au collecteur B deux fois : une fois via l’héritage par Profile-A, et une fois par référence directe à Collector-B. Dans ce cas, il n’est pas clair comment la définition de Collector-B doit être évaluée; c’est-à-dire quelle dérivation doit être prioritaire. Cet exemple illustre une mauvaise pratique, car l’ordre n’est pas défini et peut entraîner des résultats contradictoires basés sur l’ordre des opérations. Ce type d’héritage doit être évité.

Création de profils d’enregistrement

Schéma WPRControlProfiles