UNPKG

perfetto-protos

Version:

Perfetto protos exposed via protobuf-es for browser and node

512 lines (461 loc) 20.5 kB
// // Copyright (C) 2017 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/ftrace/ftrace_config.proto (package perfetto.protos, syntax proto2) /* eslint-disable */ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file protos/perfetto/config/ftrace/ftrace_config.proto. */ export const file_protos_perfetto_config_ftrace_ftrace_config: GenFile = /*@__PURE__*/ fileDesc("CjFwcm90b3MvcGVyZmV0dG8vY29uZmlnL2Z0cmFjZS9mdHJhY2VfY29uZmlnLnByb3RvEg9wZXJmZXR0by5wcm90b3MirQsKDEZ0cmFjZUNvbmZpZxIVCg1mdHJhY2VfZXZlbnRzGAEgAygJEkAKDWtwcm9iZV9ldmVudHMYHiADKAsyKS5wZXJmZXR0by5wcm90b3MuRnRyYWNlQ29uZmlnLktwcm9iZUV2ZW50EhkKEWF0cmFjZV9jYXRlZ29yaWVzGAIgAygJEhMKC2F0cmFjZV9hcHBzGAMgAygJEiQKHGF0cmFjZV9jYXRlZ29yaWVzX3ByZWZlcl9zZGsYHCADKAkSFgoOYnVmZmVyX3NpemVfa2IYCiABKA0SFwoPZHJhaW5fcGVyaW9kX21zGAsgASgNEhwKFGRyYWluX2J1ZmZlcl9wZXJjZW50GB0gASgNEkcKDWNvbXBhY3Rfc2NoZWQYDCABKAsyMC5wZXJmZXR0by5wcm90b3MuRnRyYWNlQ29uZmlnLkNvbXBhY3RTY2hlZENvbmZpZxI/CgxwcmludF9maWx0ZXIYFiABKAsyKS5wZXJmZXR0by5wcm90b3MuRnRyYWNlQ29uZmlnLlByaW50RmlsdGVyEhcKD3N5bWJvbGl6ZV9rc3ltcxgNIAEoCBJGChBrc3ltc19tZW1fcG9saWN5GBEgASgOMiwucGVyZmV0dG8ucHJvdG9zLkZ0cmFjZUNvbmZpZy5Lc3ltc01lbVBvbGljeRI2Cippbml0aWFsaXplX2tzeW1zX3N5bmNocm9ub3VzbHlfZm9yX3Rlc3RpbmcYDiABKAhCAhgBEhkKEXRocm90dGxlX3Jzc19zdGF0GA8gASgIEh4KFmRpc2FibGVfZ2VuZXJpY19ldmVudHMYECABKAgSFgoOc3lzY2FsbF9ldmVudHMYEiADKAkSHQoVZW5hYmxlX2Z1bmN0aW9uX2dyYXBoGBMgASgIEhgKEGZ1bmN0aW9uX2ZpbHRlcnMYFCADKAkSHAoUZnVuY3Rpb25fZ3JhcGhfcm9vdHMYFSADKAkSHgoWcHJlc2VydmVfZnRyYWNlX2J1ZmZlchgXIAEoCBIfChd1c2VfbW9ub3RvbmljX3Jhd19jbG9jaxgYIAEoCBIVCg1pbnN0YW5jZV9uYW1lGBkgASgJEh8KF2J1ZmZlcl9zaXplX2xvd2VyX2JvdW5kGBsgASgIGtABCgtLcHJvYmVFdmVudBINCgVwcm9iZRgBIAEoCRJCCgR0eXBlGAIgASgOMjQucGVyZmV0dG8ucHJvdG9zLkZ0cmFjZUNvbmZpZy5LcHJvYmVFdmVudC5LcHJvYmVUeXBlIm4KCktwcm9iZVR5cGUSFwoTS1BST0JFX1RZUEVfVU5LTk9XThAAEhYKEktQUk9CRV9UWVBFX0tQUk9CRRABEhkKFUtQUk9CRV9UWVBFX0tSRVRQUk9CRRACEhQKEEtQUk9CRV9UWVBFX0JPVEgQAxolChJDb21wYWN0U2NoZWRDb25maWcSDwoHZW5hYmxlZBgBIAEoCBqCAgoLUHJpbnRGaWx0ZXISPQoFcnVsZXMYASADKAsyLi5wZXJmZXR0by5wcm90b3MuRnRyYWNlQ29uZmlnLlByaW50RmlsdGVyLlJ1bGUaswEKBFJ1bGUSEAoGcHJlZml4GAEgASgJSAASUgoKYXRyYWNlX21zZxgDIAEoCzI8LnBlcmZldHRvLnByb3Rvcy5GdHJhY2VDb25maWcuUHJpbnRGaWx0ZXIuUnVsZS5BdHJhY2VNZXNzYWdlSAASDQoFYWxsb3cYAiABKAgaLQoNQXRyYWNlTWVzc2FnZRIMCgR0eXBlGAEgASgJEg4KBnByZWZpeBgCIAEoCUIHCgVtYXRjaCJUCg5Lc3ltc01lbVBvbGljeRIVChFLU1lNU19VTlNQRUNJRklFRBAAEhkKFUtTWU1TX0NMRUFOVVBfT05fU1RPUBABEhAKDEtTWU1TX1JFVEFJThACSgQIGhAb"); /** * Next id: 31 * * @generated from message perfetto.protos.FtraceConfig */ export type FtraceConfig = Message<"perfetto.protos.FtraceConfig"> & { /** * Ftrace events to record, example: "sched/sched_switch". * * @generated from field: repeated string ftrace_events = 1; */ ftraceEvents: string[]; /** * Ftrace events to record, specific for kprobes and kretprobes * * @generated from field: repeated perfetto.protos.FtraceConfig.KprobeEvent kprobe_events = 30; */ kprobeEvents: FtraceConfig_KprobeEvent[]; /** * Android-specific event categories: * * @generated from field: repeated string atrace_categories = 2; */ atraceCategories: string[]; /** * @generated from field: repeated string atrace_apps = 3; */ atraceApps: string[]; /** * Some processes can emit data through atrace or through the perfetto SDK via * the "track_event" data source. For these categories, the SDK will be * preferred, if possible, for this config. * * @generated from field: repeated string atrace_categories_prefer_sdk = 28; */ atraceCategoriesPreferSdk: string[]; /** * Size of each per-cpu kernel ftrace ring buffer. * Not guaranteed if there are multiple concurrent tracing sessions, as the * buffers cannot be resized without pausing recording in the kernel. * * @generated from field: optional uint32 buffer_size_kb = 10; */ bufferSizeKb: number; /** * If set, specifies how often the tracing daemon reads from the kernel ring * buffer. Not guaranteed if there are multiple concurrent tracing sessions. * Leave unset unless you're fine-tuning a local config. * * @generated from field: optional uint32 drain_period_ms = 11; */ drainPeriodMs: number; /** * If set, the tracing daemon will read kernel ring buffers as soon as * they're filled past this percentage of occupancy. In other words, a value * of 50 means that a read pass is triggered as soon as any per-cpu buffer is * half-full. Not guaranteed if there are multiple concurrent tracing * sessions. * Currently does nothing on Linux kernels below v6.9. * Introduced in: perfetto v48. * * @generated from field: optional uint32 drain_buffer_percent = 29; */ drainBufferPercent: number; /** * @generated from field: optional perfetto.protos.FtraceConfig.CompactSchedConfig compact_sched = 12; */ compactSched?: FtraceConfig_CompactSchedConfig; /** * @generated from field: optional perfetto.protos.FtraceConfig.PrintFilter print_filter = 22; */ printFilter?: FtraceConfig_PrintFilter; /** * Enables symbol name resolution against /proc/kallsyms. * It requires that either traced_probes is running as root or that * kptr_restrict has been manually lowered. * It does not disclose KASLR, symbol addresses are mangled. * * @generated from field: optional bool symbolize_ksyms = 13; */ symbolizeKsyms: boolean; /** * @generated from field: optional perfetto.protos.FtraceConfig.KsymsMemPolicy ksyms_mem_policy = 17; */ ksymsMemPolicy: FtraceConfig_KsymsMemPolicy; /** * By default the kernel symbolizer is lazily initialized on a deferred task * to reduce ftrace's time-to-start-recording. Unfortunately that makes * ksyms integration tests hard. This flag forces the kernel symbolizer to be * initialized synchronously on the data source start and hence avoiding * timing races in tests. * DEPRECATED in v28 / Android U. This is now the default behavior, setting it * to true is a no-op. * * @generated from field: optional bool initialize_ksyms_synchronously_for_testing = 14 [deprecated = true]; * @deprecated */ initializeKsymsSynchronouslyForTesting: boolean; /** * When this boolean is true AND the ftrace_events contains "kmem/rss_stat", * this option causes traced_probes to enable the "kmem/rss_stat_throttled" * event instead if present, and fall back to "kmem/rss_stat" if not present. * The historical context for this is the following: * - Up to Android S (12), the rss_stat was internally throttled in its * kernel implementation. * - A change introduced in the kernels after S has introduced a new * "rss_stat_throttled" making the original "rss_stat" event unthrottled * (hence very spammy). * - Not all Android T/13 devices will receive a new kernel though, hence we * need to deal with both cases. * For more context: go/rss-stat-throttled. * * @generated from field: optional bool throttle_rss_stat = 15; */ throttleRssStat: boolean; /** * If true, avoid enabling events that aren't statically known by * traced_probes. Otherwise, the default is to emit such events as * GenericFtraceEvent protos. * Prefer to keep this flag at its default. This was added for Android * tracing, where atrace categories and/or atrace HAL requested events can * expand to events that aren't of interest to the tracing user. * Introduced in: Android T. * * @generated from field: optional bool disable_generic_events = 16; */ disableGenericEvents: boolean; /** * The subset of syscalls to record. To record all syscalls, leave this unset * and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config. * * before perfetto v43, requires the config to also enable * raw_syscalls/sys_{enter,exit}. * * perfetto v43+ does the right thing if you set only this field. * Example: ["sys_read", "sys_open"]. * Introduced in: Android U. * * @generated from field: repeated string syscall_events = 18; */ syscallEvents: string[]; /** * If true, enable the "function_graph" kernel tracer that emits events * whenever a kernel function is entered and exited * (funcgraph_entry/funcgraph_exit). * Notes on use: * * Requires |symbolize_ksyms| for function name resolution. * * Use |function_filters| or |function_graph_roots| to constrain the traced * set of functions, otherwise the event bandwidth will be too high for * practical use. * * The data source might be rejected if there is already a concurrent * ftrace data source that does not use function graph itself, as we do not * support switching kernel tracers mid-trace. * * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is * enabled if "cat /sys/kernel/tracing/available_tracers" includes * "function_graph". * Android: * * Available only on debuggable builds. * * Introduced in: Android U. * * @generated from field: optional bool enable_function_graph = 19; */ enableFunctionGraph: boolean; /** * Constrains the set of functions traced when |enable_function_graph| is * true. Supports globs, e.g. "sched*". You can specify multiple filters, * in which case all matching functions will be traced. See kernel * documentation on ftrace "set_ftrace_filter" file for more details. * Android: * * Available only on debuggable builds. * * Introduced in: Android U. * * @generated from field: repeated string function_filters = 20; */ functionFilters: string[]; /** * If |enable_function_graph| is true, trace this set of functions *and* all * of its callees. Supports globs. Can be set together with * |function_filters|, in which case only callees matching the filter will be * traced. If setting both, you most likely want all roots to also be * included in |function_filters|. * Android: * * Available only on debuggable builds. * * Introduced in: Android U. * * @generated from field: repeated string function_graph_roots = 21; */ functionGraphRoots: string[]; /** * If true, does not clear ftrace buffers before the start of the program. * This makes sense only if this is the first ftrace data source instance * created after the daemon has been started. Can be useful for gathering boot * traces, if ftrace has been separately configured (e.g. via kernel * commandline). * * @generated from field: optional bool preserve_ftrace_buffer = 23; */ preserveFtraceBuffer: boolean; /** * If true, overrides the default timestamp clock and uses a raw hardware * based monotonic clock for getting timestamps. * * Introduced in: Android U. * * @generated from field: optional bool use_monotonic_raw_clock = 24; */ useMonotonicRawClock: boolean; /** * If |instance_name| is not empty, then attempt to use that tracefs instance * for event recording. Normally, this means * `/sys/kernel/tracing/instances/$instance_name`. * * The name "hyp" is reserved. * * The instance must already exist, the tracing daemon *will not* create it * for you as it typically doesn't have such permissions. * Only a subset of features is guaranteed to work with non-default instances, * at the time of writing: * * ftrace_events * * buffer_size_kb * * @generated from field: optional string instance_name = 25; */ instanceName: string; /** * If true, |buffer_size_kb| is interpreted as a lower bound, allowing the * implementation to choose a bigger buffer size. * * Most configs for perfetto v43+ should simply leave both fields unset. * * If you need a config compatible with a range of perfetto builds and you * used to set a non-default buffer_size_kb, consider setting both fields. * Example: * buffer_size_kb: 4096 * buffer_size_lower_bound: true * On older builds, the per-cpu buffers will be exactly 4 MB. * On v43+, buffers will be at least 4 MB. * In both cases, neither is guaranteed if there are other concurrent * perfetto ftrace sessions, as the buffers cannot be resized without pausing * the recording in the kernel. * Introduced in: perfetto v43. * * @generated from field: optional bool buffer_size_lower_bound = 27; */ bufferSizeLowerBound: boolean; }; /** * Describes the message perfetto.protos.FtraceConfig. * Use `create(FtraceConfigSchema)` to create a new message. */ export const FtraceConfigSchema: GenMessage<FtraceConfig> = /*@__PURE__*/ messageDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0); /** * @generated from message perfetto.protos.FtraceConfig.KprobeEvent */ export type FtraceConfig_KprobeEvent = Message<"perfetto.protos.FtraceConfig.KprobeEvent"> & { /** * Kernel function name to attach to, for example "fuse_file_write_iter" * * @generated from field: optional string probe = 1; */ probe: string; /** * @generated from field: optional perfetto.protos.FtraceConfig.KprobeEvent.KprobeType type = 2; */ type: FtraceConfig_KprobeEvent_KprobeType; }; /** * Describes the message perfetto.protos.FtraceConfig.KprobeEvent. * Use `create(FtraceConfig_KprobeEventSchema)` to create a new message. */ export const FtraceConfig_KprobeEventSchema: GenMessage<FtraceConfig_KprobeEvent> = /*@__PURE__*/ messageDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 0); /** * @generated from enum perfetto.protos.FtraceConfig.KprobeEvent.KprobeType */ export enum FtraceConfig_KprobeEvent_KprobeType { /** * @generated from enum value: KPROBE_TYPE_UNKNOWN = 0; */ UNKNOWN = 0, /** * @generated from enum value: KPROBE_TYPE_KPROBE = 1; */ KPROBE = 1, /** * @generated from enum value: KPROBE_TYPE_KRETPROBE = 2; */ KRETPROBE = 2, /** * @generated from enum value: KPROBE_TYPE_BOTH = 3; */ BOTH = 3, } /** * Describes the enum perfetto.protos.FtraceConfig.KprobeEvent.KprobeType. */ export const FtraceConfig_KprobeEvent_KprobeTypeSchema: GenEnum<FtraceConfig_KprobeEvent_KprobeType> = /*@__PURE__*/ enumDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 0, 0); /** * Configuration for compact encoding of scheduler events. When enabled (and * recording the relevant ftrace events), specific high-volume events are * encoded in a denser format than normal. * * @generated from message perfetto.protos.FtraceConfig.CompactSchedConfig */ export type FtraceConfig_CompactSchedConfig = Message<"perfetto.protos.FtraceConfig.CompactSchedConfig"> & { /** * If true, and sched_switch or sched_waking ftrace events are enabled, * record those events in the compact format. * * If the field is unset, the default is: * * perfetto v42.0+: enabled * * before: disabled * * @generated from field: optional bool enabled = 1; */ enabled: boolean; }; /** * Describes the message perfetto.protos.FtraceConfig.CompactSchedConfig. * Use `create(FtraceConfig_CompactSchedConfigSchema)` to create a new message. */ export const FtraceConfig_CompactSchedConfigSchema: GenMessage<FtraceConfig_CompactSchedConfig> = /*@__PURE__*/ messageDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 1); /** * Optional filter for "ftrace/print" events. * * The filter consists of multiple rules. As soon as a rule matches (the rules * are processed in order), its `allow` field will be used as the outcome: if * `allow` is true, the event will be included in the trace, otherwise it will * be discarded. If an event does not match any rule, it will be allowed by * default (a rule with an empty prefix and allow=false, disallows everything * by default). * * @generated from message perfetto.protos.FtraceConfig.PrintFilter */ export type FtraceConfig_PrintFilter = Message<"perfetto.protos.FtraceConfig.PrintFilter"> & { /** * @generated from field: repeated perfetto.protos.FtraceConfig.PrintFilter.Rule rules = 1; */ rules: FtraceConfig_PrintFilter_Rule[]; }; /** * Describes the message perfetto.protos.FtraceConfig.PrintFilter. * Use `create(FtraceConfig_PrintFilterSchema)` to create a new message. */ export const FtraceConfig_PrintFilterSchema: GenMessage<FtraceConfig_PrintFilter> = /*@__PURE__*/ messageDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 2); /** * @generated from message perfetto.protos.FtraceConfig.PrintFilter.Rule */ export type FtraceConfig_PrintFilter_Rule = Message<"perfetto.protos.FtraceConfig.PrintFilter.Rule"> & { /** * @generated from oneof perfetto.protos.FtraceConfig.PrintFilter.Rule.match */ match: { /** * This rule matches if `prefix` matches exactly with the beginning of * the "ftrace/print" "buf" field. * * @generated from field: string prefix = 1; */ value: string; case: "prefix"; } | { /** * This rule matches if the "buf" field contains an atrace-style print * message as specified in `atrace_msg`. * * @generated from field: perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage atrace_msg = 3; */ value: FtraceConfig_PrintFilter_Rule_AtraceMessage; case: "atraceMsg"; } | { case: undefined; value?: undefined }; /** * @generated from field: optional bool allow = 2; */ allow: boolean; }; /** * Describes the message perfetto.protos.FtraceConfig.PrintFilter.Rule. * Use `create(FtraceConfig_PrintFilter_RuleSchema)` to create a new message. */ export const FtraceConfig_PrintFilter_RuleSchema: GenMessage<FtraceConfig_PrintFilter_Rule> = /*@__PURE__*/ messageDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 2, 0); /** * Matches an atrace message of the form: * <type>|pid|<prefix>... * * @generated from message perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage */ export type FtraceConfig_PrintFilter_Rule_AtraceMessage = Message<"perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage"> & { /** * @generated from field: optional string type = 1; */ type: string; /** * @generated from field: optional string prefix = 2; */ prefix: string; }; /** * Describes the message perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage. * Use `create(FtraceConfig_PrintFilter_Rule_AtraceMessageSchema)` to create a new message. */ export const FtraceConfig_PrintFilter_Rule_AtraceMessageSchema: GenMessage<FtraceConfig_PrintFilter_Rule_AtraceMessage> = /*@__PURE__*/ messageDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 2, 0, 0); /** * When symbolize_ksyms=true, determines whether the traced_probes daemon * should keep the symbol map in memory (and reuse it for future tracing * sessions) or clear it (saving memory) and re-create it on each tracing * session (wasting cpu and wall time). * The tradeoff is roughly: * KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace. * KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace. * Default behavior: KSYMS_CLEANUP_ON_STOP. * * @generated from enum perfetto.protos.FtraceConfig.KsymsMemPolicy */ export enum FtraceConfig_KsymsMemPolicy { /** * @generated from enum value: KSYMS_UNSPECIFIED = 0; */ KSYMS_UNSPECIFIED = 0, /** * @generated from enum value: KSYMS_CLEANUP_ON_STOP = 1; */ KSYMS_CLEANUP_ON_STOP = 1, /** * @generated from enum value: KSYMS_RETAIN = 2; */ KSYMS_RETAIN = 2, } /** * Describes the enum perfetto.protos.FtraceConfig.KsymsMemPolicy. */ export const FtraceConfig_KsymsMemPolicySchema: GenEnum<FtraceConfig_KsymsMemPolicy> = /*@__PURE__*/ enumDesc(file_protos_perfetto_config_ftrace_ftrace_config, 0, 0);