| /* |
| * 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. |
| */ |
| |
| syntax = "proto2"; |
| |
| package perfetto.protos; |
| |
| // Per-CPU stats for the ftrace data source gathered from the kernel from |
| // /sys/kernel/debug/tracing/per_cpu/cpuX/stats. |
| message FtraceCpuStats { |
| // CPU index. |
| optional uint64 cpu = 1; |
| |
| // Number of entries still in the kernel buffer. Ideally this should be close |
| // to zero, as events are consumed regularly and moved into the userspace |
| // buffers (or file). |
| optional uint64 entries = 2; |
| |
| // Number of events lost in kernel buffers due to overwriting of old events |
| // before userspace had a chance to drain them. |
| optional uint64 overrun = 3; |
| |
| // This should always be zero. If not the buffer size is way too small or |
| // something went wrong with the tracer. |
| optional uint64 commit_overrun = 4; |
| |
| // Bytes actually read (not overwritten). |
| optional uint64 bytes_read = 5; |
| |
| // The timestamp for the oldest event still in the ring buffer. |
| optional double oldest_event_ts = 6; |
| |
| // The current timestamp. |
| optional double now_ts = 7; |
| |
| // If the kernel buffer has overwrite mode disabled, this will show the number |
| // of new events that were lost because the buffer was full. This is similar |
| // to |overrun| but only for the overwrite=false case. |
| optional uint64 dropped_events = 8; |
| |
| // The number of events read. |
| optional uint64 read_events = 9; |
| } |
| |
| // Ftrace stats for all CPUs. |
| message FtraceStats { |
| enum Phase { |
| UNSPECIFIED = 0; |
| START_OF_TRACE = 1; |
| END_OF_TRACE = 2; |
| } |
| |
| // Tells when stats were sampled. There should be one sample at the beginning |
| // of the trace and one sample at the end. |
| optional Phase phase = 1; |
| |
| // Per-CPU stats (one entry for each CPU). |
| repeated FtraceCpuStats cpu_stats = 2; |
| |
| // When FtraceConfig.symbolize_ksyms = true, this records the number of |
| // symbols parsed from /proc/kallsyms, whether they have been seen in the |
| // trace or not. It can be used to debug kptr_restrict or security-related |
| // errors. |
| // Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is |
| // initialized. When START_OF_TRACE is emitted it is not ready yet. |
| optional uint32 kernel_symbols_parsed = 3; |
| |
| // The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()). |
| optional uint32 kernel_symbols_mem_kb = 4; |
| |
| // Atrace errors (even non-fatal ones) are reported here. A typical example is |
| // one or more atrace categories not available on the device. |
| optional string atrace_errors = 5; |
| |
| // Ftrace events requested by the config but not present on device. |
| repeated string unknown_ftrace_events = 6; |
| |
| // Ftrace events requested by the config and present on device, but which we |
| // failed to enable due to permissions, or due to a conflicting option |
| // (currently FtraceConfig.disable_generic_events). |
| repeated string failed_ftrace_events = 7; |
| |
| // The data source was configured to preserve existing events in the ftrace |
| // buffer before the start of the trace. |
| optional bool preserve_ftrace_buffer = 8; |
| } |