<!--
Copyright 2020 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 V8 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="V8.ArrayBufferLargeAllocations" units="MB"
    expires_after="M120">
  <owner>gdeepti@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <summary>
    Number of bytes requested in array buffer allocations greater than one
    megabyte.
  </summary>
</histogram>

<histogram name="V8.ArrayBufferNewSizeFailures" units="MB" expires_after="M120">
  <owner>gdeepti@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <summary>Array buffer sizes for which V8 failed to allocate memory.</summary>
</histogram>

<histogram name="V8.CodeCacheRejectReason" enum="V8CodeCacheRejectReason"
    expires_after="M77">
  <owner>yangguo@chromium.org</owner>
  <summary>
    Reason code data has been rejected when attempting to deserialize.
  </summary>
</histogram>

<histogram name="V8.CodeCacheSizeRatio" units="%" expires_after="2022-05-01">
  <owner>yangguo@chromium.org</owner>
  <summary>Cache size to source size ratio when caching compiled code.</summary>
</histogram>

<histogram name="V8.CollectSourcePositions" units="microseconds"
    expires_after="M85">
  <owner>delphick@chromium.org</owner>
  <summary>
    Time spent collecting source positions to generate stack traces.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileCacheableMicroSeconds" units="microseconds"
    expires_after="M85">
  <owner>yangguo@chromium.org</owner>
  <summary>
    Time spent compiling a script that may be subject to caching.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileDeserializeMicroSeconds" units="microseconds"
    expires_after="2024-03-14">
  <owner>jgruber@chromium.org</owner>
  <owner>leszeks@chromium.org</owner>
  <summary>
    Time spent deserializing code, used by V8 code caching.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileEvalMicroSeconds" units="microseconds"
    expires_after="M77">
  <owner>yangguo@chromium.org</owner>
  <summary>
    Time spent in V8 compiler (full codegen) for eval.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileLazyMicroSeconds" units="microseconds"
    expires_after="2023-09-10">
  <owner>hablich@chromium.org</owner>
  <summary>
    Aggregated time spent compiling functions lazily during a single script
    execution.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileMicroSeconds" units="microseconds"
    expires_after="2023-10-08">
  <owner>yangguo@chromium.org</owner>
  <summary>
    Time spent in V8 compiler (full codegen) excluding parser.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScript.CacheBehaviour" enum="V8CacheBehaviour"
    expires_after="2023-10-08">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    The cache behaviour of compiling a V8 script, including whether we produced
    or consumed a code cache, whether we hit V8's isolate's cache, and if we
    didn't use the code cache, the reason why not.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds" units="microseconds"
    expires_after="2023-09-03">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing/caching).

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.BackgroundThread"
    units="microseconds" expires_after="2022-04-24">
  <owner>leszeks@chromium.org</owner>
  <owner>rmcilroy@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing) on a background
    thread.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.ConsumeCache"
    units="microseconds" expires_after="2023-09-03">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script when the 'compilation' is
    deserializing it from the code cache.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.ConsumeCache.Failed"
    units="microseconds" expires_after="2021-02-01">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing/caching) when the
    compilation tried to deserialize it from the code cache, but failed.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.IsolateCacheHit"
    units="microseconds" expires_after="2021-04-04">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing/caching) in the case
    where the V8 isolate's compilation cache is hit.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.NoCache.CacheTooCold"
    units="microseconds" expires_after="2021-12-12">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing) when the cache is too
    cold to use.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.NoCache.InlineScript"
    units="microseconds" expires_after="2021-02-01">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing) when the script is an
    inline script.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.NoCache.Other"
    units="microseconds" expires_after="2021-02-01">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing) when we do not want
    to cache it.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.NoCache.ScriptTooSmall"
    units="microseconds" expires_after="2021-10-17">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing) when the script is
    too small to be cached.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.ProduceCache"
    units="microseconds" expires_after="2023-10-08">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in compiling a script (incl. parsing) and serializing it
    for the code cache.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileScriptMicroSeconds.StreamingFinalization"
    units="microseconds" expires_after="2022-04-24">
  <owner>leszeks@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Total time spent in finalizing a script that was streaming compiled.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.CompileSerializeMicroSeconds" units="microseconds"
    expires_after="2024-03-14">
  <owner>jgruber@chromium.org</owner>
  <owner>leszeks@chromium.org</owner>
  <summary>
    Time spent serializing code, used by V8 code caching.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.DebugFeatureUsage" enum="V8DebugFeature"
    expires_after="2023-08-08">
  <owner>yangguo@chromium.org</owner>
  <owner>bmeurer@chromium.org</owner>
  <summary>
    Debugger feature used at least once per isolate, recorded on first use.
  </summary>
</histogram>

<histogram name="V8.DebugPauseToPausedEventMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>bmeurer@chromium.org</owner>
  <owner>szuend@chromium.org</owner>
  <owner>chrome-devtools@google.com</owner>
  <summary>
    Duration beginning when V8 stops execution due to a breakpoint/exception
    until the &quot;Debugger.paused&quot; CDP event is sent by the V8 inspector.
    The event is recorded when all the event data was collected and processed,
    but before the event is serialized and put on the wire.
  </summary>
</histogram>

<histogram name="V8.ErrorsThrownPerContext" units="errors"
    expires_after="2020-02-23">
  <owner>hablich@chromium.org</owner>
  <summary>
    The amount of JavaScript errors thrown by V8 per context. It does not count
    custom errors and ignores catched errors thrown by V8. This is collected
    after the context is detached.
  </summary>
</histogram>

<histogram name="V8.ExecuteMicroSeconds" units="microseconds"
    expires_after="2023-09-10">
  <owner>cbruni@chromium.org</owner>
  <owner>v8-runtime@google.com</owner>
  <summary>
    Time spent in JavaScript Execution, including runtime calls, and lazy
    compilation. This histogram excludes time spent in embedder callbacks.
  </summary>
</histogram>

<histogram name="V8.ExternalPointerTableCompactionOutcome"
    enum="V8ExternalPointerTableCompactionOutcome" expires_after="2023-10-22">
  <owner>saelo@chromium.org</owner>
  <owner>ishell@chromium.org</owner>
  <summary>
    The outcome of external pointer table compaction.

    External pointer table compaction may only succeed partially or fail
    entirely if the application allocates lots of external pointer table entries
    while the table is being compacted. This histogram records this outcome at
    the end of a table-compacting GC. The frequency of such failures influences
    the heuristics used to decide when to compact the table, and to some degree
    also the compaction algorithm itself.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.CollectionRate.Full" units="%"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The percentage of managed JavaScript memory that has been collected by a
    full garbage collection of the unified heap. Reported at the end of the
    garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.CollectionRate.Full.Cpp" units="%"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The percentage of managed C++ memory that has been collected by a garbage
    collection of the managed C++ heap. Reported at the end of the garbage
    collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.CollectionRate.Young" units="%"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The percentage of managed JavaScript memory that has been collected by a
    young generation garbage collection of the JavaScript heap. Reported at the
    end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Efficiency.Full" units="KB/ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The speed at which a full garbage collection of the unified heap reclaims
    unused memory. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Efficiency.Full.Cpp" units="KB/ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The speed at which garbage collection of the managed C++ heap reclaims
    unused memory. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Efficiency.MainThread.Full" units="KB/ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The speed at which a full garbage collection of the unified heap reclaims
    unused memory on the main thread only. This histogram ignores concurrent
    garbage collection. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Efficiency.MainThread.Full.Cpp" units="KB/ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The speed at which garbage collection of the managed C++ heap reclaims
    unused memory on the main thread only. This histogram ignores concurrent
    garbage collection. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Efficiency.MainThread.Young" units="KB/ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The speed at which a young generation garbage collection of the JavaScript
    heap reclaims unused memory on the main thread only. This histogram ignores
    concurrent garbage collection. Reported at the end of the garbage collection
    cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Efficiency.Young" units="KB/ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The speed at which a young generation garbage collection of the JavaScript
    heap reclaims unused memory. Reported at the end of the garbage collection
    cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of a full garbage collection of the unified heap. Reported
    at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Compact" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on compaction during a full garbage collection of the unified
    heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Compact.Cpp" units="ms" expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on compaction during a whole garbage collection of the managed
    C++ heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Cpp" units="ms" expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of a whole garbage collection of the managed C++ heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Mark" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on marking during a full garbage collection of the unified heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Mark.Cpp" units="ms" expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on marking during a whole garbage collection of the managed C++
    heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Sweep" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on sweeping during a full garbage collection of the unified heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Sweep.Cpp" units="ms" expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on sweeping during a whole garbage collection of the managed C++
    heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Weak" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on weakness handling during a full garbage collection of the
    unified heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Full.Weak.Cpp" units="ms" expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on weakness handling during a whole garbage collection of the
    managed C++ heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Main-thread only duration of a full garbage collection of the unified heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall main thread duration of the atomic pause of a garbage collection of
    the unified heap. There is only a single atomic pause event per cycle but it
    may cover several sub-events. Reported at the end of the garbage collection
    cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Compact" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of compaction on the main thread during the atomic pause of
    a garbage collection of the unified heap. There is only a single atomic
    pause compaction event per cycle but it may cover several sub-events.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Compact.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of compaction on the main thread during the atomic pause of
    a garbage collection of the managed C++ heap. There is only a single atomic
    pause compaction event per cycle but it may cover several sub-events.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall main thread duration of the atomic pause of a garbage collection of
    the managed C++ heap. There is only a single atomic pause event per cycle
    but it may cover several sub-events. Reported at the end of the garbage
    collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Mark" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of marking on the main thread during the atomic pause of a
    garbage collection of the unified heap. There is only a single atomic pause
    marking event per cycle but it may cover several sub-events. Reported at the
    end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Mark.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of marking on the main thread during the atomic pause of a
    garbage collection of the managed C++ heap. There is only a single atomic
    pause marking event per cycle but it may cover several sub-events. Reported
    at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Sweep" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of sweeping on the main thread during the atomic pasue of a
    garbage collection of the unified heap. There is only a single atomic pause
    sweeping event per cycle but it may cover several sub-events. Reported at
    the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Sweep.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of sweeping on the main thread during the atomic pasue of a
    garbage collection of the managed C++ heap. There is only a single atomic
    pause sweeping event per cycle but it may cover several sub-events. Reported
    at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Weak" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of weakness handling on the main thread during the atomic
    pause of a garbage collection of the unified heap. There is only a single
    atomic pause weakness handling event per cycle but it may cover several
    sub-events. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Atomic.Weak.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of weakness handling on the main thread during the atomic
    pause of a garbage collection of the managed C++ heap. There is only a
    single atomic pause weakness handling event per cycle but it may cover
    several sub-events. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Compact" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on compaction on the main thread during a full garbage collection
    of the unified heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Compact.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on compaction on the main thread during a whole garbage
    collection of the cpp heap. Reported at the end of the garbage collection
    cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Main thread only duration of a whole garbage collection of the managed C++
    heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Incremental.Mark" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of incremental marking steps on the main thread during a
    full garbage collection of the unified heap. Reported at the end of the
    garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Incremental.Mark.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of incremental marking steps on the main thread during a
    full garbage collection of the managed C++ heap. Reported at the end of the
    garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Incremental.Sweep" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of incremental sweeping steps on the main thread during a
    full garbage collection of the unified heap. Reported at the end of the
    garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Incremental.Sweep.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of incremental sweeping steps on the main thread during a
    full garbage collection of the managed C++ heap. Reported at the end of the
    garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Mark" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on marking on the main thread during a full garbage collection of
    the unified heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Mark.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on marking on the main thread during a whole garbage collection
    of the managed C++ heap. Reported at the end of the garbage collection
    cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Sweep" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on sweeping on the main thread during a full garbage collection
    of the unified heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Sweep.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on sweeping on the main thread during a whole garbage collection
    of the managed C++ heap. Reported at the end of the garbage collection
    cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Weak" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on weakness handling on the main thread during a full garbage
    collection of the unified heap. Reported at the end of the garbage
    collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Full.Weak.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent on weakness handling on the main thread during a whole garbage
    collection of the managed C++ heap. Reported at the end of the garbage
    collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.MainThread.Young" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Main-thread only duration of a young generation garbage collection of the
    JavaScript heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Memory.Freed.Full.Cpp" units="KB"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Amount of allocated memory freed by a garbage collection of the managed C++
    heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Objects.After.Full.Cpp" units="KB"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Amount of used memory after a garbage collection of the managed C++ heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Objects.Before.Full.Cpp" units="KB"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Amount of used memory before a garbage collection of the managed C++ heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Objects.Freed.Full.Cpp" units="KB"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Amount of used memory freed by a garbage collection of the managed C++ heap.
    Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Reason.Full" enum="GarbageCollectionReason"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Reason a full garbage collection was started in V8. Reported at the end of
    the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Reason.Young" enum="GarbageCollectionReason"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Reason a young generation garbage collection was started in V8. Reported at
    the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram name="V8.GC.Cycle.Young" units="ms" expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Overall duration of a young generation garbage collection of the JavaScript
    heap. Reported at the end of the garbage collection cycle.
  </summary>
</histogram>

<histogram
    name="V8.GC.Event.MainThread.Full.Finalize.{Incrementality}.{Mode}{Visibility}"
    units="ms" expires_after="M119">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in the atomic pause of a {Mode} {Incrementality} full garbage
    collection for a V8 Isolate running in {Visibility}. Recorded at the end of
    the garbage collection.
  </summary>
  <token key="Incrementality">
    <variant name="Incremental" summary="incremental"/>
    <variant name="NonIncremental" summary="non-incremental"/>
  </token>
  <token key="Mode">
    <variant name="MeasureMemory" summary="memory-measuring"/>
    <variant name="ReduceMemory" summary="memory-reducing"/>
    <variant name="Regular" summary="regular"/>
  </token>
  <token key="Visibility">
    <variant name="" summary="foreground or background"/>
    <variant name=".Background" summary="background"/>
    <variant name=".Foreground" summary="foreground"/>
  </token>
</histogram>

<histogram name="V8.GC.Event.MainThread.Full.Incremental.Mark" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Duration of individual incremental marking steps on the main thread during a
    garbage collection of the unified heap.
  </summary>
</histogram>

<histogram name="V8.GC.Event.MainThread.Full.Incremental.Mark.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Duration of individual incremental marking steps on the main thread during a
    garbage collection of the managed C++ heap.
  </summary>
</histogram>

<histogram name="V8.GC.Event.MainThread.Full.Incremental.Sweep" units="ms"
    expires_after="M119">
  <owner>nikolaos@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Duration of individual incremental sweeping steps on the main thread during
    a garbage collection of the unified heap.
  </summary>
</histogram>

<histogram name="V8.GC.Event.MainThread.Full.Incremental.Sweep.Cpp" units="ms"
    expires_after="M119">
  <owner>omerkatz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Duration of individual incremental sweeping steps on the main thread during
    a garbage collection of the managed C++ heap.
  </summary>
</histogram>

<histogram name="V8.GC.TimeToCollectionOnBackground" units="microseconds"
    expires_after="M119">
  <owner>dinfuehr@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time between requesting GC from background thread and actually starting
    collection on main thread. This is reported each time a background thread
    requests a GC.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.GC.TimeToSafepoint" units="microseconds"
    expires_after="M119">
  <owner>dinfuehr@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in stopping other threads to reach a safepoint. This is reported
    each time a safepoint is reached.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.GCFinalizeMC.Clear" units="ms" expires_after="2023-06-11">
  <owner>mlippautz@chromium.org</owner>
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in the clearing phase of incremental latency-optimized
    Mark-Compact GC.
  </summary>
</histogram>

<histogram name="V8.GCFinalizeMC.Epilogue" units="ms" expires_after="M111">
  <owner>mlippautz@chromium.org</owner>
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in the epilogue of incremental latency-optimized Mark-Compact GC.
  </summary>
</histogram>

<histogram name="V8.GCFinalizeMC.Finish" units="ms" expires_after="M111">
  <owner>mlippautz@chromium.org</owner>
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in the finish phase of incremental latency-optimized Mark-Compact
    GC.
  </summary>
</histogram>

<histogram name="V8.GCFinalizeMC.Prologue" units="ms" expires_after="M111">
  <owner>mlippautz@chromium.org</owner>
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in the prologue of incremental latency-optimized Mark-Compact GC.
  </summary>
</histogram>

<histogram name="V8.GCIncrementalMarking" units="ms" expires_after="2023-10-15">
  <owner>hpayer@chromium.org</owner>
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent doing incremental marking steps during garbage collection.
    Recorded at the end of each step.
  </summary>
</histogram>

<histogram name="V8.GCIncrementalMarkingReason" enum="GarbageCollectionReason"
    expires_after="2023-10-08">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>Reason an incremental marking was started in V8.</summary>
</histogram>

<histogram name="V8.GCIncrementalMarkingStart" units="ms"
    expires_after="2023-10-08">
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>Time spent in starting incremental marking.</summary>
</histogram>

<histogram name="V8.GCIncrementalMarkingSum" units="ms"
    expires_after="2023-10-08">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    The total time spent in incremental marking steps in one GC cycle. It is
    only recorded if the time is non-zero.
  </summary>
</histogram>

<histogram name="V8.GCMarkCompactReason" enum="GarbageCollectionReason"
    expires_after="2023-10-08">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>Reason a mark-compact garbage collection was started in V8.</summary>
</histogram>

<histogram name="V8.GCMarkingSum" units="ms" expires_after="2023-10-15">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Sum of all durations of all marking phases (incremental and non-incremental)
    within one V8 garbage collection cycle. Reported once per garbage collection
    at the end.
  </summary>
</histogram>

<histogram name="V8.GCScavenger.ScavengeMain" units="ms"
    expires_after="2023-06-11">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Wall time spent in the main scavenging phase that copies over all reachable
    objects during a V8 scavenge.
  </summary>
</histogram>

<histogram name="V8.GCScavenger.ScavengeRoots" units="ms"
    expires_after="2023-06-11">
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>Time spent in scavenging the roots during a V8 scavenge.</summary>
</histogram>

<histogram name="V8.GCScavengerBackground" units="ms"
    expires_after="2022-04-01">
  <obsolete>
    Removed 02/2022.
  </obsolete>
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in scavenging phase of GC in a background isolate.
  </summary>
</histogram>

<histogram name="V8.GCScavengeReason" enum="GarbageCollectionReason"
    expires_after="2022-06-05">
  <obsolete>
    Removed 02/2022. Superseded by V8.GC.Cycle.Reason.Young.
  </obsolete>
  <owner>mlippautz@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>Reason a scavenge garbage collection was started in V8.</summary>
</histogram>

<histogram name="V8.GCScavengerForeground" units="ms"
    expires_after="2022-08-07">
  <obsolete>
    Removed 02/2022.
  </obsolete>
  <owner>hpayer@chromium.org</owner>
  <owner>v8-memory-sheriffs@google.com</owner>
  <summary>
    Time spent in scavenging phase of GC in a foreground isolate.
  </summary>
</histogram>

<histogram name="V8.Initializer.LoadV8Snapshot.Result"
    enum="V8InitializerLoadV8SnapshotResult" expires_after="M77">
  <owner>oth@chromium.org</owner>
  <summary>Results from snapshot loading.</summary>
</histogram>

<histogram name="V8.Initializer.OpenV8File.Result"
    enum="V8InitializerOpenV8FileResult" expires_after="2020-05-10">
  <owner>oth@chromium.org</owner>
  <summary>Results from opening V8 snapshot files.</summary>
</histogram>

<histogram name="V8.LiftoffBailoutReasons" enum="LiftoffBailoutReason"
    expires_after="2023-08-27">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <summary>
    Liftoff (V8's baseline compiler for WebAssembly) bails out if it hits the
    first unsupported feature in a function. The function is recompiled with
    TurboFan then. This histogram records the bailout reason (or success) per
    WebAssembly function compilation in Liftoff.
  </summary>
</histogram>

<histogram name="V8.MemoryExternalFragmentationCodeSpace" units="%"
    expires_after="2020-03-01">
  <owner>hpayer@chromium.org</owner>
  <summary>
    External memory fragmentation in the code space after each GC in percent.
  </summary>
</histogram>

<histogram name="V8.MemoryExternalFragmentationLoSpace" units="%"
    expires_after="2020-06-01">
  <owner>hpayer@chromium.org</owner>
  <summary>
    External memory fragmentation in the large object space after each GC in
    percent.
  </summary>
</histogram>

<histogram name="V8.MemoryExternalFragmentationMapSpace" units="%"
    expires_after="2020-02-23">
  <owner>hpayer@chromium.org</owner>
  <summary>
    External memory fragmentation in the map space after each GC in percent.
  </summary>
</histogram>

<histogram name="V8.MemoryExternalFragmentationOldSpace" units="%"
    expires_after="2020-03-01">
  <owner>hpayer@chromium.org</owner>
  <summary>
    External memory fragmentation in the old space after each GC in percent.
  </summary>
</histogram>

<histogram name="V8.MemoryHeapSampleCodeSpaceCommitted" units="KB"
    expires_after="M77">
  <owner>hpayer@chromium.org</owner>
  <summary>
    The size of committed memory in the code space after each GC in KB.
  </summary>
</histogram>

<histogram name="V8.MemoryHeapSampleMapSpaceCommitted" units="KB"
    expires_after="2020-03-01">
  <owner>hpayer@chromium.org</owner>
  <summary>
    The size of committed memory in the map space after each GC in KB.
  </summary>
</histogram>

<histogram name="V8.MemoryHeapSampleMaximumCommitted" units="KB"
    expires_after="M77">
  <owner>hpayer@chromium.org</owner>
  <summary>
    The maximum size of committed memory used by V8 after each GC in KB.
  </summary>
</histogram>

<histogram name="V8.MemoryHeapSampleTotalCommitted" units="KB"
    expires_after="2023-08-27">
  <owner>hpayer@chromium.org</owner>
  <summary>
    The total size of committed memory used by V8 after each GC in KB.
  </summary>
</histogram>

<histogram name="V8.ProduceCodeCache" units="ms" expires_after="2023-10-22">
  <owner>chikamune@chromium.org</owner>
  <owner>chrome-worker@google.com</owner>
  <summary>
    Time spent serializing and persisting code (mojo call) for V8 code caching.
    Recorded when ProduceCacheInternal() is called. Only recorded when producing
    a code cache is required.
  </summary>
</histogram>

<histogram name="V8.RegExpBacktracks" units="backtracks"
    expires_after="2025-01-01">
  <owner>jgruber@chromium.org</owner>
  <owner>pthier@chromium.org</owner>
  <summary>
    The number of backtracks performed in a single regexp execution.
  </summary>
</histogram>

<histogram name="V8.SandboxedExternalPointersCount" units="count"
    expires_after="2023-10-22">
  <owner>saelo@chromium.org</owner>
  <owner>ishell@chromium.org</owner>
  <summary>
    The number of in-use external pointers in an Isolate's ExternalPointerTable.

    When the V8 Sandbox is enabled, objects located outside of the sandbox are
    referenced through a per-Isolate ExternalPointerTable to ensure memory-safe
    access to them. This histogram records the number of active external
    pointers in a single table, which is determined by counting the number of
    alive entries during garbage collection of an ExternalPointerTable.
  </summary>
</histogram>

<histogram name="V8.SandboxMode" enum="V8SandboxMode"
    expires_after="2023-10-22">
  <owner>saelo@chromium.org</owner>
  <owner>ishell@chromium.org</owner>
  <summary>
    Mode of operation of V8's sandbox.

    By default, the V8 sandbox is fully backed by a large virtual address space
    reservation, ensuring that only V8-related objects are located inside the
    sandbox. In that case, the sandbox is configured securely. However, when it
    is not possible to reserve a sufficient amount of virtual address space
    during initialization (e.g. due to memory or virtual address space
    constraints), the sandbox will instead use a fallback mode where only a part
    of the sandbox's address space is actually reserved. In that case, unrelated
    memory mappings may end up inside the sandbox though, where they could be
    corrupted by an attacker. As such, this mode is considered insecure.

    Recorded as enum value during initialization of V8.
  </summary>
</histogram>

<histogram name="V8.SandboxReservationSizeGB" units="GB"
    expires_after="2023-10-22">
  <owner>saelo@chromium.org</owner>
  <owner>ishell@chromium.org</owner>
  <summary>
    Size of the virtual address space reservation backing the V8 sandbox, in GB.

    This value is typically larger than the size of the sandbox as it includes
    the surrounding guard regions. However, in the case of a partially-reserved
    (i.e. insecure) sandbox, this value will be smaller than the sandbox size.

    Recorded during initialization of V8.
  </summary>
</histogram>

<histogram name="V8.SharedArrayAllocationSizes" units="MB"
    expires_after="2020-12-02">
  <owner>gdeepti@chromium.org</owner>
  <owner>ulan@chromium.org</owner>
  <summary>
    Number of megabytes requested in shared array buffer allocations.
  </summary>
</histogram>

<histogram name="V8.SnapshotDeserializeContextMicroSeconds"
    units="microseconds" expires_after="2024-03-14">
  <owner>jgruber@chromium.org</owner>
  <owner>leszeks@chromium.org</owner>
  <summary>
    Time spent deserializing the context snapshot.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.SnapshotDeserializeIsolateMicroSeconds"
    units="microseconds" expires_after="2024-03-14">
  <owner>jgruber@chromium.org</owner>
  <owner>leszeks@chromium.org</owner>
  <summary>
    Time spent deserializing the isolate snapshot.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.SnapshotDeserializeRoSpaceMicroSeconds"
    units="microseconds" expires_after="2024-03-14">
  <owner>jgruber@chromium.org</owner>
  <owner>leszeks@chromium.org</owner>
  <summary>
    Time spent deserializing the read-only snapshot.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.TurboFan1KTicks" units="1000 ticks"
    expires_after="2023-06-30">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Number of ticks (in 1000s of ticks) from starting optimizing to installing
    the code object. Recorded on each regular optimization of a function.

    Similar to V8.TurboFanOptimizeTotalTime, but instead of counting time, we
    count a deterministic number of ticks sprinkled throughout the Turbofan
    compiler.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeConcurrentTotalTime" units="microseconds"
    expires_after="2023-06-30">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Total time from starting optimizing to installing the code object. Recorded
    on each regular, concurrent optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeExecute" units="microseconds"
    expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Time spent in the execution phase of TurboFan optimization. Recorded on each
    regular optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeFinalize" units="microseconds"
    expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Time spent in the finalization phase of TurboFan optimization. Recorded on
    each regular optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeForOnStackReplacementExecute"
    units="microseconds" expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Time spent in the execution phase of TurboFan optimization for On Stack
    Replacement (OSR). Recorded on each optimization for on-stack replacement of
    a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeForOnStackReplacementFinalize"
    units="microseconds" expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Time spent in the finalization phase of TurboFan optimization for On Stack
    Replacement (OSR). Recorded on each optimization for on-stack replacement of
    a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeForOnStackReplacementPrepare"
    units="microseconds" expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Time spent in the preparation phase of TurboFan optimization for On Stack
    Replacement (OSR). Recorded on each optimization for on-stack replacement of
    a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeForOnStackReplacementTotalTime"
    units="microseconds" expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Total time from starting optimizing for On Stack Replacement (OSR) to
    installing the code object. Recorded on each optimization for on-stack
    replacement of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeNonConcurrentTotalTime"
    units="microseconds" expires_after="2023-06-30">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Total time from starting optimizing to installing the code object. Recorded
    on each regular, non-concurrent optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizePrepare" units="microseconds"
    expires_after="2023-09-10">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Time spent in the preparation phase of TurboFan optimization. Recorded on
    each regular optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeTotalBackground" units="microseconds"
    expires_after="2023-09-03">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Total time spent on a background thread during TurboFan optimization.
    Recorded on each regular optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeTotalForeground" units="microseconds"
    expires_after="2023-09-03">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Total time spent on the main thread during TurboFan optimization. Recorded
    on each regular optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.TurboFanOptimizeTotalTime" units="microseconds"
    expires_after="2023-09-03">
  <owner>tebbi@chromium.org</owner>
  <owner>mslekova@chromium.org</owner>
  <summary>
    Total time from starting optimizing to installing the code object. Recorded
    on each regular optimization of a function.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.UnhandledExceptionCountInMainThread"
    units="BooleanOccurred" expires_after="2023-09-17">
  <owner>chikamune@chromium.org</owner>
  <owner>sisidovski@chromium.org</owner>
  <owner>hiroshige@chromium.org</owner>
  <owner>kouhei@chromium.org</owner>
  <summary>
    Report true when an unhandled exception is reported in the main thread,
    which may happen when the code has no appropriate exception handling in the
    main thread. The false value is never reported. This histogram is supposed
    to be used in A/B testing to check if unhandled exception count is different
    across experiment groups by counting the true values.
  </summary>
</histogram>

<histogram name="V8.UnhandledExceptionCountInWorker" units="BooleanOccurred"
    expires_after="2023-09-17">
  <owner>chikamune@chromium.org</owner>
  <owner>sisidovski@chromium.org</owner>
  <owner>hiroshige@chromium.org</owner>
  <owner>kouhei@chromium.org</owner>
  <summary>
    Report true when an unhandled exception is reported in the worker, which may
    happen when the code has no appropriate exception handling in the worker.
    The false value is never reported. This histogram is supposed to be used in
    A/B testing to check if unhandled exception count is different across
    experiment groups by counting the true values.
  </summary>
</histogram>

<histogram name="V8.WasmCacheCount" units="count" expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of times a WebAssembly module being added to the browser cache. With
    dynamic tiering, caching is triggered repeatedly whenever the amount of
    generated optimized code reaches a threshold. Recorded every time a new
    version of the WebAssembly module is being added to the cache, and also when
    the module is compiled initially.
  </summary>
</histogram>

<histogram name="V8.WasmCatchCount" units="count" expires_after="2023-10-22">
  <owner>thibaudm@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of exceptions caught so far in an isolate, recorded on each caught
    exception.
  </summary>
</histogram>

<histogram name="V8.WasmCodeCaching" enum="WasmCodeCaching"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-runtime@google.com</owner>
  <summary>
    The result of a Wasm code cache lookup. Recorded once per Wasm streaming
    compilation at the time where we try to get the compiled Wasm module from
    the code cache.
  </summary>
</histogram>

<histogram name="V8.WasmCompilationMethod" enum="WasmCompilationMethod"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    WebAssembly JS API function that triggers compilation. Recorded when
    WebAssembly compilation gets triggered, independently of the compilation
    results, i.e. whether compilation succeeds or fails.
  </summary>
</histogram>

<histogram name="V8.WasmCompilationUntilStreamFinishedMilliSeconds" units="ms"
    expires_after="2023-08-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time from finishing compilation of a WebAssembly module until downloading
    the module finishes with streaming compilation. Recorded when streaming
    compilation finishes and the compilation of the WebAssembly module finished
    before the download. If the download finishes first, then the histogram
    V8.WasmStreamingUntilCompilationFinishedMilliSeconds is recorded.
  </summary>
</histogram>

<histogram name="V8.WasmCompileAfterDeserializeMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    After deserialization, all functions that were not in the serialized module
    are compiled with the baseline compiler. This metric measures the time spent
    by the baseline compiler on compiling missing functions. Recorded after the
    baseline compilation of the missing functions finishes.
  </summary>
</histogram>

<histogram name="V8.WasmCompileFunctionMicroSeconds" units="microseconds"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to compile a WebAssembly function. Recorded on each compilation of a
    single function, either synchronous, asynchronous, or lazily.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.WasmCompileFunctionPeakMemoryBytes" units="bytes"
    expires_after="2022-06-19">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Peak memory used to compile a WebAssembly function. Recorded for each
    TurboFan compilation of a WebAssembly function.
  </summary>
</histogram>

<histogram name="V8.WasmCompileHugeFunctionMilliSeconds" units="ms"
    expires_after="2023-08-01">
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to compile a huge WebAssembly function. A function is considered huge
    if it is larger than 100kB. Recorded on each compilation of such a function,
    either synchronous, asynchronous, or lazily.
  </summary>
</histogram>

<histogram name="V8.WasmCompileHugeFunctionPeakMemoryBytes" units="bytes"
    expires_after="2023-08-01">
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Peak memory used to compile a huge WebAssembly function. A function is
    considered huge if it is larger than 100kB. Recorded for each TurboFan
    compilation of such a function.
  </summary>
</histogram>

<histogram name="V8.WasmCompileModuleAsyncMicroSeconds" units="microseconds"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to asynchronously compile a WebAssembly module (using the
    'WebAssembly.compile' API). Recorded on each asynchronous WebAssembly
    compilation, but only if a high-resolution clock is available.
  </summary>
</histogram>

<histogram name="V8.WasmCompileModuleMicroSeconds" units="microseconds"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to compile a WebAssembly module. Recorded on each synchronous
    WebAssembly compilation.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.WasmCompileModuleStreamingMicroSeconds"
    units="microseconds" expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to asynchronously compile a WebAssembly module using streaming
    compilation (via the 'WebAssembly.compileStreaming' API). Recorded on each
    streaming WebAssembly compilation, but only if a high-resolution clock is
    available. Note that compilation speed is often limited by the network
    speed, which is also reflected in this metric.
  </summary>
</histogram>

<histogram name="V8.WasmDeserializationTimeMilliSeconds" units="ms"
    expires_after="2023-08-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to deserialize a WebAssembly module when the WebAssembly module is
    loaded from the cache. Recorded whenever a WebAssembly module gets
    deserialized during streaming compilation.
  </summary>
</histogram>

<histogram name="V8.WasmFinishModuleStreamingMicroSeconds" units="microseconds"
    expires_after="2023-10-01">
  <owner>bbudge@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to asynchronously compile or deserialize a WebAssembly module during
    streaming compilation (via the 'WebAssembly.compileStreaming' API). Recorded
    on each streaming WebAssembly compilation or deserialization from the cache,
    but only if a high-resolution clock is available. Note that compilation
    speed is often limited by the network speed, which is also reflected in this
    metric.
  </summary>
</histogram>

<histogram name="V8.WasmFunctionsPerModule" units="functions"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Function count per WebAssembly module. Recorded for each WebAssembly module
    which is decoded for validation, compilation, or deserialization.
  </summary>
</histogram>

<histogram name="V8.WasmHugeFunctionSizeBytes" units="bytes"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Size of a huge WebAssembly function in bytes. A function is considered huge
    if it is larger than 100kB. Recorded on each compilation of a single
    function, either synchronous, asynchronous, or lazily.
  </summary>
</histogram>

<histogram name="V8.WasmInstantiateModuleMicroSeconds" units="microseconds"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to instantiate a WebAssembly module. Recorded on each instantiation of
    a WebAssembly module.

    Warning: This metric may include reports from clients with low-resolution
    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
    will cause this metric to have an abnormal distribution. When considering
    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
    solution.
  </summary>
</histogram>

<histogram name="V8.WasmLazyCompileTimeMicroSeconds" units="microseconds"
    expires_after="2023-10-01">
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time spend for lazily compiling WebAssembly functions. Recorded on each lazy
    compilation event (which typically compiles one function).

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="V8.WasmMaxLazyCompilationTime120SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Maximum time spent on the main thread on compiling a single WebAssembly
    function with lazy compilation in the first 120 seconds after the first
    instantiation of a WebAssembly module. Recorded 120 seconds after calling
    the start function of the WebAssembly module during the first instantiation
    of a WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmMaxLazyCompilationTime20SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Maximum time spent on the main thread on compiling a single WebAssembly
    function with lazy compilation in the first 20 seconds after the first
    instantiation of a WebAssembly module. Recorded 20 seconds after calling the
    start function of the WebAssembly module during the first instantiation of a
    WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmMaxLazyCompilationTime5SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Maximum time spent on the main thread on compiling a single WebAssembly
    function with lazy compilation in the first 5 seconds after the first
    instantiation of a WebAssembly module. Recorded 5 seconds after calling the
    start function of the WebAssembly module during the first instantiation of a
    WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmMaxLazyCompilationTime60SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Maximum time spent on the main thread on compiling a single WebAssembly
    function with lazy compilation in the first 60 seconds after the first
    instantiation of a WebAssembly module. Recorded 60 seconds after calling the
    start function of the WebAssembly module during the first instantiation of a
    WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmMaxMemPagesCount" units="pages"
    expires_after="2022-02-15">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>ahaas@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of 64KiB pages a WebAssembly module declares as its maximum
    requirement. Recorded on each instantiation of a WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmMemoryAllocationResult" enum="WasmAllocationResult"
    expires_after="2023-08-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>ahaas@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    The result of attempts to allocate WebAssembly.Memory buffers. Recorded on
    each attempt to allocate a WebAssembly.Memory buffer.
  </summary>
</histogram>

<histogram name="V8.WasmMemoryProtectionKeysSupport" enum="BooleanSupported"
    expires_after="2023-10-01">
  <owner>clemensb@chromium.org</owner>
  <owner>jkummerow@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Whether the system supports memory protection keys in userspace (MPK / PKU /
    PKEY). This is determined once per process and recorded once per isolate
    during isolate creation (startup).

    As we use a Linux-specific API for PKUs, this value is only recorded on
    64-bit Linux machines.
  </summary>
</histogram>

<histogram name="V8.WasmMinMemPagesCount" units="pages"
    expires_after="2022-02-15">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>ahaas@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of 64KiB pages a WebAssembly module declares as its minimum
    requirement. Recorded on each instantiation of a WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmModuleCodeSizeBaselineMiB" units="MB"
    expires_after="2023-10-08">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    The amount of generated code in MiB for one WebAssembly module. Recorded
    when baseline compilation finished.
  </summary>
</histogram>

<histogram name="V8.WasmModuleCodeSizeMiB" units="MB"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    The amount of committed code space in MiB used by individual WebAssembly
    modules. Recorded for each live module after each full GC.
  </summary>
</histogram>

<histogram name="V8.WasmModuleCodeSizePercentFreed" units="%"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    The percentage of WebAssembly code freed by garbage collection (ratio of
    total freed code to total generated code so far). Recorded for each live
    module after each full GC.
  </summary>
</histogram>

<histogram name="V8.WasmModuleCodeSizeTopTierMiB" units="MB"
    expires_after="M102">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    The amount of generated code in MiB for one WebAssembly module. Recorded
    when top-tier compilation finished.
  </summary>
</histogram>

<histogram name="V8.WasmModuleNumberOfCodeGCsTriggered" units="gcs"
    expires_after="2023-08-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of code GCs triggered per WebAssembly module. Recorded after each
    code GC.
  </summary>
</histogram>

<histogram name="V8.WasmModuleNumberOfCodeSpaces" units="spaces"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    The number of code spaces (i.e. individual reservations) of a WebAssembly
    module. Recorded on every code space allocation.
  </summary>
</histogram>

<histogram name="V8.WasmModuleSizeBytes" units="bytes"
    expires_after="2023-10-01">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>ahaas@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Size of the wire bytes of a WebAssembly module. Recorded for each
    WebAssembly module which is decoded for validation, compilation, or
    deserialization.
  </summary>
</histogram>

<histogram name="V8.WasmModulesPerEngine" units="count"
    expires_after="2023-10-01">
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of WebAssembly native modules live in a Wasm engine (typically per
    process). Recorded whenever a new native module is created.
  </summary>
</histogram>

<histogram name="V8.WasmModulesPerIsolate" units="count"
    expires_after="2023-10-01">
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of WebAssembly native modules live in an isolate. Recorded whenever a
    new native module is created.
  </summary>
</histogram>

<histogram name="V8.WasmNumLazyCompilations120Sec" units="count"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of functions that get compiled lazily in 120 seconds after the first
    instantiation of a WebAssembly module. Recorded 120 seconds after calling
    the start function of the WebAssembly module during the first instantiation
    of a WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmNumLazyCompilations20Sec" units="count"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of functions that get compiled lazily in 20 seconds after the first
    instantiation of a WebAssembly module. Recorded 20 seconds after calling the
    start function of the WebAssembly module during the first instantiation of a
    WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmNumLazyCompilations5Sec" units="count"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of functions that get compiled lazily in 5 seconds after the first
    instantiation of a WebAssembly module. Recorded 5 seconds after calling the
    start function of the WebAssembly module during the first instantiation of a
    WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmNumLazyCompilations60Sec" units="count"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of functions that get compiled lazily in 60 seconds after the first
    instantiation of a WebAssembly module. Recorded 60 seconds after calling the
    start function of the WebAssembly module during the first instantiation of a
    WebAssembly module.
  </summary>
</histogram>

<histogram name="V8.WasmReThrowCount" units="count" expires_after="2023-10-22">
  <owner>thibaudm@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of exceptions rethrown so far in an isolate, recorded on each
    rethrown exception.
  </summary>
</histogram>

<histogram name="V8.WasmSerializationTimeMilliSeconds" units="ms"
    expires_after="2023-08-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to serialize a WebAssembly module for storing it in the cache. Recorded
    on each serialization, which happens after top-tier compilation finished, or
    when a new chunk of functions was compiled (with dynamic tiering).
  </summary>
</histogram>

<histogram name="V8.WasmStreamingInputType" enum="WasmStreamingInputType"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-runtime@google.com</owner>
  <summary>
    Classification of the argument to the streaming WebAssembly APIs
    (WebAssembly.compileStreaming and WebAssembly.instantiateStreaming).
    Recorded on each invocation of this API.
  </summary>
</histogram>

<histogram name="V8.WasmStreamingUntilCompilationFinishedMilliSeconds"
    units="ms" expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time from finishing downloading a WebAssembly module until streaming
    compilation finishes. Recorded when streaming compilation finishes and the
    download of the WebAssembly module finished before compilation. If
    compilation finishes first, then the histogram
    V8.WasmCompilationUntilStreamFinishedMilliSeconds is recorded.
  </summary>
</histogram>

<histogram name="V8.WasmSumLazyCompilationTime120SecMilliSeconds" units="ms"
    expires_after="2023-08-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Total time spent on the main thread on compiling WebAssembly functions with
    lazy compilation in the first 120 seconds after the first instantiation of a
    WebAssembly module. Recorded 120 seconds after calling the start function of
    the WebAssembly module during the first instantiation of a WebAssembly
    module.
  </summary>
</histogram>

<histogram name="V8.WasmSumLazyCompilationTime20SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Total time spent on the main thread on compiling WebAssembly functions with
    lazy compilation in the first 20 seconds after the first instantiation of a
    WebAssembly module. Recorded 20 seconds after calling the start function of
    the WebAssembly module during the first instantiation of a WebAssembly
    module.
  </summary>
</histogram>

<histogram name="V8.WasmSumLazyCompilationTime5SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Total time spent on the main thread on compiling WebAssembly functions with
    lazy compilation in the first 5 seconds after the first instantiation of a
    WebAssembly module. Recorded 5 seconds after calling the start function of
    the WebAssembly module during the first instantiation of a WebAssembly
    module.
  </summary>
</histogram>

<histogram name="V8.WasmSumLazyCompilationTime60SecMilliSeconds" units="ms"
    expires_after="2023-10-01">
  <owner>ahaas@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Total time spent on the main thread on compiling WebAssembly functions with
    lazy compilation in the first 60 seconds after the first instantiation of a
    WebAssembly module. Recorded 60 seconds after calling the start function of
    the WebAssembly module during the first instantiation of a WebAssembly
    module.
  </summary>
</histogram>

<histogram name="V8.WasmThrowCount" units="count" expires_after="2023-10-22">
  <owner>thibaudm@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Number of exceptions thrown so far in an isolate, recorded on each thrown
    exception.
  </summary>
</histogram>

<histogram name="V8.WasmTierUpModuleMicroSeconds" units="microseconds"
    expires_after="2023-06-04">
  <owner>ecmziegler@chromium.org</owner>
  <owner>adamk@chromium.org</owner>
  <owner>clemensb@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time to tier-up a WebAssembly module, i.e. the time between baseline
    compilation finishes and top-tier compilation finishes. Recorded whenever an
    asynchronously compiled module finishes top-tier compilation, but only if a
    high-resolution clock is available.
  </summary>
</histogram>

<histogram name="V8.WasmTimeBetweenCatchMilliseconds" units="ms"
    expires_after="2023-08-01">
  <owner>thibaudm@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time since the last time an exception was caught in WebAssembly, recorded
    when the next exception is caught (per isolate).
  </summary>
</histogram>

<histogram name="V8.WasmTimeBetweenRethrowsMilliseconds" units="ms"
    expires_after="2023-08-01">
  <owner>thibaudm@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time since the last time an exception was rethrown in WebAssembly, recorded
    when the next exception is rethrown (per isolate).
  </summary>
</histogram>

<histogram name="V8.WasmTimeBetweenThrowsMilliseconds" units="ms"
    expires_after="2023-08-01">
  <owner>thibaudm@chromium.org</owner>
  <owner>ecmziegler@chromium.org</owner>
  <owner>wasm-v8@google.com</owner>
  <summary>
    Time since the last time an exception was thrown in WebAssembly, recorded
    when the next exception is thrown (per isolate).
  </summary>
</histogram>

</histograms>

</histogram-configuration>
