perfetto-protos
Version:
Perfetto protos exposed via protobuf-es for browser and node
338 lines (304 loc) • 12 kB
text/typescript
//
// Copyright (C) 2018 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/config/profiling/heapprofd_config.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/config/profiling/heapprofd_config.proto.
*/
export const file_protos_perfetto_config_profiling_heapprofd_config: GenFile = /*@__PURE__*/
fileDesc("Cjdwcm90b3MvcGVyZmV0dG8vY29uZmlnL3Byb2ZpbGluZy9oZWFwcHJvZmRfY29uZmlnLnByb3RvEg9wZXJmZXR0by5wcm90b3MizAYKD0hlYXBwcm9mZENvbmZpZxIfChdzYW1wbGluZ19pbnRlcnZhbF9ieXRlcxgBIAEoBBIpCiFhZGFwdGl2ZV9zYW1wbGluZ19zaG1lbV90aHJlc2hvbGQYGCABKAQSNQotYWRhcHRpdmVfc2FtcGxpbmdfbWF4X3NhbXBsaW5nX2ludGVydmFsX2J5dGVzGBkgASgEEhcKD3Byb2Nlc3NfY21kbGluZRgCIAMoCRILCgNwaWQYBCADKAQSGwoTdGFyZ2V0X2luc3RhbGxlZF9ieRgaIAMoCRINCgVoZWFwcxgUIAMoCRIVCg1leGNsdWRlX2hlYXBzGBsgAygJEhoKEnN0cmVhbV9hbGxvY2F0aW9ucxgXIAEoCBIfChdoZWFwX3NhbXBsaW5nX2ludGVydmFscxgWIAMoBBIRCglhbGxfaGVhcHMYFSABKAgSCwoDYWxsGAUgASgIEh8KF21pbl9hbm9ueW1vdXNfbWVtb3J5X2tiGA8gASgNEh8KF21heF9oZWFwcHJvZmRfbWVtb3J5X2tiGBAgASgNEh4KFm1heF9oZWFwcHJvZmRfY3B1X3NlY3MYESABKAQSGgoSc2tpcF9zeW1ib2xfcHJlZml4GAcgAygJElUKFmNvbnRpbnVvdXNfZHVtcF9jb25maWcYBiABKAsyNS5wZXJmZXR0by5wcm90b3MuSGVhcHByb2ZkQ29uZmlnLkNvbnRpbnVvdXNEdW1wQ29uZmlnEhgKEHNobWVtX3NpemVfYnl0ZXMYCCABKAQSFAoMYmxvY2tfY2xpZW50GAkgASgIEh8KF2Jsb2NrX2NsaWVudF90aW1lb3V0X3VzGA4gASgNEhIKCm5vX3N0YXJ0dXAYCiABKAgSEgoKbm9fcnVubmluZxgLIAEoCBITCgtkdW1wX2F0X21heBgNIAEoCBIdChVkaXNhYmxlX2ZvcmtfdGVhcmRvd24YEiABKAgSHwoXZGlzYWJsZV92Zm9ya19kZXRlY3Rpb24YEyABKAgaRwoUQ29udGludW91c0R1bXBDb25maWcSFQoNZHVtcF9waGFzZV9tcxgFIAEoDRIYChBkdW1wX2ludGVydmFsX21zGAYgASgNSgQIDBAN");
/**
* Configuration for go/heapprofd.
* Next id: 28
*
* @generated from message perfetto.protos.HeapprofdConfig
*/
export type HeapprofdConfig = Message<"perfetto.protos.HeapprofdConfig"> & {
/**
* Sampling rate for all heaps not specified via heap_sampling_intervals.
*
* These are:
* * All heaps if heap_sampling_intervals is empty.
* * Those profiled due to all_heaps and not named in heaps if
* heap_sampling_intervals is not empty.
* * The implicit libc.malloc heap if heaps is empty.
*
* Set to 1 for perfect accuracy.
* Otherwise, sample every sample_interval_bytes on average.
*
* See
* https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval
* for more details.
*
* BUGS
* Before Android 12, setting this to 0 would crash the target process.
*
* N.B. This must be explicitly set to a non-zero value for all heaps (with
* this field or with heap_sampling_intervals), otherwise the producer will
* not start.
*
* @generated from field: optional uint64 sampling_interval_bytes = 1;
*/
samplingIntervalBytes: bigint;
/**
* If less than the given numbers of bytes are left free in the shared
* memory buffer, increase sampling interval by a factor of two.
* Adaptive sampling is disabled when set to 0.
*
* @generated from field: optional uint64 adaptive_sampling_shmem_threshold = 24;
*/
adaptiveSamplingShmemThreshold: bigint;
/**
* Stop doubling the sampling_interval once the sampling interval has reached
* this value.
*
* @generated from field: optional uint64 adaptive_sampling_max_sampling_interval_bytes = 25;
*/
adaptiveSamplingMaxSamplingIntervalBytes: bigint;
/**
* E.g. surfaceflinger, com.android.phone
* This input is normalized in the following way: if it contains slashes,
* everything up to the last slash is discarded. If it contains "@",
* everything after the first @ is discared.
* E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
* This transformation is also applied to the processes' command lines when
* matching.
*
* @generated from field: repeated string process_cmdline = 2;
*/
processCmdline: string[];
/**
* For watermark based triggering or local debugging.
*
* @generated from field: repeated uint64 pid = 4;
*/
pid: bigint[];
/**
* Only profile target if it was installed by one of the packages given.
* Special values are:
* * @system: installed on the system partition
* * @product: installed on the product partition
* * @null: sideloaded
* Supported on Android 12+.
*
* @generated from field: repeated string target_installed_by = 26;
*/
targetInstalledBy: string[];
/**
* Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
* "malloc".
*
* Introduced in Android 12.
*
* @generated from field: repeated string heaps = 20;
*/
heaps: string[];
/**
* Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
* combination with all_heaps;
*
* Introduced in Android 12.
*
* @generated from field: repeated string exclude_heaps = 27;
*/
excludeHeaps: string[];
/**
* @generated from field: optional bool stream_allocations = 23;
*/
streamAllocations: boolean;
/**
* If given, needs to be the same length as heaps and gives the sampling
* interval for the respective entry in heaps.
*
* Otherwise, sampling_interval_bytes is used.
*
* It is recommended to set sampling_interval_bytes to a reasonable default
* value when using this, as a value of 0 for sampling_interval_bytes will
* crash the target process before Android 12.
*
* Introduced in Android 12.
*
* All values must be non-zero or the producer will not start.
*
* @generated from field: repeated uint64 heap_sampling_intervals = 22;
*/
heapSamplingIntervals: bigint[];
/**
* Sample all heaps registered by target process. Introduced in Android 12.
*
* @generated from field: optional bool all_heaps = 21;
*/
allHeaps: boolean;
/**
* Profile all processes eligible for profiling on the system.
* See
* https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets
* for which processes are eligible.
*
* On unmodified userdebug builds, this will lead to system crashes. Zygote
* will crash when trying to launch a new process as it will have an
* unexpected open socket to heapprofd.
*
* heapprofd will likely be overloaded by the amount of data for low
* sampling intervals.
*
* @generated from field: optional bool all = 5;
*/
all: boolean;
/**
* Do not profile processes whose anon RSS + swap < given value.
* Introduced in Android 11.
*
* @generated from field: optional uint32 min_anonymous_memory_kb = 15;
*/
minAnonymousMemoryKb: number;
/**
* Stop profile if heapprofd memory usage goes beyond the given value.
* Introduced in Android 11.
*
* @generated from field: optional uint32 max_heapprofd_memory_kb = 16;
*/
maxHeapprofdMemoryKb: number;
/**
* Stop profile if heapprofd CPU time since start of this data-source
* goes beyond given value.
* Introduced in Android 11.
*
* @generated from field: optional uint64 max_heapprofd_cpu_secs = 17;
*/
maxHeapprofdCpuSecs: bigint;
/**
* Do not emit function names for mappings starting with this prefix.
* E.g. /system to not emit symbols for any system libraries.
*
* @generated from field: repeated string skip_symbol_prefix = 7;
*/
skipSymbolPrefix: string[];
/**
* Dump at a predefined interval.
*
* @generated from field: optional perfetto.protos.HeapprofdConfig.ContinuousDumpConfig continuous_dump_config = 6;
*/
continuousDumpConfig?: HeapprofdConfig_ContinuousDumpConfig;
/**
* Size of the shared memory buffer between the profiled processes and
* heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
* MiB.
*
* Needs to be:
* * at least 8192,
* * a power of two,
* * a multiple of 4096.
*
* @generated from field: optional uint64 shmem_size_bytes = 8;
*/
shmemSizeBytes: bigint;
/**
* When the shmem buffer is full, block the client instead of ending the
* trace. Use with caution as this will significantly slow down the target
* process.
*
* @generated from field: optional bool block_client = 9;
*/
blockClient: boolean;
/**
* If set, stop the trace session after blocking the client for this
* timeout. Needs to be larger than 100 us, otherwise no retries are done.
* Introduced in Android 11.
*
* @generated from field: optional uint32 block_client_timeout_us = 14;
*/
blockClientTimeoutUs: number;
/**
* Do not profile processes from startup, only match already running
* processes.
*
* Can not be set at the same time as no_running.
* Introduced in Android 11.
*
* @generated from field: optional bool no_startup = 10;
*/
noStartup: boolean;
/**
* Do not profile running processes. Only match processes on startup.
*
* Can not be set at the same time as no_startup.
* Introduced in Android 11.
*
* @generated from field: optional bool no_running = 11;
*/
noRunning: boolean;
/**
* Cause heapprofd to emit a single dump at the end, showing the memory usage
* at the point in time when the sampled heap usage of the process was at its
* maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
* self_allocated and self_freed to not be set.
* Introduced in Android 11.
*
* @generated from field: optional bool dump_at_max = 13;
*/
dumpAtMax: boolean;
/**
* Escape hatch if the session is being torn down because of a forked child
* that shares memory space, but is not correctly identified as a vforked
* child.
* Introduced in Android 11.
*
* @generated from field: optional bool disable_fork_teardown = 18;
*/
disableForkTeardown: boolean;
/**
* We try to automatically detect when a target applicatation vforks but then
* does a memory allocation (or free). This auto-detection can be disabled
* with this.
* Introduced in Android 11.
*
* @generated from field: optional bool disable_vfork_detection = 19;
*/
disableVforkDetection: boolean;
};
/**
* Describes the message perfetto.protos.HeapprofdConfig.
* Use `create(HeapprofdConfigSchema)` to create a new message.
*/
export const HeapprofdConfigSchema: GenMessage<HeapprofdConfig> = /*@__PURE__*/
messageDesc(file_protos_perfetto_config_profiling_heapprofd_config, 0);
/**
* @generated from message perfetto.protos.HeapprofdConfig.ContinuousDumpConfig
*/
export type HeapprofdConfig_ContinuousDumpConfig = Message<"perfetto.protos.HeapprofdConfig.ContinuousDumpConfig"> & {
/**
* ms to wait before first dump.
*
* @generated from field: optional uint32 dump_phase_ms = 5;
*/
dumpPhaseMs: number;
/**
* ms to wait between following dumps.
*
* @generated from field: optional uint32 dump_interval_ms = 6;
*/
dumpIntervalMs: number;
};
/**
* Describes the message perfetto.protos.HeapprofdConfig.ContinuousDumpConfig.
* Use `create(HeapprofdConfig_ContinuousDumpConfigSchema)` to create a new message.
*/
export const HeapprofdConfig_ContinuousDumpConfigSchema: GenMessage<HeapprofdConfig_ContinuousDumpConfig> = /*@__PURE__*/
messageDesc(file_protos_perfetto_config_profiling_heapprofd_config, 0, 0);