Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2306)

Unified Diff: base/trace_event/memory_dump_manager.cc

Issue 2041583003: [tracing] Introduce "allowed_dump_modes" for memory dump config (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@background_config
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/trace_event/memory_dump_manager.cc
diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc
index a2628d9ed655f4a12ab81ceb7a0e491c3661c6ac..134f2c2ca7c89cfd474884e75bc9e9c80952420c 100644
--- a/base/trace_event/memory_dump_manager.cc
+++ b/base/trace_event/memory_dump_manager.cc
@@ -150,6 +150,7 @@ MemoryDumpManager::MemoryDumpManager()
: delegate_(nullptr),
is_coordinator_(false),
memory_tracing_enabled_(0),
+ periodic_dump_timer_(this),
dump_provider_whitelist_(kDumpProviderWhitelist),
tracing_process_id_(kInvalidTracingProcessId),
dumper_registrations_ignored_for_testing_(false),
@@ -356,8 +357,10 @@ void MemoryDumpManager::RequestGlobalDump(
MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail,
const MemoryDumpCallback& callback) {
- // Bail out immediately if tracing is not enabled at all.
- if (!UNLIKELY(subtle::NoBarrier_Load(&memory_tracing_enabled_))) {
+ // Bail out immediately if tracing is not enabled at all or if the dump mode
+ // is not allowed.
+ if (!UNLIKELY(subtle::NoBarrier_Load(&memory_tracing_enabled_)) ||
+ !IsDumpModeAllowed(level_of_detail)) {
if (!callback.is_null())
callback.Run(0u /* guid */, false /* success */);
return;
@@ -648,6 +651,7 @@ void MemoryDumpManager::OnTraceLogEnabled() {
const TraceConfig trace_config =
TraceLog::GetInstance()->GetCurrentTraceConfig();
+ allowed_dump_modes_ = trace_config.memory_dump_config().allowed_dump_modes;
scoped_refptr<MemoryDumpSessionState> session_state =
new MemoryDumpSessionState;
session_state->SetMemoryDumpConfig(trace_config.memory_dump_config());
@@ -780,7 +784,9 @@ ProcessMemoryDump* MemoryDumpManager::ProcessMemoryDumpAsyncState::
return iter->second.get();
}
-MemoryDumpManager::PeriodicGlobalDumpTimer::PeriodicGlobalDumpTimer() {}
+MemoryDumpManager::PeriodicGlobalDumpTimer::PeriodicGlobalDumpTimer(
+ MemoryDumpManager* mdm)
+ : mdm_(mdm) {}
MemoryDumpManager::PeriodicGlobalDumpTimer::~PeriodicGlobalDumpTimer() {
Stop();
@@ -801,12 +807,20 @@ void MemoryDumpManager::PeriodicGlobalDumpTimer::Start(
DCHECK_LE(triggers_list.size(), 3u);
for (const TraceConfig::MemoryDumpConfig::Trigger& config : triggers_list) {
DCHECK_NE(0u, config.periodic_interval_ms);
- if (config.level_of_detail == MemoryDumpLevelOfDetail::LIGHT) {
- DCHECK_EQ(0u, light_dump_period_ms);
- light_dump_period_ms = config.periodic_interval_ms;
- } else if (config.level_of_detail == MemoryDumpLevelOfDetail::DETAILED) {
- DCHECK_EQ(0u, heavy_dump_period_ms);
- heavy_dump_period_ms = config.periodic_interval_ms;
+ switch (config.level_of_detail) {
+ case MemoryDumpLevelOfDetail::BACKGROUND:
+ DCHECK(mdm_->IsDumpModeAllowed(MemoryDumpLevelOfDetail::BACKGROUND));
+ break;
+ case MemoryDumpLevelOfDetail::LIGHT:
+ DCHECK_EQ(0u, light_dump_period_ms);
+ DCHECK(mdm_->IsDumpModeAllowed(MemoryDumpLevelOfDetail::LIGHT));
+ light_dump_period_ms = config.periodic_interval_ms;
+ break;
+ case MemoryDumpLevelOfDetail::DETAILED:
+ DCHECK_EQ(0u, heavy_dump_period_ms);
+ DCHECK(mdm_->IsDumpModeAllowed(MemoryDumpLevelOfDetail::DETAILED));
+ heavy_dump_period_ms = config.periodic_interval_ms;
+ break;
}
min_timer_period_ms =
std::min(min_timer_period_ms, config.periodic_interval_ms);
@@ -840,8 +854,7 @@ void MemoryDumpManager::PeriodicGlobalDumpTimer::RequestPeriodicGlobalDump() {
level_of_detail = MemoryDumpLevelOfDetail::DETAILED;
++periodic_dumps_count_;
- MemoryDumpManager::GetInstance()->RequestGlobalDump(
- MemoryDumpType::PERIODIC_INTERVAL, level_of_detail);
+ mdm_->RequestGlobalDump(MemoryDumpType::PERIODIC_INTERVAL, level_of_detail);
}
} // namespace trace_event

Powered by Google App Engine
This is Rietveld 408576698