# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Adding a new metric? We have docs for that!
# https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/new_definitions_file.html

---
$schema: moz://mozilla.org/schemas/glean/metrics/2-0-0
$tags:
  - "Core :: DOM: Content Processes"

power:
  cpu_time_bogus_values:
    type: counter
    description: >
      Impossibly large CPU time values that were discarded.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1755733
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1755733
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    telemetry_mirror: POWER_CPU_TIME_BOGUS_VALUES

  cpu_time_per_process_type_ms:
    type: labeled_counter
    description: >
      CPU time used by each process type in ms.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1747138
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1747138
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels: &per_process_type_labels
      - parent.active
      - parent.active.playing-audio
      - parent.active.playing-video
      - parent.inactive
      - parent.inactive.playing-audio
      - parent.inactive.playing-video
      - prealloc
      - privilegedabout
      - rdd
      - socket
      - web.background
      - web.background-perceivable
      - web.foreground
      - extension
      - gpu
      - gmplugin
      - utility
    telemetry_mirror: POWER_CPU_TIME_PER_PROCESS_TYPE_MS

  cpu_time_per_tracker_type_ms:
    type: labeled_counter
    description: >
      CPU time used by content processes used only for tracking resources,
      labeled by the category of the tracker.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1802361
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1802361
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels:
      - ad
      - analytics
      - cryptomining
      - fingerprinting
      - social
      - unknown

  gpu_time_per_process_type_ms:
    type: labeled_counter
    description: >
      GPU time used by each process type in ms.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1747138
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1747138
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels: *per_process_type_labels
    telemetry_mirror: POWER_GPU_TIME_PER_PROCESS_TYPE_MS

  gpu_time_bogus_values:
    type: counter
    description: >
      Impossibly large GPU time values that were discarded.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1755733
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1755733
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    telemetry_mirror: POWER_GPU_TIME_BOGUS_VALUES

  energy_per_process_type:
    type: labeled_counter
    description: >
      How much energy (in µWh) has been used, broken down by process type.
      Only available on Apple Silicon.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1898057
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1898057
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels: *per_process_type_labels

  wakeups_per_process_type:
    type: labeled_counter
    description: >
      How many times threads woke up and could have woken up a CPU core.
      Broken down by process type.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1759535
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1759535
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels: *per_process_type_labels
    telemetry_mirror: POWER_WAKEUPS_PER_PROCESS_TYPE

  total_cpu_time_ms:
    type: counter
    description: >
      Total CPU time used by all processes in ms.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1736040
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1736040
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    telemetry_mirror: POWER_TOTAL_CPU_TIME_MS

  total_gpu_time_ms:
    type: counter
    description: >
      Total GPU time used by all processes in ms.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1743176
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1743176
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    telemetry_mirror: POWER_TOTAL_GPU_TIME_MS

  total_thread_wakeups:
    type: counter
    description: >
      How many times threads woke up and could have woken up a CPU core.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1759535
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1759535
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    telemetry_mirror: POWER_TOTAL_THREAD_WAKEUPS

power.wakeups_per_thread:
  parent_active: &per_thread_wakeups
    type: labeled_counter
    description: >
      How many times threads woke up and could have woken up a CPU core.
      Broken down by thread name for a given process type.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1763474
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1763474
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels: &per_thread_labels
      - asynclogger
      - audioipc
      - audioipc_callback_rpc
      - audioipc_client_callback
      - audioipc_client_rpc
      - audioipc_devicecollection_rpc
      - audioipc_server_callback
      - audioipc_server_rpc
      - backgroundthreadpool
      - bgiothreadpool
      - bgreadurls
      - bhmgr_monitor
      - bhmgr_processor
      - cameras_ipc
      - capturethread
      - classifier_update
      - com_mta
      - compositor
      - cookie
      - cubeboperation
      - datachannel_io
      - dns_resolver
      - dom_worker
      - domcachethread
      - extensionprotocolhandler
      - font_loader
      - fontenumthread
      - fs_broker
      - geckomain
      - gmpthread
      - graphrunner
      - html5_parser
      - imagebridgechld
      - imageio
      - indexeddb
      - initfontlist
      - inotifyeventthread
      - ipc_i_o_child
      - ipc_i_o_parent
      - ipc_launch
      - ipdl_background
      - js_watchdog
      - jump_list
      - libwebrtcmodulethread
      - link_monitor
      - ls_thread
      - mediacache
      - mediadecoderstatemachine
      - mediapdecoder
      - mediasupervisor
      - mediatimer
      - mediatrackgrph
      - memorypoller
      - mozstorage
      - mtransport
      - netlink_monitor
      - pacerthread
      - permission
      - playeventsound
      - processhangmon
      - profilerchild
      - proxyresolution
      - quotamanager_io
      - registerfonts
      - remotebackbuffer
      - remotelzystream
      - remvidchild
      - renderer
      - sandboxreporter
      - savescripts
      - socket_thread
      - softwarevsyncthread
      - ssl_cert
      - startupcache
      - streamtrans
      - stylethread
      - swcomposite
      - taskcontroller
      - timer
      - toastbgthread
      - trr_background
      - untrusted_modules
      - url_classifier
      - videocapture
      - vsynciothread
      - webrtccallthread
      - webrtcworker
      - wincompositor
      - windowsvsyncthread
      - winwindowocclusioncalc
      - worker_launcher
      - wrrenderbackend
      - wrscenebuilder
      - wrscenebuilderlp
      - wrworker
      - wrworkerlp

  parent_inactive: *per_thread_wakeups
  content_foreground: *per_thread_wakeups
  content_background: *per_thread_wakeups
  gpu_process: *per_thread_wakeups

power.cpu_ms_per_thread:
  parent_active: &per_thread_cpu_ms
    type: labeled_counter
    description: >
      How many miliseconds of CPU time were used.
      Broken down by thread name for a given process type.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1763474
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1763474
    data_sensitivity:
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
    labels: *per_thread_labels

  parent_inactive: *per_thread_cpu_ms
  content_foreground: *per_thread_cpu_ms
  content_background: *per_thread_cpu_ms
  gpu_process: *per_thread_cpu_ms

power.battery:
  percentage_when_user_active:
    type: custom_distribution
    description: >
      Records how many percent of battery was available for each period of
      user activity.
    range_min: 0
    range_max: 100
    bucket_count: 100
    histogram_type: linear
    unit: percent
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1769255
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1769255
    data_sensitivity:
      - interaction
      - technical
    notification_emails:
      - florian@mozilla.com
    expires: never
