상속
WPR(Windows Performance Recorder) 기록 프로필은 확장명이 .wprp인 XML 파일에 저장됩니다. WPR는 WPR 프로필 XML 스키마에서 특성을 사용하여 해당 개체의 상속을 지원합니다. 상속을 사용하면 일반적인 프로필 정의를 유지하고 다시 사용하고 빌드하여 특수 시나리오를 기록할 수 있습니다. 예를 들어 기존 프로필에 공급자를 추가하여 실제 프로필에서 정의를 변경하지 않고 버퍼 크기를 변경할 수 있습니다.
중요 WPRP 프로필을 작성하는 경우 WPR의 기본 제공 기본 프로필에서 프로필 데이터를 상속하거나 동일한 세션 이름을 다시 사용하여 동일한 공급자를 여러 번 사용하도록 설정하지 않아야 합니다.
기본 프로필
XML 태그를 사용하여 프로필의 콘텐츠를 변경할 수 있습니다. 작업 특성을 사용해야 합니다. 작업 특성에 사용할 수 있는 값은 설정 및 추가입니다. 다음 예제에서 DerivedProfile은 BaseProfile이 정의하는 CpuConfig, CSwitch, SampledProfile 키워드에 ReadyThread 시스템 키워드를 추가합니다.
<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>
참고작업 특성을 지정하지 않고 상속을 사용하는 경우 WPR은 기본값인 설정을 사용합니다.
예제
다음 예제에서는 파일 로깅 모드에 대한 프로필을 정의합니다. 메모리 버전은 파일 버전에서 상속되며 로깅 모드만 덮어씁니다.
<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"/>
상속 모범 사례
제대로 설계되지 않은 상속은 의도하지 않은 결과를 초래할 수 있습니다. 수집기 또는 프로필에서만 수집기를 파생하는 것이 좋습니다. 여러 유형의 개체에서 파생을 결합해서는 안 됩니다.
다음 세 가지 예제는 상속을 사용하는 두 가지 좋은 방법을 설명합니다. 세 번째 예제에서는 상속의 잘못된 사용에 대해 설명합니다.
예제 1: 상속의 적절한 사용
이벤트 수집기 A의 사양을 일부 수정하여 사용하려고 합니다. 이렇게 하려면
수집기 A에서 해당 사양을 상속하는 두 번째 수집기(수집기 B)를 정의합니다.
수집기 B를 수정합니다.
수집기 B를 참조하도록 프로필을 설정합니다.
수집기 개체만 다른 수집기 개체에서 특성을 상속한 다음 프로필에서 직접 참조하므로 좋은 방법입니다.
예제 2: 상속의 적절한 사용
프로필 A는 수집기 A를 참조합니다.
프로필 B는 프로필 A에서 특성을 상속합니다.
프로필 B에서 특정 특성을 수정합니다.
프로필 개체만 다른 프로필 개체에서 파생되므로 좋은 방법입니다.
예제 3: 상속의 잘못된 사용
프로필 A는 수집기 A를 참조합니다.
수집기 B는 수집기 A에서 상속됩니다.
프로필 B는 프로필 A에서 상속되며 수집기 B도 참조합니다.
이 경우 프로필 B는 수집기 B를 두 번 참조합니다. 한 번은 프로필 A에 의한 상속을 통해, 한 번은 수집기 B를 직접 참조합니다. 이 경우 수집기 B에 대한 정의를 어떻게 평가하는지(즉, 어떤 파생이 우선해야 하는지)는 명확하지 않습니다. 이 예제에서는 순서가 정의되지 않아 작업 순서에 따라 모순된 결과가 발생할 수 있으므로 잘못된 사례를 보여 줍니다. 이러한 형식의 상속은 피해야 합니다.