Add SysStats data source (/proc/{meminfo,stat,vmstat})
Adds a new data source for polling /proc counters.
The polling rate and the counters can be individually
set in the trace config.
The cost (CPU time) of polling and parsing these files,
measured on a Pixel 2, running on little core, is:
- /proc/meminfo: 0.3 ms [read] + 0.07 ms [parse + trace injection]
- /proc/vmstat: 0.2 ms [read] + 0.3 ms [parse + trace injection]
- /proc/stat: 4.1 ms [read] + 1.9 ms [parse + trace injection]
SELinux: aosp/759260
Bug: b/115956288
Test: perfetto_unittests --gtest_filter=SysStatsDataSourceTest.*
Change-Id: I2805f713d418ba6bda9550f11bfce137b378bc1b
diff --git a/tools/gen_merged_protos b/tools/gen_merged_protos
index 77bab2b..8d42fcd 100755
--- a/tools/gen_merged_protos
+++ b/tools/gen_merged_protos
@@ -22,11 +22,13 @@
import sys
CONFIG_PROTOS = (
+ 'protos/perfetto/common/sys_stats_counters.proto',
'protos/perfetto/config/chrome/chrome_config.proto',
- 'protos/perfetto/config/inode_file/inode_file_config.proto',
- 'protos/perfetto/config/process_stats/process_stats_config.proto',
'protos/perfetto/config/data_source_config.proto',
'protos/perfetto/config/ftrace/ftrace_config.proto',
+ 'protos/perfetto/config/inode_file/inode_file_config.proto',
+ 'protos/perfetto/config/process_stats/process_stats_config.proto',
+ 'protos/perfetto/config/sys_stats/sys_stats_config.proto',
'protos/perfetto/config/test_config.proto',
'protos/perfetto/config/trace_config.proto',
)
@@ -34,12 +36,15 @@
MERGED_CONFIG_PROTO = 'protos/perfetto/config/perfetto_config.proto'
TRACE_PROTOS = (
+ 'protos/perfetto/common/sys_stats_counters.proto',
'protos/perfetto/trace/trace.proto',
'protos/perfetto/trace/trace_packet.proto',
'protos/perfetto/trace/ftrace/ftrace_event_bundle.proto',
'protos/perfetto/trace/ftrace/ftrace_event.proto',
'protos/perfetto/trace/filesystem/inode_file_map.proto',
'protos/perfetto/trace/ps/process_tree.proto',
+ 'protos/perfetto/trace/clock_snapshot.proto',
+ 'protos/perfetto/trace/sys_stats/sys_stats.proto',
# Print proto is special: it doesn't have a enable file so is
# not present in genfs_contexts.