diff options
author | Ioannis Ilkos <ilkos@google.com> | 2023-02-14 13:53:33 +0000 |
---|---|---|
committer | Ioannis Ilkos <ilkos@google.com> | 2023-03-13 11:49:44 +0000 |
commit | 638a4b25725353062fb3769f962175a4d3d87abc (patch) | |
tree | 2b3832a6a69c6dd04180ee3d3d6fbe01a609dc26 | |
parent | f35a169ad7118512483e7a04a0efc59a2bdfa504 (diff) | |
download | perfetto-638a4b25725353062fb3769f962175a4d3d87abc.tar.gz |
Populate property with the number of active OOME tracing sessions
Test: manual, atest HeapprofdJavaCtsTest
Bug: 269246893
Bug: 272719059
Change-Id: I171e668d64bbe68eb8d5dd5bcdad31810d0583e6
Merged-In: I171e668d64bbe68eb8d5dd5bcdad31810d0583e6
-rw-r--r-- | src/traced/service/builtin_producer.cc | 23 | ||||
-rw-r--r-- | src/traced/service/builtin_producer.h | 2 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/traced/service/builtin_producer.cc b/src/traced/service/builtin_producer.cc index a2007beb5..0664b5d0d 100644 --- a/src/traced/service/builtin_producer.cc +++ b/src/traced/service/builtin_producer.cc @@ -46,9 +46,11 @@ namespace { constexpr char kHeapprofdDataSourceName[] = "android.heapprofd"; constexpr char kJavaHprofDataSourceName[] = "android.java_hprof"; +constexpr char kJavaHprofOomDataSourceName[] = "android.java_hprof.oom"; constexpr char kTracedPerfDataSourceName[] = "linux.perf"; constexpr char kLazyHeapprofdPropertyName[] = "traced.lazy.heapprofd"; constexpr char kLazyTracedPerfPropertyName[] = "traced.lazy.traced_perf"; +constexpr char kJavaHprofOomActivePropertyName[] = "traced.oome_heap_session.count"; } // namespace @@ -64,6 +66,8 @@ BuiltinProducer::~BuiltinProducer() { SetAndroidProperty(kLazyHeapprofdPropertyName, ""); if (!lazy_traced_perf_.instance_ids.empty()) SetAndroidProperty(kLazyTracedPerfPropertyName, ""); + if (!java_hprof_oome_instances_.empty()) + SetAndroidProperty(kJavaHprofOomActivePropertyName, ""); } void BuiltinProducer::ConnectInProcess(TracingService* svc) { @@ -102,6 +106,11 @@ void BuiltinProducer::OnConnect() { lazy_traced_perf_dsd.set_name(kTracedPerfDataSourceName); endpoint_->RegisterDataSource(lazy_traced_perf_dsd); } + { + DataSourceDescriptor java_hprof_oome_dsd; + java_hprof_oome_dsd.set_name(kJavaHprofOomDataSourceName); + endpoint_->RegisterDataSource(java_hprof_oome_dsd); + } } void BuiltinProducer::SetupDataSource(DataSourceInstanceID ds_id, @@ -120,6 +129,13 @@ void BuiltinProducer::SetupDataSource(DataSourceInstanceID ds_id, lazy_traced_perf_.instance_ids.emplace(ds_id); return; } + + if (ds_config.name() == kJavaHprofOomDataSourceName) { + java_hprof_oome_instances_.emplace(ds_id); + SetAndroidProperty(kJavaHprofOomActivePropertyName, + std::to_string(java_hprof_oome_instances_.size())); + return; + } } void BuiltinProducer::StartDataSource(DataSourceInstanceID ds_id, @@ -152,6 +168,13 @@ void BuiltinProducer::StopDataSource(DataSourceInstanceID ds_id) { MaybeInitiateLazyStop(ds_id, &lazy_heapprofd_, kLazyHeapprofdPropertyName); MaybeInitiateLazyStop(ds_id, &lazy_traced_perf_, kLazyTracedPerfPropertyName); + + auto oome_it = java_hprof_oome_instances_.find(ds_id); + if (oome_it != java_hprof_oome_instances_.end()) { + java_hprof_oome_instances_.erase(oome_it); + SetAndroidProperty(kJavaHprofOomActivePropertyName, + std::to_string(java_hprof_oome_instances_.size())); + } } void BuiltinProducer::MaybeInitiateLazyStop(DataSourceInstanceID ds_id, diff --git a/src/traced/service/builtin_producer.h b/src/traced/service/builtin_producer.h index 9873458ab..7014d4419 100644 --- a/src/traced/service/builtin_producer.h +++ b/src/traced/service/builtin_producer.h @@ -34,6 +34,7 @@ namespace perfetto { // * perfetto metatrace // * lazy heapprofd daemon starter (android only) // * lazy traced_perf daemon starter (android only) +// * java_hprof oom data source counter (android only) class BuiltinProducer : public Producer { public: BuiltinProducer(base::TaskRunner* task_runner, uint32_t lazy_stop_delay_ms); @@ -83,6 +84,7 @@ class BuiltinProducer : public Producer { MetatraceState metatrace_; LazyAndroidDaemonState lazy_heapprofd_; LazyAndroidDaemonState lazy_traced_perf_; + std::set<DataSourceInstanceID> java_hprof_oome_instances_; base::WeakPtrFactory<BuiltinProducer> weak_factory_; // Keep last. }; |