//
// Copyright (C) 2024 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License")= ;
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/metrics/android/android_garbage_collection_stats.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/metrics/android/android_garbage_collection_stats.proto.
 */
export const file_protos_perfetto_metrics_android_android_garbage_collection_stats: GenFile = /*@__PURE__*/
  fileDesc("CkZwcm90b3MvcGVyZmV0dG8vbWV0cmljcy9hbmRyb2lkL2FuZHJvaWRfZ2FyYmFnZV9jb2xsZWN0aW9uX3N0YXRzLnByb3RvEg9wZXJmZXR0by5wcm90b3Mi1wMKHUFuZHJvaWRHYXJiYWdlQ29sbGVjdGlvblN0YXRzEgoKAnRzGAEgASgDEgsKA2R1chgCIAEoAxIVCg1oZWFwX3NpemVfbWJzGAMgASgBEhQKDGhlYXBfc2l6ZV9tYhgEIAEoARIZChFoZWFwX2FsbG9jYXRlZF9tYhgFIAEoARIcChRoZWFwX2FsbG9jYXRpb25fcmF0ZRgGIAEoARIVCg1oZWFwX2xpdmVfbWJzGAcgASgBEhYKDmhlYXBfdG90YWxfbWJzGAggASgBEhgKEGhlYXBfdXRpbGl6YXRpb24YCSABKAESFgoOZ2NfcnVubmluZ19kdXIYCiABKAMSFwoPZ2NfcnVubmluZ19yYXRlGAsgASgBEh0KFWdjX3J1bm5pbmdfZWZmaWNpZW5jeRgMIAEoARIlCh1nY19kdXJpbmdfYW5kcm9pZF9zdGFydHVwX2R1chgNIAEoAxIhChl0b3RhbF9hbmRyb2lkX3N0YXJ0dXBfZHVyGA4gASgDEiYKHmdjX2R1cmluZ19hbmRyb2lkX3N0YXJ0dXBfcmF0ZRgPIAEoARIsCiRnY19kdXJpbmdfYW5kcm9pZF9zdGFydHVwX2VmZmljaWVuY3kYECABKAE");

/**
 * @generated from message perfetto.protos.AndroidGarbageCollectionStats
 */
export type AndroidGarbageCollectionStats = Message<"perfetto.protos.AndroidGarbageCollectionStats"> & {
  /**
   * The start of the window of time that the stats cover in the trace.
   *
   * @generated from field: optional int64 ts = 1;
   */
  ts: bigint;

  /**
   * The duration of the window of time that the stats cover in the trace.
   *
   * @generated from field: optional int64 dur = 2;
   */
  dur: bigint;

  /**
   * Megabyte-seconds of heap size across the device, used in the calculation
   * of heap_size_mb.
   *
   * @generated from field: optional double heap_size_mbs = 3;
   */
  heapSizeMbs: number;

  /**
   * Total size of heap allocations across the device on average, in MB.
   *
   * @generated from field: optional double heap_size_mb = 4;
   */
  heapSizeMb: number;

  /**
   * Total number of bytes allocated over the course of the trace.
   *
   * @generated from field: optional double heap_allocated_mb = 5;
   */
  heapAllocatedMb: number;

  /**
   * Overall rate of heap allocations in MB per second. This gives a sense of
   * how much allocation activity is going on during the trace.
   *
   * @generated from field: optional double heap_allocation_rate = 6;
   */
  heapAllocationRate: number;

  /**
   * Megabyte-seconds of live heap for processes that had GC events.
   *
   * @generated from field: optional double heap_live_mbs = 7;
   */
  heapLiveMbs: number;

  /**
   * Megabyte-seconds of total heap for processes that had GC events.
   *
   * @generated from field: optional double heap_total_mbs = 8;
   */
  heapTotalMbs: number;

  /**
   * Overall heap utilization. This gives a sense of how aggressive GC is
   * during this trace.
   *
   * @generated from field: optional double heap_utilization = 9;
   */
  heapUtilization: number;

  /**
   * CPU time spent running GC. Used in the calculation of gc_running_rate.
   *
   * @generated from field: optional int64 gc_running_dur = 10;
   */
  gcRunningDur: bigint;

  /**
   * CPU time spent running GC, as a fraction of the duration of the trace.
   * This gives a sense of the battery cost of GC.
   *
   * @generated from field: optional double gc_running_rate = 11;
   */
  gcRunningRate: number;

  /**
   * A measure of how efficient GC is with respect to cpu, independent of how
   * aggressively GC is tuned. Larger values indicate more efficient GC, so
   * larger is better.
   *
   * @generated from field: optional double gc_running_efficiency = 12;
   */
  gcRunningEfficiency: number;

  /**
   * Time GC is running during app startup. Used in the calculation of
   * gc_during_android_startup_rate.
   *
   * @generated from field: optional int64 gc_during_android_startup_dur = 13;
   */
  gcDuringAndroidStartupDur: bigint;

  /**
   * Total startup time in the trace, used to normalize the
   * gc_during_android_startup_rate.
   *
   * @generated from field: optional int64 total_android_startup_dur = 14;
   */
  totalAndroidStartupDur: bigint;

  /**
   * Time GC is running during app startup, as a fraction of startup time in
   * the trace. This gives a sense of how much potential interference there
   * is between GC and application startup.
   *
   * @generated from field: optional double gc_during_android_startup_rate = 15;
   */
  gcDuringAndroidStartupRate: number;

  /**
   * A measure of how efficient GC is with regards to gc during application
   * startup, independent of how aggressively GC is tuned. Larger values
   * indicate more efficient GC, so larger is better.
   *
   * @generated from field: optional double gc_during_android_startup_efficiency = 16;
   */
  gcDuringAndroidStartupEfficiency: number;
};

/**
 * Describes the message perfetto.protos.AndroidGarbageCollectionStats.
 * Use `create(AndroidGarbageCollectionStatsSchema)` to create a new message.
 */
export const AndroidGarbageCollectionStatsSchema: GenMessage<AndroidGarbageCollectionStats> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_android_garbage_collection_stats, 0);

