1.收集器定義

Windows Performance Recorder (WPR) 目前支援三種收集器:系統收集器、事件收集器及堆積事件收集器。 系統收集器定義會指定 Windows 事件追蹤的緩衝區大小和其他屬性, (ETW) 與 NT 核心記錄器一起運作的系統記錄器會話。 事件和堆積收集器定義會指定 ETW 使用者會話的緩衝區大小和其他屬性。

收集器定義順序受限於 WPR 架構。 在 .wprp 檔案中,系統收集器定義必須在事件收集器定義之前。 如果堆積收集器定義存在) ,則這些定義必須在堆積收集器定義之前 (。 WPR 架構定義于 WPRControlProfiles 架構中。

收集器屬性

收集器具有下列必要屬性:

  • 識別碼:參考 .wprp 檔案中收集器定義的唯一字串識別碼。

  • 名稱:收集器的名稱;例如,「WPR 收集器」。 系統收集器名稱必須是 「NT Kernel Logger」。

收集器定義必須包含下列緩衝區大小定義:

  • BufferSize:指定單一緩衝區的大小,以 KB 為單位 (KB) 。

  • 緩衝區:指定緩衝區數目,如果 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 Performance Recorder 支援使用 Base="" WPR 設定檔 XML 架構中的 屬性繼承其物件。 這可讓新增或特製化物件在新增重複使用通用定義時逐漸建置。

在某些情況下,可能會發生非預期的複雜度和副作用;本節說明範例和建議的最佳做法。

範例 1

繼承範例

如果設定檔設定檔 A想要使用事件收集器收集器 A搭配一些修改,它可以定義衍生自收集器 A (Base=「Collector A」) 的收集器收集器A2,然後參考該收集器 A2 建議這樣做,因為只有收集器物件衍生自另一個收集器物件,而且會直接參考它。

範例 2

繼承範例 2

設定檔 設定檔 A 參考收集 器 A。另一個設定檔 設定檔 B 需要對 設定檔 A 進行變更,使其衍生自設定檔 A,並直接在其定義中指定其變更。 建議這樣做,因為只有設定檔物件衍生自另一個設定檔物件。

範例 3

繼承範例 3

設定檔設定檔 A參考收集器 A。收集器收集器 A2衍生自收集器 A。最後,設定檔 B衍生自設定檔 A,也參考設定檔 B父設定檔中已參考的收集器 A

在此情況下,應該如何評估 收集器 A2 的定義模棱兩可。 在一種情況下,設定檔衍生優先,而在另一個收集器衍生中則優先。 不建議這樣做,因為排序未定義,而且可能會根據作業順序導致不同的結果。

根據這個,您絕對不應該將衍生結合到多個物件類型。

撰寫錄製設定檔

2.系統和事件提供者定義

錄製設定檔 XML 參考資料