diff options
author | Ioannis Ilkos <ilkos@google.com> | 2019-11-08 05:14:32 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-11-08 05:14:32 -0800 |
commit | dd240ba63a319e5cc6bc8cde80060d12bb5bd336 (patch) | |
tree | de78a1300c8105856f6cf7edae02c6ff70d5393d | |
parent | dae5acdcf3747df4971bf6c0e52cbccd92496ea2 (diff) | |
parent | a131c3d60cf95503c6f1813c026eb6b6d3a81d8f (diff) | |
download | perfetto-dd240ba63a319e5cc6bc8cde80060d12bb5bd336.tar.gz |
Encapsulate the totals on the heap profiles metrics am: 5e3eacac1c
am: a131c3d60c
Change-Id: Ia9960c8d65e188982ae67fef92be683d24be8f8b
4 files changed, 39 insertions, 7 deletions
diff --git a/protos/perfetto/metrics/android/heap_profile_callsites.proto b/protos/perfetto/metrics/android/heap_profile_callsites.proto index ce0bdca1c..d19bba34f 100644 --- a/protos/perfetto/metrics/android/heap_profile_callsites.proto +++ b/protos/perfetto/metrics/android/heap_profile_callsites.proto @@ -51,10 +51,16 @@ message HeapProfileCallsites { } // Callsites per process instance. + // Next id: 6 message InstanceStats { optional uint32 pid = 1; optional string process_name = 2; repeated Callsite callsites = 3; + + // Bytes allocated via malloc but not freed. + optional int64 profile_delta_bytes = 4; + // Bytes allocated via malloc irrespective of whether they were freed. + optional int64 profile_total_bytes = 5; } repeated InstanceStats instance_stats = 1; diff --git a/src/trace_processor/metrics/android/heap_profile_callsites.sql b/src/trace_processor/metrics/android/heap_profile_callsites.sql index a0cd0c49a..ce2aeb432 100644 --- a/src/trace_processor/metrics/android/heap_profile_callsites.sql +++ b/src/trace_processor/metrics/android/heap_profile_callsites.sql @@ -14,6 +14,17 @@ -- limitations under the License. -- +CREATE VIEW memory_delta AS +SELECT upid, SUM(size) AS delta +FROM heap_profile_allocation +GROUP BY 1; + +CREATE VIEW memory_total AS +SELECT upid, SUM(size) AS total +FROM heap_profile_allocation +WHERE size > 0 +GROUP BY 1; + -- Join frames with symbols and mappings to get a textual representation. CREATE TABLE symbolized_frame AS SELECT @@ -205,9 +216,14 @@ CREATE VIEW instance_stats_view AS SELECT HeapProfileCallsites_InstanceStats( 'pid', process.pid, 'process_name', process.name, - 'callsites', repeated_callsite_proto + 'callsites', repeated_callsite_proto, + 'profile_delta_bytes', memory_delta.delta, + 'profile_total_bytes', memory_total.total ) AS instance_stats_proto -FROM process_callsite_proto JOIN process USING (upid); +FROM process_callsite_proto +JOIN memory_total USING (upid) +JOIN memory_delta USING (upid) +JOIN process USING (upid); CREATE VIEW heap_profile_callsites_output AS SELECT HeapProfileCallsites( diff --git a/src/trace_processor/metrics/metrics.descriptor.h b/src/trace_processor/metrics/metrics.descriptor.h index f0a709522..df7696ca6 100644 --- a/src/trace_processor/metrics/metrics.descriptor.h +++ b/src/trace_processor/metrics/metrics.descriptor.h @@ -19,7 +19,7 @@ namespace perfetto { -constexpr std::array<uint8_t, 10216> kMetricsDescriptor{ +constexpr std::array<uint8_t, 10312> kMetricsDescriptor{ {0x0a, 0x98, 0x03, 0x0a, 0x31, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x74, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, @@ -540,14 +540,14 @@ constexpr std::array<uint8_t, 10216> kMetricsDescriptor{ 0x72, 0x74, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x46, 0x69, 0x72, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x46, 0x69, 0x72, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x42, 0x02, 0x48, 0x03, 0x0a, 0xd7, 0x06, 0x0a, 0x3c, 0x70, 0x72, + 0x65, 0x42, 0x02, 0x48, 0x03, 0x0a, 0xb7, 0x07, 0x0a, 0x3c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x74, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x74, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x73, 0x22, 0x81, 0x06, 0x0a, 0x14, 0x48, 0x65, 0x61, 0x70, + 0x74, 0x6f, 0x73, 0x22, 0xe1, 0x06, 0x0a, 0x14, 0x48, 0x65, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, @@ -599,7 +599,7 @@ constexpr std::array<uint8_t, 10216> kMetricsDescriptor{ 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x41, 0x6c, 0x6c, 0x6f, - 0x63, 0x73, 0x1a, 0x92, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x63, 0x73, 0x1a, 0xf2, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, @@ -611,7 +611,15 @@ constexpr std::array<uint8_t, 10216> kMetricsDescriptor{ 0x6f, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x52, 0x09, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x73, 0x42, 0x02, 0x48, 0x03, 0x0a, + 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x6c, + 0x74, 0x61, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x42, 0x02, 0x48, 0x03, 0x0a, 0x8c, 0x02, 0x0a, 0x32, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x74, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, diff --git a/test/metrics/heap_profile_callsites.out b/test/metrics/heap_profile_callsites.out index 6a975bb6b..5f8c14cdc 100644 --- a/test/metrics/heap_profile_callsites.out +++ b/test/metrics/heap_profile_callsites.out @@ -58,5 +58,7 @@ heap_profile_callsites { delta_bytes: 1090 } } + profile_delta_bytes: 1090 + profile_total_bytes: 2100 } } |