<!--
Copyright 2021 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of PCScan histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<histogram name="PA.PCScan.{Process}.{Actor}" units="ms" expires_after="M101">
  <owner>bikineev@chromium.org</owner>
  <owner>mlippautz@chromium.org</owner>
  <summary>
    Overall duration of a single PCScan cycle in the {Process} process.
    Performed by {Actor} thread(s). Reported once per PCScan cycle at the end.
  </summary>
  <token key="Process">
    <variant name="Browser"/>
    <variant name="Renderer"/>
  </token>
  <token key="Actor">
    <variant name="Mutator"/>
    <variant name="Scanner"/>
  </token>
</histogram>

<histogram name="PA.PCScan.{Process}.{Actor}.{Phase}" units="ms"
    expires_after="M101">
  <owner>bikineev@chromium.org</owner>
  <owner>mlippautz@chromium.org</owner>
  <summary>
    Duration of the PCScan phase that {Phase} in the {Process} process.
    Performed by {Actor} thread(s). Reported once per each PCScan cycle at the
    end.
  </summary>
  <token key="Process">
    <variant name="Browser"/>
    <variant name="Renderer"/>
  </token>
  <token key="Phase">
    <variant name="Clear"
        summary="clears quarantined entries and prepares internal structures
                 for faster lookup"/>
    <variant name="Scan"
        summary="scans the partition alloc heap looking for dangling pointers"/>
    <variant name="ScanStack" summary="scans the stack for dangling pointers"/>
    <variant name="Sweep"
        summary="performs sweeping (actual freeing) of memory that is no
                 longer reachable"/>
  </token>
  <token key="Actor">
    <variant name="Mutator"/>
    <variant name="Scanner"/>
  </token>
</histogram>

</histograms>

</histogram-configuration>
