Add support for 16KB page size.
Test: Existing Benchmark, Trace Processor tests.
Bug: 427734651
Change-Id: I76ef4252811683d4901a30d058708e9b13476b68
diff --git a/generate_perfetto_binaries.py b/generate_perfetto_binaries.py
index a2c2eca..46a14eb 100755
--- a/generate_perfetto_binaries.py
+++ b/generate_perfetto_binaries.py
@@ -34,7 +34,8 @@
ANDROID_ARGS = (
'target_os="android"',
'monolithic_binaries=true',
- 'is_debug=false'
+ 'is_debug=false',
+ 'extra_target_ldflags="-Wl,-z,max-page-size=16384"',
)
ANDROID_BUILD_TARGETS = (
@@ -98,7 +99,7 @@
### Binaries
for arch, arch_tag in ARCH_LIST:
config_name ='android_%s' % (arch)
- gn_args = ANDROID_ARGS + ('target_cpu="%s"' % arch,)
+ gn_args = ANDROID_ARGS + (f'target_cpu="{arch}"',)
print('\n\033[32mConfiguring %-20s[%s]\033[0m' % (config_name, ','.join(gn_args)))
out_dir = os.path.join(perfetto_dir, 'out', config_name)
diff --git a/protos/perfetto/metrics/perfetto_merged_metrics.proto b/protos/perfetto/metrics/perfetto_merged_metrics.proto
index 40c64e2..eef7949 100644
--- a/protos/perfetto/metrics/perfetto_merged_metrics.proto
+++ b/protos/perfetto/metrics/perfetto_merged_metrics.proto
@@ -55,13 +55,14 @@
// Begin of protos/perfetto/metrics/android/android_anomaly_metric.proto
-// Detects outlier scenarios in different Android Systems in a trace. For now,
-// this just detects high binder transaction rates. In the future, there could
-// be others like garbage_collection, CPU, broadcasts, etc.
+// Detects outlier scenarios in different Android Systems in a trace. For now, this just
+// detects high binder transaction rates. In the future, there could be others
+// like garbage_collection, CPU, broadcasts, etc.
message AndroidAnomalyMetric {
+
enum Unit {
- UNIT_UNSPECIFIED = 0;
- COUNT_PER_SECOND = 1;
+ UNIT_UNSPECIFIED = 0;
+ COUNT_PER_SECOND = 1;
}
// For anomalies related to a particular process.
@@ -73,13 +74,11 @@
}
// Binder subsystem outliers with the following aggegations:
- // 1. Max incoming binder transaction count from each process over a one
- // second sliding window.
- // 2. Max outgoing binder transaction count from each process over a one
- // second sliding window.
+ // 1. Max incoming binder transaction count from each process over a one second sliding window.
+ // 2. Max outgoing binder transaction count from each process over a one second sliding window.
message Binder {
- repeated ProcessAnomaly max_incoming_process_count_per_second = 1;
- repeated ProcessAnomaly max_outgoing_process_count_per_second = 2;
+ repeated ProcessAnomaly max_incoming_process_count_per_second = 1;
+ repeated ProcessAnomaly max_outgoing_process_count_per_second = 2;
}
optional Binder binder = 1;
@@ -91,26 +90,26 @@
// Blocking call on the main thread.
message AndroidBlockingCall {
- // Name of the blocking call
- optional string name = 1;
- // Number of times it happened within the CUJ
- optional int64 cnt = 2;
- // Total duration within the CUJ
- optional int64 total_dur_ms = 3;
- // Maximal duration within the CUJ
- optional int64 max_dur_ms = 4;
- // Minimal duration within the CUJ
- optional int64 min_dur_ms = 5;
- // Total duration within the CUJ in nanoseconds
- optional int64 total_dur_ns = 6;
- // Maximal duration within the CUJ in nanoseconds
- optional int64 max_dur_ns = 7;
- // Minimal duration within the CUJ in nanoseconds
- optional int64 min_dur_ns = 8;
- // Avg duration within the CUJ
- optional int64 avg_dur_ms = 9;
- // Avg duration within the CUJ in nanoseconds
- optional int64 avg_dur_ns = 10;
+ // Name of the blocking call
+ optional string name = 1;
+ // Number of times it happened within the CUJ
+ optional int64 cnt = 2;
+ // Total duration within the CUJ
+ optional int64 total_dur_ms = 3;
+ // Maximal duration within the CUJ
+ optional int64 max_dur_ms = 4;
+ // Minimal duration within the CUJ
+ optional int64 min_dur_ms = 5;
+ // Total duration within the CUJ in nanoseconds
+ optional int64 total_dur_ns = 6;
+ // Maximal duration within the CUJ in nanoseconds
+ optional int64 max_dur_ns = 7;
+ // Minimal duration within the CUJ in nanoseconds
+ optional int64 min_dur_ns = 8;
+ // Avg duration within the CUJ
+ optional int64 avg_dur_ms = 9;
+ // Avg duration within the CUJ in nanoseconds
+ optional int64 avg_dur_ns = 10;
}
// End of protos/perfetto/metrics/android/android_blocking_call.proto
@@ -187,32 +186,32 @@
// Blocking call per frame on the main thread.
message AndroidBlockingCallPerFrame {
- // Name of the blocking call
- optional string name = 1;
- // Maximal duration within a frame.
- optional int64 max_dur_per_frame_ms = 2;
- // Maximal duration within a frame in nanoseconds
- optional int64 max_dur_per_frame_ns = 3;
- // Mean duration within the CUJ
- optional int64 mean_dur_per_frame_ms = 4;
- // Mean duration within the CUJ in nanoseconds
- optional int64 mean_dur_per_frame_ns = 5;
- // Max count in a frame
- optional int64 max_cnt_per_frame = 6;
- // Mean count in a frame
- optional double mean_cnt_per_frame = 7;
+ // Name of the blocking call
+ optional string name = 1;
+ // Maximal duration within a frame.
+ optional int64 max_dur_per_frame_ms = 2;
+ // Maximal duration within a frame in nanoseconds
+ optional int64 max_dur_per_frame_ns = 3;
+ // Mean duration within the CUJ
+ optional int64 mean_dur_per_frame_ms = 4;
+ // Mean duration within the CUJ in nanoseconds
+ optional int64 mean_dur_per_frame_ns = 5;
+ // Max count in a frame
+ optional int64 max_cnt_per_frame = 6;
+ // Mean count in a frame
+ optional double mean_cnt_per_frame = 7;
}
// End of protos/perfetto/metrics/android/android_blocking_call_per_frame.proto
// Begin of protos/perfetto/metrics/android/android_blocking_calls_cuj_per_frame_metric.proto
-// Blocking calls per frame inside Android jank CUJs. Shows count and duration
-// for each.
+// Blocking calls per frame inside Android jank CUJs. Shows count and duration for each.
message AndroidCujBlockingCallsPerFrameMetric {
repeated Cuj cuj = 1;
message Cuj {
+
// Name of the CUJ, extracted from the CUJ jank trace marker.
// For example SHADE_EXPAND_COLLAPSE from J<SHADE_EXPAND_COLLAPSE>.
optional string name = 1;
@@ -321,7 +320,7 @@
optional double avg_duration = 2;
optional int64 max_duration = 3;
optional int64 sum_duration = 4;
- }
+}
optional ProcessStartAggregation full_trace_process_start_aggregation = 6;
optional ProcessStartAggregation post_boot_process_start_aggregation = 7;
optional GarbageCollectionAggregation full_trace_gc_aggregation = 8;
@@ -337,13 +336,11 @@
repeated OomAdjBucketDurationAggregation
post_boot_oom_adj_bucket_duration_agg_by_process = 14;
repeated OomAdjDurationAggregation post_boot_oom_adj_duration_agg = 15;
- repeated BroadcastCountAggregation
- post_boot_broadcast_process_count_by_intent = 16;
+ repeated BroadcastCountAggregation post_boot_broadcast_process_count_by_intent = 16;
repeated BroadcastCountAggregation post_boot_broadcast_count_by_process = 17;
- repeated BroadcastDurationAggregation
- post_boot_brodcast_duration_agg_by_intent = 18;
- repeated BroadcastDurationAggregation
- post_boot_brodcast_duration_agg_by_process = 19;
+ repeated BroadcastDurationAggregation post_boot_brodcast_duration_agg_by_intent = 18;
+ repeated BroadcastDurationAggregation post_boot_brodcast_duration_agg_by_process = 19;
+
}
// End of protos/perfetto/metrics/android/android_boot.proto
@@ -439,26 +436,26 @@
// Begin of protos/perfetto/metrics/android/android_broadcasts_metric.proto
-// Provides aggregated information about broadcasts
-message AndroidBroadcastsMetric {
- // Next id: 5
- // Stats for Broadcasts aggregated with count.
- message BroadcastCountAggregation {
- optional string name = 1;
- optional int64 count = 2;
+ // Provides aggregated information about broadcasts
+ message AndroidBroadcastsMetric {
+ // Next id: 5
+ // Stats for Broadcasts aggregated with count.
+ message BroadcastCountAggregation {
+ optional string name = 1;
+ optional int64 count = 2;
+ }
+ // Stats for Broadcasts aggregated with duration.
+ message BroadcastDurationAggregation {
+ optional string name = 1;
+ optional double avg_duration = 2;
+ optional int64 max_duration = 3;
+ optional int64 sum_duration = 4;
+ }
+ repeated BroadcastCountAggregation process_count_by_intent = 1;
+ repeated BroadcastCountAggregation broadcast_count_by_process = 2;
+ repeated BroadcastDurationAggregation brodcast_duration_agg_by_intent = 3;
+ repeated BroadcastDurationAggregation brodcast_duration_agg_by_process = 4;
}
- // Stats for Broadcasts aggregated with duration.
- message BroadcastDurationAggregation {
- optional string name = 1;
- optional double avg_duration = 2;
- optional int64 max_duration = 3;
- optional int64 sum_duration = 4;
- }
- repeated BroadcastCountAggregation process_count_by_intent = 1;
- repeated BroadcastCountAggregation broadcast_count_by_process = 2;
- repeated BroadcastDurationAggregation brodcast_duration_agg_by_intent = 3;
- repeated BroadcastDurationAggregation brodcast_duration_agg_by_process = 4;
-}
// End of protos/perfetto/metrics/android/android_broadcasts_metric.proto
@@ -472,12 +469,10 @@
// The count of frames with this jank type
optional int64 total_count = 2;
- // The count of frames with this jank type and present type =
- // PRESENT_UNSPECIFIED
+ // The count of frames with this jank type and present type = PRESENT_UNSPECIFIED
optional int64 present_unspecified_count = 3;
- // The count of frames with this jank type and present type =
- // PRESENT_ON_TIME
+ // The count of frames with this jank type and present type = PRESENT_ON_TIME
optional int64 present_on_time_count = 4;
// The count of frames with this jank type and present type = PRESENT_LATE
@@ -486,12 +481,10 @@
// The count of frames with this jank type and present type = PRESENT_EARLY
optional int64 present_early_count = 6;
- // The count of frames with this jank type and present type =
- // PRESENT_DROPPED
+ // The count of frames with this jank type and present type = PRESENT_DROPPED
optional int64 present_dropped_count = 7;
- // The count of frames with this jank type and present type =
- // PRESENT_UNKNOWN
+ // The count of frames with this jank type and present type = PRESENT_UNKNOWN
optional int64 present_unknown_count = 8;
}
@@ -533,6 +526,7 @@
reserved 1;
}
+
// End of protos/perfetto/metrics/android/android_frame_timeline_metric.proto
// Begin of protos/perfetto/metrics/android/android_garbage_collection_stats.proto
@@ -676,8 +670,7 @@
// Begin of protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto
-// Blocking calls inside System UI Notifications. Shows count and total duration
-// for each.
+// Blocking calls inside System UI Notifications. Shows count and total duration for each.
message AndroidSysUINotificationsBlockingCallsMetric {
repeated AndroidBlockingCall blocking_calls = 1;
}
@@ -686,7 +679,7 @@
// Begin of protos/perfetto/metrics/android/anr_metric.proto
-message AndroidAnrMetric {
+ message AndroidAnrMetric {
repeated Anr anr = 1;
// Next id: 12
@@ -1007,6 +1000,7 @@
// idea about performance and cpu usage when using codec
// framework
message AndroidCodecMetrics {
+
// profile details in messages
message Detail {
// was thread_name
@@ -1122,8 +1116,8 @@
optional uint32 duplicate_frames_logged = 2;
// Stat that reports the number of dpu underrrun occurs count.
- // Deprecated as of 04/2025
- optional uint32 total_dpu_underrun_count = 3 [deprecated = true];
+ optional uint32 total_dpu_underrun_count = 3;
+
message RefreshRateStat {
// The refresh rate value (the number of frames per second)
@@ -1155,24 +1149,6 @@
}
optional UpdatePowerState update_power_state = 6;
-
- message DpuUnderrunDetail {
- // display_id
- optional string name = 1;
-
- // The number of dpu underrun occurs.
- optional uint32 dpu_underrun_count = 2;
- }
-
- message DpuState {
- // Stat that reports the number of dpu underrrun occurs count.
- optional uint32 total_dpu_underrun_count = 1;
-
- // Dpu underun count for differnt display_id.
- repeated DpuUnderrunDetail dpu_underrun_detail = 2;
- }
-
- optional DpuState dpu_state = 7;
}
// End of protos/perfetto/metrics/android/display_metrics.proto
@@ -1188,17 +1164,17 @@
optional int32 delta_bytes = 2;
}
- optional double avg_size_bytes = 1;
- optional double min_size_bytes = 2;
- optional double max_size_bytes = 3;
+ optional double avg_size_bytes = 1;
+ optional double min_size_bytes = 2;
+ optional double max_size_bytes = 3;
- // Total allocation size.
- // Essentially the sum of positive allocs.
- optional double total_alloc_size_bytes = 4;
+ // Total allocation size.
+ // Essentially the sum of positive allocs.
+ optional double total_alloc_size_bytes = 4;
- // Total delta size (bytes allocated but not freed during the trace)
- optional int32 total_delta_bytes = 5;
- repeated ProcessStats process_stats = 6;
+ // Total delta size (bytes allocated but not freed during the trace)
+ optional int32 total_delta_bytes = 5;
+ repeated ProcessStats process_stats = 6;
}
// End of protos/perfetto/metrics/android/dma_heap_metric.proto
@@ -1206,12 +1182,12 @@
// Begin of protos/perfetto/metrics/android/dvfs_metric.proto
message AndroidDvfsMetric {
+
message BandStat {
// Operating frequency
optional int32 freq_value = 1;
- // Percentage of duration in this operating frequency compared to all
- // frequencies
+ // Percentage of duration in this operating frequency compared to all frequencies
optional double percentage = 2;
// Total duration in ns when the state was in this operating frequency
@@ -1348,28 +1324,24 @@
// Begin of protos/perfetto/metrics/android/hwcomposer.proto
message AndroidHwcomposerMetrics {
- // Counts the number of composition total layers in the trace. (non-weighted
- // average)
+ // Counts the number of composition total layers in the trace. (non-weighted average)
optional double composition_total_layers = 1;
- // Counts the number of composition dpu layers in the trace. (non-weighted
- // average)
+ // Counts the number of composition dpu layers in the trace. (non-weighted average)
optional double composition_dpu_layers = 2;
- // Counts the number of composition gpu layers in the trace. (non-weighted
- // average)
+ // Counts the number of composition gpu layers in the trace. (non-weighted average)
optional double composition_gpu_layers = 3;
- // Counts the number of composition dpu cached layers in the trace.
- // (non-weighted average)
+ // Counts the number of composition dpu cached layers in the trace. (non-weighted average)
optional double composition_dpu_cached_layers = 4;
// Counts the number of composition surfaceflinger cached layers in the trace.
// (non-weighted average)
optional double composition_sf_cached_layers = 5;
- // Counts the number of composition rounded corner decoration layers in the
- // trace. (non-weighted average)
+ // Counts the number of composition rounded corner decoration layers in the trace.
+ // (non-weighted average)
optional double composition_rcd_layers = 15;
// Counts how many times validateDisplay is skipped.
@@ -1378,8 +1350,8 @@
// Counts how many times validateDisplay cannot be skipped.
optional int32 unskipped_validation_count = 7;
- // Counts how many times validateDisplay is already separated from
- // presentDisplay since the beginning.
+ // Counts how many times validateDisplay is already separated from presentDisplay
+ // since the beginning.
optional int32 separated_validation_count = 8;
// Counts how many unhandled validation cases which might be caused by errors.
@@ -1421,28 +1393,24 @@
// Display ID in HWC
optional string display_id = 1;
- // Counts the number of composition total layers in the trace. (non-weighted
- // average)
+ // Counts the number of composition total layers in the trace. (non-weighted average)
optional double composition_total_layers = 2;
- // Counts the number of composition dpu layers in the trace. (non-weighted
- // average)
+ // Counts the number of composition dpu layers in the trace. (non-weighted average)
optional double composition_dpu_layers = 3;
- // Counts the number of composition gpu layers in the trace. (non-weighted
- // average)
+ // Counts the number of composition gpu layers in the trace. (non-weighted average)
optional double composition_gpu_layers = 4;
- // Counts the number of composition dpu cached layers in the trace.
- // (non-weighted average)
+ // Counts the number of composition dpu cached layers in the trace. (non-weighted average)
optional double composition_dpu_cached_layers = 5;
- // Counts the number of composition surfaceflinger cached layers in the
- // trace. (non-weighted average)
+ // Counts the number of composition surfaceflinger cached layers in the trace.
+ // (non-weighted average)
optional double composition_sf_cached_layers = 6;
- // Counts the number of composition rounded corner decoration layers in the
- // trace. (non-weighted average)
+ // Counts the number of composition rounded corner decoration layers in the trace.
+ // (non-weighted average)
optional double composition_rcd_layers = 7;
// Counts how many times validateDisplay is skipped.
@@ -1451,12 +1419,11 @@
// Counts how many times validateDisplay cannot be skipped.
optional int32 unskipped_validation_count = 9;
- // Counts how many times validateDisplay is already separated from
- // presentDisplay since the beginning.
+ // Counts how many times validateDisplay is already separated from presentDisplay
+ // since the beginning.
optional int32 separated_validation_count = 10;
- // Counts how many unhandled validation cases which might be caused by
- // errors.
+ // Counts how many unhandled validation cases which might be caused by errors.
optional int32 unknown_validation_count = 11;
// the average of overall hwcomposer execution time.
@@ -1487,53 +1454,52 @@
// CPU time spent on RenderThread in milliseconds.
optional int64 rt_cpu_time_ms = 2;
- // Number of frames drawn on RenderThread, followed by max/min/avg CPU time to
- // draw a frame in nanoseconds.
+ // Number of frames drawn on RenderThread, followed by max/min/avg CPU time to draw a frame
+ // in nanoseconds.
optional uint32 draw_frame_count = 3;
optional int64 draw_frame_max = 4;
optional int64 draw_frame_min = 5;
optional double draw_frame_avg = 6;
- // Number of GPU commands flushes and max/min/avg time per flush in
- // nanoseconds.
+ // Number of GPU commands flushes and max/min/avg time per flush in nanoseconds.
optional uint32 flush_count = 7;
optional int64 flush_max = 8;
optional int64 flush_min = 9;
optional double flush_avg = 10;
- // Number of View tree preparation counts and max/min/avg time to traverse the
- // tree in nanoseconds.
+ // Number of View tree preparation counts and max/min/avg time to traverse the tree in
+ // nanoseconds.
optional uint32 prepare_tree_count = 11;
optional int64 prepare_tree_max = 12;
optional int64 prepare_tree_min = 13;
optional double prepare_tree_avg = 14;
- // Number of times the GPU rendered a frame and max/min/avg time for GPU to
- // finish rendering in in nanoseconds.
+ // Number of times the GPU rendered a frame and max/min/avg time for GPU to finish rendering in
+ // in nanoseconds.
optional uint32 gpu_completion_count = 15;
optional int64 gpu_completion_max = 16;
optional int64 gpu_completion_min = 17;
optional double gpu_completion_avg = 18;
- // Number of times a frame was recorded/serialized in a display list on the UI
- // thread with max/min/avg time in nanoseconds.
+ // Number of times a frame was recorded/serialized in a display list on the UI thread with
+ // max/min/avg time in nanoseconds.
optional uint32 ui_record_count = 19;
optional int64 ui_record_max = 20;
optional int64 ui_record_min = 21;
optional double ui_record_avg = 22;
- // number of unique shader programs that were used to render frames, followed
- // by total and average times to prepare a shader in nanoseconds.
+ // number of unique shader programs that were used to render frames, followed by total and average
+ // times to prepare a shader in nanoseconds.
optional uint32 shader_compile_count = 23;
optional int64 shader_compile_time = 24;
optional double shader_compile_avg = 25;
- // number of shader programs loaded from the disk cache, followed by total
- // time and average time to prepare a shader in nanoseconds.
+ // number of shader programs loaded from the disk cache, followed by total time and average time
+ // to prepare a shader in nanoseconds.
optional uint32 cache_hit_count = 26;
optional int64 cache_hit_time = 27;
optional double cache_hit_avg = 28;
- // number of shader programs compiled/linked, followed by total time and
- // average time to prepare a shader in nanoseconds.
+ // number of shader programs compiled/linked, followed by total time and average time to prepare
+ // a shader in nanoseconds.
optional uint32 cache_miss_count = 29;
optional int64 cache_miss_time = 30;
optional double cache_miss_avg = 31;
@@ -1543,8 +1509,7 @@
optional int64 graphics_cpu_mem_min = 33;
optional double graphics_cpu_mem_avg = 34;
- // max/min/avg GPU memory used by HWUI at the end of a frame excluding
- // textures.
+ // max/min/avg GPU memory used by HWUI at the end of a frame excluding textures.
optional int64 graphics_gpu_mem_max = 35;
optional int64 graphics_gpu_mem_min = 36;
optional double graphics_gpu_mem_avg = 37;
@@ -1554,8 +1519,7 @@
optional int64 texture_mem_min = 39;
optional double texture_mem_avg = 40;
- // max/min/avg memory used by HWUI at the end of a frame. This is a sum of
- // previous 3 categories.
+ // max/min/avg memory used by HWUI at the end of a frame. This is a sum of previous 3 categories.
optional int64 all_mem_max = 41;
optional int64 all_mem_min = 42;
optional double all_mem_avg = 43;
@@ -1607,17 +1571,17 @@
// Note: this generates a lot of data so should not be requested unless it
// is clear that this data is necessary.
message AndroidIoUnaggregated {
- // Next id: 2
- message F2fsWriteUnaggreagatedStat {
- optional uint32 tid = 1;
- optional string thread_name = 2;
- optional uint32 pid = 3;
- optional string process_name = 4;
- optional int64 ino = 5;
- optional int64 dev = 6;
- }
- // F2fs write stats which are grouped by thread and inode.
- repeated F2fsWriteUnaggreagatedStat f2fs_write_unaggregated_stats = 1;
+ // Next id: 2
+ message F2fsWriteUnaggreagatedStat {
+ optional uint32 tid = 1;
+ optional string thread_name = 2;
+ optional uint32 pid = 3;
+ optional string process_name = 4;
+ optional int64 ino = 5;
+ optional int64 dev = 6;
+ }
+ // F2fs write stats which are grouped by thread and inode.
+ repeated F2fsWriteUnaggreagatedStat f2fs_write_unaggregated_stats = 1;
}
// End of protos/perfetto/metrics/android/io_unagg_metric.proto
@@ -1659,7 +1623,7 @@
// over threshold count
optional int64 over_threshold_count = 2;
// anomaly ratio (over threshold count / total count)
- optional double anomaly_ratio = 3;
+ optional double anomaly_ratio= 3;
}
message IrqRuntimeMetric {
// max runtime of IRQ tasks
@@ -1677,6 +1641,7 @@
optional IrqRuntimeMetric sw_irq = 2;
}
+
// End of protos/perfetto/metrics/android/irq_runtime_metric.proto
// Begin of protos/perfetto/metrics/android/jank_cuj_metric.proto
@@ -2066,8 +2031,8 @@
// Begin of protos/perfetto/metrics/android/monitor_contention_agg_metric.proto
-// This metric provides aggregated information about monitor contention graph
-// in a trace
+ // This metric provides aggregated information about monitor contention graph
+ // in a trace
message AndroidMonitorContentionAggMetric {
// Next id: 2
// Stats for Monitor contention aggregated by process.
@@ -2145,6 +2110,7 @@
// Metrics for Multiuser events, such as switching users.
message AndroidMultiuserMetric {
+
// Holds the data for a Multiuser event.
message EventData {
// Duration of the event (in milliseconds).
@@ -2156,15 +2122,12 @@
optional int32 user_id = 1;
// The name of the process.
optional string process_name = 2;
- // The number of CPU cycles (in megacycles) spent by that process during
- // the event.
+ // The number of CPU cycles (in megacycles) spent by that process during the event.
optional int32 cpu_mcycles = 3;
- // The ratio of this process's cycles to the total for all processes,
- // expressed as a percentage.
+ // The ratio of this process's cycles to the total for all processes, expressed as a percentage.
optional float cpu_percentage = 4;
- // General identifier for this usage source: determined from the process
- // name, user, etc. Should be stable across multiple runs (i.e. does not
- // print the user_id directly).
+ // General identifier for this usage source: determined from the process name, user, etc.
+ // Should be stable across multiple runs (i.e. does not print the user_id directly).
optional string identifier = 5;
}
repeated CpuUsage cpu_usage = 2;
@@ -2421,6 +2384,7 @@
repeated RtSlice longest_rt_slices = 3;
}
+
// End of protos/perfetto/metrics/android/rt_runtime_metric.proto
// Begin of protos/perfetto/metrics/android/simpleperf.proto
@@ -2831,7 +2795,7 @@
// Information for the ThreadSections
message TraceThreadSectionInfo {
repeated TraceThreadSection thread_section = 1;
- optional int64 start_timestamp = 2;
+ optional int64 start_timestamp = 2;
optional int64 end_timestamp = 3;
}
@@ -3033,10 +2997,8 @@
// Shows count, average duration, and max duration for each.
message SysuiNotifShadeListBuilderMetric {
optional SysUiSlicePerformanceStatisticalData all_slices_performance = 1;
- optional SysUiSlicePerformanceStatisticalData
- slices_with_inflation_performance = 2;
- optional SysUiSlicePerformanceStatisticalData
- slices_with_modification_performance = 3;
+ optional SysUiSlicePerformanceStatisticalData slices_with_inflation_performance = 2;
+ optional SysUiSlicePerformanceStatisticalData slices_with_modification_performance = 3;
// Data row for a single slice
message SliceDuration {
@@ -3158,7 +3120,6 @@
optional string period_name = 2;
optional int64 period_dur = 3;
optional AndroidWattsonCpuSubsystemEstimate cpu_subsystem = 4;
- optional AndroidWattsonGpuSubsystemEstimate gpu_subsystem = 5;
}
message AndroidWattsonCpuSubsystemEstimate {
@@ -3199,11 +3160,6 @@
optional float estimated_mws = 2;
}
-message AndroidWattsonGpuSubsystemEstimate {
- optional float estimated_mw = 1;
- optional float estimated_mws = 2;
-}
-
// End of protos/perfetto/metrics/android/wattson_in_time_period.proto
// Begin of protos/perfetto/metrics/android/wattson_tasks_attribution.proto
@@ -3568,9 +3524,6 @@
// WebView metrics.
extensions 2001 to 2500;
- // AndroidXR metrics.
- extensions 2501 to 3000;
-
// DO NOT ADD ANY OTHER FIELDS HERE. ADDITION OF NEW v1 METRICS IS NO LONGER
// ALLOWED. PLEASE USE METRICS v2 INSTEAD.
}
diff --git a/protos/perfetto/perfetto_sql/structured_query.proto b/protos/perfetto/perfetto_sql/structured_query.proto
index 995740e..13e399e 100644
--- a/protos/perfetto/perfetto_sql/structured_query.proto
+++ b/protos/perfetto/perfetto_sql/structured_query.proto
@@ -90,22 +90,17 @@
message Sql {
// The SQL string. Required.
//
- // `sql` can contain multiple, semi-colon separated statements but must
- // adhere to the following principles:
- // 1) Only the final statement can return results (i.e. be a `SELECT`
- // statement): every other statement must be a statement returning no output
- // (e.g. INCLUDE PERFETTO MODULE, CREATE PERFETTO TABLE etc.).
- // 2) The final statement *must* be a valid `SELECT` statement returning
- // results with at least one column.
+ // Note: this string is currently required to be a single well-formed select
+ // statement. This means you cannot use CREATE PERFETTO TABLE/VIEW but *can*
+ // use WITH clauses, UNION and INTERSECT. This restriction may be dropped
+ // in the future.
optional string sql = 1;
// The name of columns which will be returned by the SQL. Required.
repeated string column_names = 2;
- // DEPRECATED, as `sql` field supports multi-statement queries.
- //
- // SQL string that has to be run before running the SQL.
- // Supports multi statement queries. Optional.
+ // SQL string that has to be run before running the SQL. Supports multi
+ // statement queries. Optional.
optional string preamble = 3;
}
diff --git a/protos/perfetto/trace_processor/trace_processor.proto b/protos/perfetto/trace_processor/trace_processor.proto
index b7bfd78..914d4e0 100644
--- a/protos/perfetto/trace_processor/trace_processor.proto
+++ b/protos/perfetto/trace_processor/trace_processor.proto
@@ -21,7 +21,6 @@
import "protos/perfetto/common/descriptor.proto";
import "protos/perfetto/trace_processor/metatrace_categories.proto";
import "protos/perfetto/perfetto_sql/structured_query.proto";
-import "protos/perfetto/trace_summary/file.proto";
// This file defines the schema for {,un}marshalling arguments and return values
// when interfacing to the trace processor binary interface.
@@ -109,7 +108,6 @@
TPM_RESET_TRACE_PROCESSOR = 11;
TPM_REGISTER_SQL_PACKAGE = 13;
TPM_ANALYZE_STRUCTURED_QUERY = 14;
- TPM_SUMMARIZE_TRACE = 15;
}
oneof type {
@@ -145,8 +143,6 @@
RegisterSqlPackageArgs register_sql_package_args = 108;
// For TPM_ANALYZE_STRUCTURED_QUERY.
AnalyzeStructuredQueryArgs analyze_structured_query_args = 109;
- // For TPM_SUMMARIZE_TRACE.
- TraceSummaryArgs trace_summary_args = 110;
// TraceProcessorMethod response args.
// For TPM_APPEND_TRACE_DATA.
@@ -167,8 +163,6 @@
FinalizeDataResult finalize_data_result = 212;
// For TPM_ANALYZE_STRUCTURED_QUERY.
AnalyzeStructuredQueryResult analyze_structured_query_result = 213;
- // For TPM_SUMMARIZE_TRACE.
- TraceSummaryResult trace_summary_result = 214;
}
// Previously: RawQueryArgs for TPM_QUERY_RAW_DEPRECATED
@@ -390,27 +384,3 @@
optional string error = 1;
repeated StructuredQueryResult results = 2;
}
-
-message TraceSummaryArgs {
- message ComputationSpec {
- repeated string metric_ids = 1;
- optional bool run_all_metrics = 3;
- optional string metadata_query_id = 2;
- }
- enum Format {
- BINARY_PROTOBUF = 0;
- TEXTPROTO = 1;
- }
- repeated TraceSummarySpec proto_specs = 1;
- repeated string textproto_specs = 2;
- optional ComputationSpec computation_spec = 3;
- optional Format output_format = 4;
-}
-
-message TraceSummaryResult {
- oneof summary {
- bytes proto_summary = 1;
- string textproto_summary = 2;
- }
- optional string error = 3;
-}
diff --git a/protos/perfetto/trace_summary/v2_metric.proto b/protos/perfetto/trace_summary/v2_metric.proto
index 1167b14..87b7d51 100644
--- a/protos/perfetto/trace_summary/v2_metric.proto
+++ b/protos/perfetto/trace_summary/v2_metric.proto
@@ -67,7 +67,6 @@
// ```
// id: "memory_per_process_and_cuj"
// dimensions: "process_name"
-// dimensions: "cuj_name"
// value: "avg_rss_and_swap"
// query: {
// interval_intersect: {
@@ -149,25 +148,9 @@
// Required.
optional string id = 1;
- enum DimensionType {
- DIMENSION_TYPE_UNSPECIFIED = 0;
- STRING = 1;
- INT64 = 2;
- DOUBLE = 3;
- }
-
- message DimensionSpec {
- optional string name = 1;
- // The type of the dimension. Must be specified.
- optional DimensionType type = 2;
- }
// The columns from `query` which will act as the "dimensions" for the metric.
// For a given set of dimensions, there must be exactly *one* value emitted.
// Optional.
- // If the `dimensions_specs` field is defined, then the type of each
- // dimension must be specified.
- repeated DimensionSpec dimensions_specs = 5;
- // Either dimensions or dimensions_specs should be defined, but not both.
repeated string dimensions = 2;
// The column from `query` which will act as the "value" for the metric. This
@@ -247,9 +230,6 @@
// The dimensions that `value` should be associated with. The order of
// dimensions matches precisely the order of dimension names given by the
// `spec`.
- // The type of the dimension is infered from the sql column type.
- // In case dimensionSpec is specified, the dimension type must match the
- // type specified in the spec.
message Dimension {
message Null {}
oneof value_oneof {
diff --git a/trace_processor_shell/trace_processor_shell_aarch64 b/trace_processor_shell/trace_processor_shell_aarch64
index f5eff98..b0f4272 100644
--- a/trace_processor_shell/trace_processor_shell_aarch64
+++ b/trace_processor_shell/trace_processor_shell_aarch64
Binary files differ
diff --git a/trace_processor_shell/trace_processor_shell_arm b/trace_processor_shell/trace_processor_shell_arm
index 13d5ee7..18e434d 100644
--- a/trace_processor_shell/trace_processor_shell_arm
+++ b/trace_processor_shell/trace_processor_shell_arm
Binary files differ
diff --git a/trace_processor_shell/trace_processor_shell_x86 b/trace_processor_shell/trace_processor_shell_x86
index 63527b5..fde11d5 100644
--- a/trace_processor_shell/trace_processor_shell_x86
+++ b/trace_processor_shell/trace_processor_shell_x86
Binary files differ
diff --git a/trace_processor_shell/trace_processor_shell_x86_64 b/trace_processor_shell/trace_processor_shell_x86_64
index 56f3889..33504b9 100644
--- a/trace_processor_shell/trace_processor_shell_x86_64
+++ b/trace_processor_shell/trace_processor_shell_x86_64
Binary files differ
diff --git a/tracebox/tracebox_aarch64 b/tracebox/tracebox_aarch64
index 40f5d83..f7e26a3 100644
--- a/tracebox/tracebox_aarch64
+++ b/tracebox/tracebox_aarch64
Binary files differ
diff --git a/tracebox/tracebox_arm b/tracebox/tracebox_arm
index 90c0bf0..41a50e4 100644
--- a/tracebox/tracebox_arm
+++ b/tracebox/tracebox_arm
Binary files differ
diff --git a/tracebox/tracebox_x86 b/tracebox/tracebox_x86
index c291099..4542836 100644
--- a/tracebox/tracebox_x86
+++ b/tracebox/tracebox_x86
Binary files differ
diff --git a/tracebox/tracebox_x86_64 b/tracebox/tracebox_x86_64
index 018a924..a1f703c 100644
--- a/tracebox/tracebox_x86_64
+++ b/tracebox/tracebox_x86_64
Binary files differ