<!--
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 UMA 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
[email protected].
-->
<histogram-configuration>
<histograms>
<variants name="PersistentAllocatorType">
<variant name="BrowserMetrics" summary="For browser process metrics."/>
<variant name="CrashpadMetrics" summary="For metrics from Crashpad."/>
<variant name="FieldTrialAllocator" summary="For field-trial allocator."/>
<variant name="GpuMetrics" summary="For GPU process metrics."/>
<variant name="NotificationHelperMetrics"
summary="For notification_helper process metrics."/>
<variant name="PlatformExperienceHelperMetrics"
summary="For metrics from Platform Experience Helper"/>
<variant name="PpapiBrokerMetrics"
summary="For "PPAPI broker" process metrics."/>
<variant name="PpapiPluginMetrics"
summary="For "PPAPI plugin" process metrics."/>
<variant name="RendererMetrics" summary="For renderer process metrics."/>
<variant name="SandboxHelperMetrics"
summary="For "sandbox helper" process metrics."/>
<variant name="SetupMetrics" summary="For setup metrics."/>
<variant name="UtilityMetrics"
summary="For "utility" process metrics."/>
<variant name="ZygoteMetrics"
summary="For "zygote" process metrics."/>
</variants>
<histogram name="Histogram.BadConstructionArguments" enum="HistogramNameHash"
expires_after="never">
<!-- expires-never: Needed for tracking missing histogram data. -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The hash codes of histograms that were found to have bad construction
arguments. These would be DCHECK exceptions in debug builds but have simply
been logged and corrected as best as possible rather than crash.
</summary>
</histogram>
<histogram name="Histogram.MismatchedConstructionArguments"
enum="HistogramNameHash" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The hash codes of histograms that were found to have construction arguments
different from a previous instantiation of the same name. Entries here have
conflicting definitions and should be investigated. Data collected for the
secondary definitions will be silently dropped.
</summary>
</histogram>
<histogram name="Histogram.TooManyBuckets.1000" enum="HistogramNameHash"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The hash codes of histograms that were found to request more than 1000
buckets. These would be DCHECK exceptions in debug builds if the limit is
lowered so are being logged before that change.
</summary>
</histogram>
<histogram name="UMA.ActualLogUploadInterval" units="minutes"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The actual interval between log upload start and previous log upload
finished within the same process. A value of 0 indicates there was no
previous upload. Prior to M71, logging for this metric was broken.
</summary>
</histogram>
<histogram name="UMA.AndroidPreNative.ChromeActivityCounter2"
enum="ChromeActivityCounter" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Counts of how many times onPostCreate() and onResume() were called (from the
ChromeActivity class) when a foreground session begins in the native C++
code. The counters are reset when this histogram is emitted. This histogram
is a diagnostic tool for understanding Clank short sessions, by capturing
some information about the cases where Java code starts up, but native C++
code is never reached.
This replaces UMA.AndroidPreNative.ChromeActivityCounter, which would
increment the counters to P1R0 on first-run-experience, but would not
advance to native code. This version circumvents the issue by waiting to be
sure that onCreate was not aborted (see AsyncInitializationActivity).
</summary>
</histogram>
<histogram name="UMA.AntiVirusMetricsProvider.Result"
enum="AntiVirusMetricsProviderResult" expires_after="never">
<!-- expires-never: needed to proactively diagnose changes in the Windows API used here. -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Records the result of the attempt to enumerate the installed AntiVirus on
the machine. This is recorded once during metrics initialization.
</summary>
</histogram>
<histogram name="UMA.ChildProcess.Ping.{Source}" enum="UmaChildPingStatus"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The current status of a ping sent by the browser process to a child process.
Emitted in 3 steps: 1. When the browser process sends a ping IPC to the
child process (BROWSER_SENT_IPC), 2. When the child process receives said
IPC (CHILD_RECEIVED_IPC), and 3. When the browser process receives a reply
from the child process after the IPC was processed (BROWSER_REPLY_CALLBACK).
Because a child process may exit early and never receive the IPC (even in
normal scenarios), 1 may not match 2 and 3 in total count. However, 2 and 3
should be equivalent, and that them not matching should be an indication of
loss of child process histograms. Note that 1 and 3 are emitted from the
browser process, while 2 is emitted from the child process.
{Source}
Caveat: Because this histogram is emitted from the child process after the
shared memory is set up, the histogram will live on it (except if there were
failures in creating it), so this histogram quantifies lost histograms from
the shared memory. In particular, histograms that are emitted very early on
in a child process do not live on the shared memory, and are passed to the
browser process through IPCs. This histogram, mostly, does not quantify the
loss of those histograms.
</summary>
<token key="Source">
<variant name="Periodic"
summary="This ping process occurs every 5 minutes with ~10% of all
child processes (chosen at random every time)."/>
<variant name="SharedMemorySetUp"
summary="This ping process occurs when a child process has just
launched and processed the IPC to set up the shared memory
segment for histograms."/>
</token>
</histogram>
<histogram name="UMA.CleanExitBeaconConsistency3"
enum="UmaCleanExitConsistency3" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The combined state of distinct beacons stored in the beacon file and in a
platform-specific location (e.g. the Windows registry or NSUserDefaults on
iOS). They are normally expected to be identical. Recorded when the
CleanExitBeacon is initialized on Windows and iOS.
Unlike UMA.CleanExitBeaconConsistency2, this histogram excludes the Local
State beacon.
As of M102 for desktop and iOS and M103 for Android Chrome, any client may
emit this metric. Prior to this, the metric was emitted by only clients in
an enabled group that used the beacon file.
</summary>
</histogram>
<histogram name="UMA.ClientIdBackupRecoveredWithAge" units="hours"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Recorded when we are somehow missing the client ID stored in Local State yet
are able to recover it from a backup location along with the backed up
installation date. This report carries the age in hours of the recovered
client id.
</summary>
</histogram>
<histogram name="UMA.ClientIdCleared" enum="Boolean" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Recorded when the client id is cleared due to the device opting out of UMA
metrics.
</summary>
</histogram>
<histogram name="UMA.ClientIdSource" enum="ClientIdSource"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>The source of the client id when its creation is forced.</summary>
</histogram>
<histogram name="UMA.CrosPerUser.DaemonStoreWriteFailed"
enum="PerUserDaemonStoreFail" expires_after="2023-04-16">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Records the status of writing the per-user metrics state to daemon-store (or
the boot state to /home/chronos/). Written on login or logout, and when a
user changes their consent state.
</summary>
</histogram>
<histogram name="UMA.CrosPerUser.IdReset" enum="PerUserIdType"
expires_after="2024-02-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of times an ID was reset. The client ID is reset when a
known user who has sent metrics before re-enables metrics collection. This
is to preserve pseudo-anonymity of the (client_id, user_id) pair. The user
ID is reset whenever per-user eligible user turns off metrics collection.
</summary>
</histogram>
<histogram name="UMA.CrosPerUser.UserLogStoreState" enum="PerUserLogStoreState"
expires_after="2023-04-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the state that metrics service is in when user log store was set or
unset. This should be recorded once when a valid user that can use per-user
logs in and unsetting should be recorded once when a user logs out.
</summary>
</histogram>
<histogram name="UMA.DataValidation.LogNormal" units="random values"
expires_after="never">
<!-- expires-never: needed for ensuring correct UMA operation -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
This is logged with a random value drawn from an artificial log normal
distribution in every ongoing metrics logs (not logs about the previous
session) and used for data validation. The mean and standard deviation
parameters of the log normal distribution are controlled by artificial A/B
experiments so that we can assess the accuracy and power of data from field
trials.
</summary>
</histogram>
<histogram name="UMA.EnrollmentStatus" enum="EnrollmentStatus"
expires_after="never">
<!-- expires-never: used internally for filtering -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the device enrollment status for Chrome OS device. Logged with every
UMA upload.
</summary>
</histogram>
<histogram name="UMA.EntropySourceType" enum="UmaEntropySourceType"
expires_after="2024-09-15">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Logs the entropy source type that was used for field trial randomization.
Logged once at each start up.
</summary>
</histogram>
<histogram name="UMA.ExternalExperiment.GroupCount" units="groups"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Logged on Android whenever an external experiment is registered. The logged
value is the number of groups in the experiment. This will not be logged at
all if there are no external experiments, but will be logged on group
transitions (e.g. when going from 1 to 0 groups).
</summary>
</histogram>
<histogram name="UMA.FileMetricsProvider.AccessResult"
enum="FileMetricsProviderAccessResult" expires_after="2024-05-05">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Records attempts to access a file for the purpose of extracting metrics.
</summary>
</histogram>
<histogram name="UMA.FileMetricsProvider.InitialAccessResult"
enum="FileMetricsProviderAccessResult" expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Records attempts to access a file for the purpose of extracting initial
stability metrics.
</summary>
</histogram>
<histogram name="UMA.FileMetricsProvider.{Source}.MergedHistogramsCount"
units="histograms" expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The number of histograms merged to the current session from a PMA file from
the {Source} source. Emitted right after merging the histograms.
</summary>
<token key="Source">
<variant name="DeferredBrowserMetrics"/>
<variant name="NotificationHelperMetrics"/>
<variant name="PlatformExperienceHelperMetrics"/>
<variant name="SetupMetrics"/>
</token>
</histogram>
<histogram name="UMA.InitialStabilityRecordBeacon" enum="Boolean"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Emitted (with value "true") in each UMA record that's an initial
stability log. Missing from other types of logs such as logs from ongoing
Chrome use and "independent" logs that contain data from the
previous session via the persistent histograms code.
</summary>
</histogram>
<histogram name="UMA.InitSequence" enum="UmaInitSequence"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Logged during MetricsService initialization whether the init task or the
initial log timer completed first. The expectation is the vast majority of
the time, the init task should complete first. If metrics show otherwise,
then it may indicate there's a bug in the MetricsService init sequence and
that it should be investigated.
</summary>
</histogram>
<histogram name="UMA.IsClonedInstall" enum="BooleanCloned"
expires_after="2024-09-22">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
This is logged with a value of true in every log when the UMA client code
has detected that this is a potentially cloned install and has set the pref
to reset its UMA client id on the next startup.
</summary>
</histogram>
<histogram name="UMA.LocalHistogram" enum="Boolean" expires_after="never">
<!-- expires-never: Used to monitor that local histograms are not reported. -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
A local histogram that should never be reported to the servers. If this
histogram appears on the serverside, it is possibly an indication that local
histograms are making it into UMA logs. Emitted in the constructor and
destructor of MetricsService, and in child processes after setting up the
shared memory.
</summary>
</histogram>
<histogram name="UMA.LogSize.OnSuccess" units="KB" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Size in kilobytes (after compression) of an uploaded UMA log. Recorded after
a successful UMA upload.
Note: A related metric (UMA.ProtoCompressionRatio) logs the compression
ratio.
</summary>
</histogram>
<histogram name="UMA.LogUpload.Canceled.CellularConstraint"
enum="BooleanCanceled" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Logs whether a log was not uploaded due to cellular log throttling logic.
Android only.
</summary>
</histogram>
<histogram name="UMA.LogUpload.ResponseOrErrorCode"
enum="CombinedHttpResponseAndNetErrorCode" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
HTTP response codes and network errors encountered by UMA when attempting to
upload logs to the server through an HTTPS connection.
</summary>
</histogram>
<histogram name="UMA.LogUpload.ResponseOrErrorCode.HTTP"
enum="CombinedHttpResponseAndNetErrorCode" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
HTTP response codes and network errors encountered by UMA when attempting to
upload logs to the server through an HTTP connection.
</summary>
</histogram>
<histogram name="UMA.MachineIdState" enum="UmaMachineIdState"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Tracks if the machine ID is generated successfully and if it changes from
one run to the next. The machine ID is a 24-bit hash of machine
characteristics. It is expected to change if an install of Chrome is copied
to multiple machines. This check happens once per browser startup.
</summary>
</histogram>
<histogram name="UMA.MetricsIDsReset" enum="BooleanHit"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Records when the metrics IDs (client id and low entry source) are reset due
to a cloned install detection. This is done during startup when
MetricsStateManager is created.
A cloned install is detected when the current machine ID (24-bit hash of
machine characteristics) is different than the one stored in local state. A
pref is then written to local state to indicate a clone. The metrics IDs are
reset on the next startup assuming the cloned install pref is still set.
</summary>
</histogram>
<histogram name="UMA.MetricsReporting.Toggle" enum="MetricsReportingChange"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Logged when user successfully enables/disables MetricsReporting or when an
error occurs.
</summary>
</histogram>
<histogram name="UMA.MetricsService.Initialize.Time" units="microseconds"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Time taken by MetricsService::InitializeMetricsState().
Note that clients without high-resolution clocks will report 0 for very
short times.
</summary>
</histogram>
<histogram name="UMA.MetricsService.MaybeCleanUpAndStoreFinalizedLog.Time"
units="ms" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The amount of time the main thread spends on storing a finalized async log
and marking its unlogged samples as logged. I.e., the run time of
MetricsService::MaybeCleanUpAndStoreFinalizedLog(). This is not emitted if
the async log is not stored (see the UMA.MetricsService.ShouldStoreAsyncLog
histogram).
</summary>
</histogram>
<histogram name="UMA.MetricsService.OnBackgroundedScopedTerminationChecker"
enum="ScopedTerminationCheckerStatus" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Tentative histogram to quantify how often the browser is ungracefully killed
while finalizing a UMA log right after the browser is backgrounded. Emitted
before starting to finalize the log (Started bucket), and right after
(Finished bucket). Emitted only on mobile platforms.
</summary>
</histogram>
<histogram name="UMA.MetricsService.PendingOngoingLog" enum="Boolean"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Whether there is an ongoing log being finalized right as we are about to
close a non-periodic log. For example, due to Chrome being shut down.
Emitted every time MetricsService::PushPendingLogsToPersistentStorage() is
called.
</summary>
</histogram>
<histogram name="UMA.MetricsService.PendingOngoingLogOnBackgrounded"
enum="Boolean" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Whether there is an ongoing log being finalized right as we are about to
close a non-periodic log due to Chrome being backgrounded. This should be a
subset of the UMA.MetricsService.PendingOngoingLog histogram. Only emitted
on mobile platforms.
</summary>
</histogram>
<histogram name="UMA.MetricsService.PendingOngoingLogOnDisable" enum="Boolean"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Whether there is an ongoing log being finalized right as we are about to
close a non-periodic log due to the metrics service being disabled. Most
commonly, this happens when Chrome is shutting down cleanly. Otherwise, this
can happen when the user manually disables UMA. Emitted every time
MetricsService::DisableRecording() is called. This is only emitted on mobile
platforms. This should be a subset of the
UMA.MetricsService.PendingOngoingLog histogram.
</summary>
</histogram>
<histogram name="UMA.MetricsService.PendingOngoingLogOnForegrounded"
enum="Boolean" expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Whether there is an ongoing log being finalized right as we are about to
close a non-periodic log due to Chrome being foregrounded. This should be a
subset of the UMA.MetricsService.PendingOngoingLog histogram. Only emitted
on mobile platforms.
</summary>
</histogram>
<histogram name="UMA.MetricsService.PeriodicOngoingLog.CloseTime" units="ms"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The amount of time the main thread spent on finalizing a periodic ongoing
log. I.e., the run time of MetricsService::OnFinalLogInfoCollectionDone().
This is not emitted if UMA was turned off while collecting some final
metrics for the log.
</summary>
</histogram>
<histogram name="UMA.MetricsService.PeriodicOngoingLog.ReplyTime" units="ms"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The time it took between posting a task to finalize a periodic ongoing log,
and when the reply task was run (on the main thread) to store the finalized
log. This is only emitted if the periodic ongoing log was created
asynchronously.
</summary>
</histogram>
<histogram name="UMA.MetricsService.ShouldStoreAsyncLog" enum="Boolean"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Whether a log that was created asynchronously is going to be stored. An
async log will not be stored if a synchronous log was created while the
async one was being finalized. Emitted every time the
MetricsService::MaybeCleanUpAndStoreFinalizedLog() callback runs.
</summary>
</histogram>
<histogram name="UMA.MetricsService.SnapshotDeltasTime" units="ms"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The runtime of SnapshotStatisticsRecorderDeltas(). Emitted every time it is
called.
</summary>
</histogram>
<histogram name="UMA.NegativeSamples.Histogram" enum="HistogramNameHash"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The lower 32 bits of the ID of the histogram that went negative.
</summary>
</histogram>
<histogram name="UMA.NegativeSamples.Increment" units="increment"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The amount of increment that caused a sample count to become negative.
</summary>
</histogram>
<histogram name="UMA.NegativeSamples.Reason" enum="NegativeSampleReason"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Reasons why a negative sample count would have been created. Currently, only
negative samples from persistent sparse histograms are being checked.
</summary>
</histogram>
<histogram
name="UMA.PersistentAllocator.EarlyHistograms.{PersistentAllocatorType}"
units="histograms" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
A count of the histograms emitted before the persistent memory allocator has
been initialized, broken down by {PersistentAllocatorType}.
</summary>
<token key="PersistentAllocatorType" variants="PersistentAllocatorType"/>
</histogram>
<histogram name="UMA.PersistentAllocator.{PersistentAllocatorType}.UsedPct"
units="%" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Percentage of persistent memory segment that has been allocated. This is
updated only once per reporting cycle. {PersistentAllocatorType}
</summary>
<token key="PersistentAllocatorType" variants="PersistentAllocatorType"/>
</histogram>
<histogram name="UMA.PersistentHistograms.InitResult"
enum="PersistentHistogramsInitResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
A count of successes and failures for the creation of various forms of
persistent memory used to store histograms.
</summary>
</histogram>
<histogram name="UMA.PrimaryUserType" enum="UserType"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
This UMA logs the primary user type per metrics recording interval.
</summary>
</histogram>
<histogram name="UMA.ProfileSignInStatusV2" enum="ProfileSignInStatus"
expires_after="never">
<!-- expires-never: powers UMA dashboard filter -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
An enum representing the sign-in status of all regular profiles with open
browser windows at the time a UMA log record is closed (i.e., excluding
system and guest profiles). Recorded once in every ongoing metrics log; not
recorded in logs about the previous session. System, Guest and Incognito
profiles are ignored because the user cannot sign-in into them.
Being signed into the browser means, for example, the user sees their Google
account on the New Tab Page and in the toolbar at the top of the browser.
A signed in user may have a currently invalid token; they are in
authentication error state and need to refresh their credentials. As a
concrete example, it means the user may not get personalized results and
suggestions when using google.com.
On desktop, when Chrome is running and there are no profiles with open
browser windows (this can happen on Mac), this histogram will report
"Unknown sign-in status".
On Android, when Chrome is running and there are no profiles with open
browser windows (this can happen when Chrome is doing something in the
background), it will report the sign-in status as if there were an open
browser window.
If a profile is open during the time period covered by this log record but
closed before the log record is closed, the profile's status will not be
reflected in this histogram.
Not supported on ChromeOS Ash. (Supported on Lacros.)
</summary>
</histogram>
<histogram name="UMA.ProfileSyncStatusV2" enum="ProfileSyncStatus"
expires_after="never">
<!-- expires-never: powers UMA dashboard filter -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
An enum representing the sync status of all regular profiles with open
browser windows at the time a UMA log record is closed (i.e., excluding
system and guest profiles). Recorded once in every ongoing metrics log; not
recorded in logs about the previous session. System, Guest and Incognito
profiles are ignored because the user cannot sign-in into them.
If a profile is open during the time period covered by this log record but
closed before the log record is closed, the profile's status will not be
reflected in this histogram.
Sync status indicates the profile has consented to sync and has a valid
credential for the account (i.e., is signed-in), meaning sync in principle
should be working. For example, if the user signs out of the web, their
credentials will be put into an error state; they will not be valid. The
profile will not be considered to be syncing. It is possible that the user
is technically syncing (according to this histogram and Chrome) yet not
syncing at that instant. Examples of this include (i) user is offline and
(ii) user disabled syncing for all sync data types but didn't revoke
consent.
Not supported on ChromeOS Ash. (Supported on Lacros.)
</summary>
</histogram>
<histogram name="UMA.ProtoCompressionRatio" units="%"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Compression ratio of the serialized protobuf that will be uploaded to the
UMA server. This serialized protobuf is compressed using gzip. See also
UMA.LogSize.OnSuccess.
</summary>
</histogram>
<histogram name="UMA.Pseudo.{Metrics}" units="seconds/MB" expires_after="never">
<!-- expires-never: needed for ensuring correct UMA operation -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
This is the pseudo {Metrics} metric. It's logged alongside with the real
metric. The value of this pseudo metric is a linear function (ax + b) of the
real value (x). The multiplicative factor (a) and additive factor (b) are
controlled by field trial experiments. This metric is used for data
validation and to help us better assess the accuracy and power of data from
field trials.
</summary>
<token key="Metrics">
<variant name="Memory.Browser.MemoryFootprint"/>
<variant name="Memory.Total.PrivateMemoryFootprint"/>
<variant name="PageLoad.InteractiveTiming.FirstInputDelay4"/>
<variant name="PageLoad.LayoutInstability.CumulativeShiftScore"/>
<variant
name="PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2"/>
<variant name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2"/>
</token>
</histogram>
<histogram name="UMA.SamplingRatePerMille" units="samples per mille"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Sample rate applied to this client, expressed as number of clients per 1000
that are in the sample. Recorded on every log upload but only if the client
is eligible for sampling. (As of February 2021, all clients on Android and
Windows are eligible for sampling. Prior to Jan 26 2021, only Windows and
Android installs on which the UMA checkbox was enabled by default were
eligible, see b/161848997).
Clients not eligible for sampling will not have this histogram recorded.
Clients that are eligible for sampling but are sampled out (i.e., not
uploading logs) will not have this histogram recorded. Notably, it will not
appear in chrome://histograms! (Obviously, it also won't appear in the UMA
logs because the client is not uploading logs.)
Additional nuance, hopefully not important: the rate refers to the session
that the log was generated in, not the session the log was generated about.
This means when UMA uploads information about the last session (such as
stability statistics), it is possible--though extremely unlikely--that the
sampling rate config has changed from the previous session to the current
one. As such, the sampling rate emitted in a previous-session log record may
not be the right one that should've applied to that record.
</summary>
</histogram>
<histogram name="UMA.Startup.LocalStateFileExistence" enum="BooleanExists"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Denotes whether or not the Local State file exists during startup. Emitted
when the PrefService is created. Android Chrome only.
</summary>
</histogram>
<histogram name="UMA.StartupVisibility" enum="StartupVisibility"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Whether the session is a background or foreground session. Recorded just
before the MetricsStateManager is created. Android Chrome only.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.EventFileSize" units="KB"
expires_after="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
File size of events recorded outside of Chrome. This metric is recorded for
every file processed by an external metrics scan, which reads the events
into memory to be appended to an UMA log. This external metrics scan happens
roughly every 45 minutes.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.EventRecordingState2"
enum="StructuredMetricsEventRecordingState2" expires_after="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Emitted when a structured metrics event is sent for recording. This records
whether that event was recorded successfully, or otherwise why the event was
not recorded.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.EventSerializedSize" units="bytes"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The serialized size in bytes of a Structured Metrics event. This is the size
the event uses when serialized to be uploaded.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.EventsRecordedBeforeInit" units="scans"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of events recorded before private keys are initialized to hash
events. This metric should be recorded once per session.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.ExternalMetricScansPerUpload"
units="count" expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of external metric scans from platform2 were performed since the
last Structured Metric upload. An external metric scan collects events that
were generated by platform2 and copies them to be uploaded by Structured
Metrics.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.InternalError2"
enum="StructuredMetricsInternalError2" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records unexpected internal errors of the structured metrics system. The
bucket proportion of this metric is not meaningful.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.KeyValidationState"
enum="StructuredMetricsKeyValidationState" expires_after="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a user event key is validated (and possibly updated), whether the key
was valid and required no changes, missing and required creation, or old and
required rotation.
This histogram was expired from 2022-11-01 to 2023-03-21, and might be
missing data in that period.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.NumEventsInUpload" units="count"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
How many events are provided when the structured metrics system is called on
to provide its current session data.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.NumFilesPerExternalMetricsScan"
units="count" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
How many files in the external Structured metrics directory before an
external metrics scan is triggered. The external metrics scan will read the
events into memory and delete ALL files in the directory.
</summary>
</histogram>
<histogram name="UMA.StructuredMetrics.UploadSize" units="bytes"
expires_after="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The serialized size in bytes of the Structured Metrics payload attached to
UMA. This correlates to the amount of memory Structured Metrics uses during
an upload by UMA.
</summary>
</histogram>
<histogram name="UMA.TruncatedEvents.UserAction" units="events"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The number of user actions events that existed in the metrics log before we
truncated them to save bandwidth.
</summary>
</histogram>
<histogram name="UMA.UnsentLogs.Dropped" units="logs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The number of unsent UMA logs removed from persistent storage. Emitted just
before unsent logs are trimmed. Unsent log trimming occurs immediately after
logs creation, upon successful log upload, or whenever MetricsService stops
recording.
</summary>
</histogram>
<histogram name="UMA.UnsentLogs.DroppedSize" units="bytes"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Size of unsent logs removed from persistent storage due to exceeding the
individual log size limit. Unsent log trimming occurs immediately after logs
creation, upon successful log upload, or whenever MetricsService stops
recording.
</summary>
</histogram>
<histogram name="UMA.UnsentLogs.PersistedSizeInKB" units="KB"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The size of all persistent initial or ongoing logs that have been
proto-encoded and compressed in the previous browser run; it is recorded on
the browser start up. The value '0' means no unsent logs.
</summary>
</histogram>
<histogram name="UMA.UnsentLogs.SentCount" units="samples"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The number of UMA histogram samples that were sent in the previous browser
run. Emitted when the browser starts up.
</summary>
</histogram>
<histogram name="UMA.UnsentLogs.UnsentCount" units="samples"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The number of UMA histogram samples that were not yet sent in the previous
browser run. Emitted when the browser starts up.
</summary>
</histogram>
<histogram name="UMA.UnsentLogs.UnsentPercentage" units="%"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The percentage of the unsent samples over the total in the previous browser
run; it is recorded on the browser start up.
</summary>
</histogram>
<histogram name="UMA.UserActionsCount" enum="Boolean"
expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Emitted when a user action is recorded.
Intended to be used to estimate how many user actions are lost due lack of
being persisted in the same way histograms are. One way to use this
histogram is to look as the count in this histogram in logs that come from
the previous session. All of those user actions will have been lost.
Also note that user actions can be lost due to being truncated before
uploading a UMA record. Those logs user actions are recorded in the
histogram UMA.TruncatedEvents.UserAction.
There may be other ways user actions are dropped too.
</summary>
</histogram>
<histogram name="UMA.UserDemographics.IsNoisedAgeOver21Under85"
enum="BooleanNoisedAgeOver21Under85" expires_after="2024-09-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
True indicates that the current user is over the age of 21 and under the age
of 85 inclusive, and unknown otherwise. Specifically, this histogram can't
identify users under 21 and over 85. The user's age includes a random offset
for privacy. This metric is logged periodically through
ProvideCurrentSessionData().
</summary>
</histogram>
<histogram name="UMA.UserDemographics.Status" enum="UserDemographicsStatus"
expires_after="2025-06-30">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
The status of the retrieval of user demographics from sync that are reported
to UMA. Emitted each time UMA metrics are reported.
</summary>
</histogram>
</histograms>
</histogram-configuration>