<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<!-- See definitions in C:\Windows\Microsoft.NET\Framework\v4.0.30319\CLR-ETW.man  for .NET events -->
<!-- See MSDN docs about 'region of interest': https://docs.microsoft.com/windows-hardware/test/wpt/regions-of-interest -->
<!--
   Unlike JIT, GC is largely single threaded and the times correlate very well with PerfView where we can drill down into each GC
   generation in the region graph in WPA.
   We use bascially the GC Start/Stop events where the GC Start event has also the generation traced which enables us to create
   regions for each GC type.
   GC suspensions work a bit different were I use the GCSuspendEE_V1 as start and GCRestartEEEnd as end event. This allows us
   to capture in principle also the time where the suspension or resumption itself takes. An abnormally long time would indicate
   a GC bug or a thread priority problem.
-->
<InstrumentationManifest>
  <Instrumentation>
    <Regions>
      <RegionRoot Guid="{d8d639a0-cf4c-45fb-976a-0000DEADBEEF}" Name="GC" FriendlyName="GC Activity">
        <Region Guid="{d8d639a1-cf4c-45fb-976a-100000000101}" Name="Gen 0" FriendlyName="GCs">
          <Region Guid="{d8d639a1-cf4c-45fb-976a-000000000001}" Name="Gen 0" FriendlyName="Gen 0">
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="1" Version="1"/>
              <PayloadIdentifier FieldName="Depth" FieldValue="0"/>
              <!-- Depth is the Generation number -->
            </Start>
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="1" Version="2"/>
              <!-- .NET 4.6 has a new GC Start event -->
              <PayloadIdentifier FieldName="Depth" FieldValue="0"/>
            </Start>

            <Stop>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="2" Version="1"/>
            </Stop>
            <Match>
              <Event PID="true"/>
            </Match>
            <Naming>
              <PayloadBased NameField="Depth"/>
            </Naming>
          </Region>
        </Region>

        <Region Guid="{d8d639a1-cf4c-45fb-976b-100000000101}" Name="Gen 1" FriendlyName="GCs">
          <Region Guid="{d8d639a1-cf4c-45fb-976a-000000000005}" Name="Gen 1" FriendlyName="Gen 1">
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="1" Version="1"/>
              <PayloadIdentifier FieldName="Depth" FieldValue="1"/>
            </Start>
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="1" Version="2"/>
              <!-- .NET 4.6 has a new GC Start event -->
              <PayloadIdentifier FieldName="Depth" FieldValue="1"/>
            </Start>

            <Stop>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="2" Version="1"/>
            </Stop>
            <Match>
              <Event PID="true"/>
            </Match>
            <Naming>
              <PayloadBased NameField="Depth"/>
            </Naming>
          </Region>
        </Region>

        <Region Guid="{d8d639a1-cf4c-45fb-976c-100000000101}" Name="Gen 2" FriendlyName="GCs">
          <Region Guid="{d8d639a1-cf4c-45fb-976a-000000000006}" Name="Gen 2" FriendlyName="Gen 2">
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="1" Version="1"/>
              <PayloadIdentifier FieldName="Depth" FieldValue="2"/>
            </Start>
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="1" Version="2"/>
              <!-- .NET 4.6 has a new GC Start event -->
              <PayloadIdentifier FieldName="Depth" FieldValue="2"/>
            </Start>

            <Stop>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="2" Version="1"/>
            </Stop>
            <Match>
              <Event PID="true"/>
            </Match>
            <Naming>
              <PayloadBased NameField="Depth"/>
            </Naming>
          </Region>
        </Region>

        <Region Guid="{d8d639a2-cf4c-45fb-976a-000000000003}" Name="GCSuspends" FriendlyName="GC Suspensions">
          <Region Guid="{d8d639a2-cf4c-45fb-976a-000000000002}" Name="GCSuspend" FriendlyName="GC Suspension">
            <Start>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="9" Version="1"/>
            </Start>
            <Stop>
              <Event Provider="{e13c0d23-ccbc-4e12-931b-d9cc2eee27e4}" Id="3" Version="1"/>
            </Stop>
            <Match>
              <Event PID="true"/>
            </Match>
          </Region>
        </Region>

      </RegionRoot>
    </Regions>
  </Instrumentation>
</InstrumentationManifest>
