Vererbung

Windows Performance Recorder(WPR)-Aufzeichnungsprofile werden in einer XML-Datei mit der Erweiterung „.wprp“ gespeichert. WPR unterstützt die Vererbung seiner Objekte mithilfe des Attributs Base=”” im WPR-Profil-XML-Schema. Mit Vererbung können Sie gängige Profildefinitionen beibehalten, wiederverwenden und auf ihnen aufbauen, um Aufzeichnungen für spezielle Szenarien anzulegen. Sie können beispielsweise einem vorhandenen Profil einen Anbieter hinzufügen und dadurch Puffergrößen ändern, ohne eine Definition im tatsächlichen Profil zu ändern.

Wichtig Wenn Sie WPRP-Profile bearbeiten, sollten Sie entweder Profildaten aus den integrierten Basisprofilen von WPR erben oder dieselben Sitzungsnamen wiederverwenden, um das mehrmalige Aktivieren desselben Anbieters zu vermeiden.

Basisprofile

Sie können XML-Tags verwenden, um den Inhalt eines Profils zu ändern. Sie müssen das Operation-Attribut verwenden. Die möglichen Werte für das Operation-Attribut sind Set und Add. Im folgenden Beispiel fügt DerivedProfile den von BaseProfile definierten Schlüsselwörtern CpuConfig, CSwitch und SampledProfile das Systemschlüsselwort ReadyThread hinzu.

<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>

Hinweis Wenn Sie das Operation-Attribut nicht festlegen, aber Vererbung verwenden, verwendet WPR den Standardwert Set.

Beispiel

Im folgenden Beispiel wird ein Profil für den Dateiprotokollierungsmodus definiert. Die Speicherversion erbt von der Dateiversion und überschreibt nur den Protokollierungsmodus.

<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"/>

Bewährte Methoden für die Vererbung

Schlecht konzipierte Vererbung kann unbeabsichtigte Folgen haben. Es wird empfohlen, Sammler nur von Sammlern oder Profile nur von Profilen abzuleiten. Sie sollten Ableitungen niemals über mehrere Arten von Objekten hinweg kombinieren.

In den folgenden drei Beispielen werden zwei gute Methoden zum Verwenden der Vererbung beschrieben; das dritte Beispiel beschreibt eine schlechte Verwendung.

Beispiel 1: Gute Verwendung der Vererbung

Sie möchten die Spezifikationen des Ereignissammlers A mit einigen Änderungen verwenden. Gehen Sie folgendermaßen vor:

  1. Definieren Sie einen zweiten Sammler (Collector-B), der seine Spezifikationen von Collector-A erbt.

  2. Ändern sie Collector-B.

  3. Spezifizieren Sie das Profil so, dass es auf Collector-B verweist.

Dies ist eine gute Methode, da nur das Collector-Objekt Attribute von einem anderen Collector-Objekt erbt, auf das dann direkt vom Profil verwiesen wird.

Beispiel 2: Gute Verwendung der Vererbung

  1. Profile-A verweist auf Collector-A.

  2. Profile-B erbt Attribute von Profile-A.

  3. Sie ändern bestimmte Attribute in Profile-B.

Dies ist eine gute Methode, da nur das Profile-Objekt von einem anderen Profile-Objekt abgeleitet wird.

Beispiel 3: Schlechte Verwendung der Vererbung

  1. Profile-A verweist auf Collector-A.

  2. Collector-B erbt von Collector-A.

  3. Profile-B erbt von Profile-A und verweist auch auf Collector-B.

In diesem Fall verweist Profile-B zweimal auf Collector-B: einmal durch Vererbung durch Profil-A und einmal durch den direkten Verweis auf Collector-B. In diesem Fall ist unklar, wie die Definition für Collector-B ausgewertet werden soll, d. h. welche Ableitung Vorrang haben soll. Dieses Beispiel stellt ein schlechtes Vorgehen dar, da die Reihenfolge nicht definiert ist und zu widersprüchlichen Ergebnissen führen kann, je nach der Reihenfolge, in der die Vorgänge ausgeführt werden. Diese Art der Vererbung sollte vermieden werden.

Erstellen von Aufzeichnungsprofilen

WPRControlProfiles Schema