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

Side by Side Diff: base/trace_event/memory_dump_manager.cc

Issue 1335503003: [tracing] Add test for memory-infra startup tracing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@startup_tracing
Patch Set: Nit Created 5 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/trace_event/memory_dump_manager.h" 5 #include "base/trace_event/memory_dump_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/atomic_sequence_num.h" 9 #include "base/atomic_sequence_num.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 void RequestPeriodicGlobalDump() { 50 void RequestPeriodicGlobalDump() {
51 MemoryDumpArgs::LevelOfDetail dump_level_of_detail; 51 MemoryDumpArgs::LevelOfDetail dump_level_of_detail;
52 if (g_heavy_dumps_rate == 0) { 52 if (g_heavy_dumps_rate == 0) {
53 dump_level_of_detail = MemoryDumpArgs::LevelOfDetail::LOW; 53 dump_level_of_detail = MemoryDumpArgs::LevelOfDetail::LOW;
54 } else { 54 } else {
55 dump_level_of_detail = g_periodic_dumps_count == 0 55 dump_level_of_detail = g_periodic_dumps_count == 0
56 ? MemoryDumpArgs::LevelOfDetail::HIGH 56 ? MemoryDumpArgs::LevelOfDetail::HIGH
57 : MemoryDumpArgs::LevelOfDetail::LOW; 57 : MemoryDumpArgs::LevelOfDetail::LOW;
58 58
59 if (++g_periodic_dumps_count == g_heavy_dumps_rate - 1) 59 if (++g_periodic_dumps_count == g_heavy_dumps_rate)
60 g_periodic_dumps_count = 0; 60 g_periodic_dumps_count = 0;
61 } 61 }
62 62
63 MemoryDumpArgs dump_args = {dump_level_of_detail}; 63 MemoryDumpArgs dump_args = {dump_level_of_detail};
64 MemoryDumpManager::GetInstance()->RequestGlobalDump( 64 MemoryDumpManager::GetInstance()->RequestGlobalDump(
65 MemoryDumpType::PERIODIC_INTERVAL, dump_args); 65 MemoryDumpType::PERIODIC_INTERVAL, dump_args);
66 } 66 }
67 67
68 } // namespace 68 } // namespace
69 69
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 if (instance) 102 if (instance)
103 instance->skip_core_dumpers_auto_registration_for_testing_ = true; 103 instance->skip_core_dumpers_auto_registration_for_testing_ = true;
104 g_instance_for_testing = instance; 104 g_instance_for_testing = instance;
105 } 105 }
106 106
107 MemoryDumpManager::MemoryDumpManager() 107 MemoryDumpManager::MemoryDumpManager()
108 : delegate_(nullptr), 108 : delegate_(nullptr),
109 is_coordinator_(false), 109 is_coordinator_(false),
110 memory_tracing_enabled_(0), 110 memory_tracing_enabled_(0),
111 tracing_process_id_(kInvalidTracingProcessId), 111 tracing_process_id_(kInvalidTracingProcessId),
112 skip_core_dumpers_auto_registration_for_testing_(false), 112 skip_core_dumpers_auto_registration_for_testing_(false) {
113 disable_periodic_dumps_for_testing_(false) {
114 g_next_guid.GetNext(); // Make sure that first guid is not zero. 113 g_next_guid.GetNext(); // Make sure that first guid is not zero.
115 } 114 }
116 115
117 MemoryDumpManager::~MemoryDumpManager() { 116 MemoryDumpManager::~MemoryDumpManager() {
118 TraceLog::GetInstance()->RemoveEnabledStateObserver(this); 117 TraceLog::GetInstance()->RemoveEnabledStateObserver(this);
119 } 118 }
120 119
121 void MemoryDumpManager::Initialize(MemoryDumpManagerDelegate* delegate, 120 void MemoryDumpManager::Initialize(MemoryDumpManagerDelegate* delegate,
122 bool is_coordinator) { 121 bool is_coordinator) {
123 { 122 {
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 for (auto it = dump_providers_.begin(); it != dump_providers_.end(); ++it) { 418 for (auto it = dump_providers_.begin(); it != dump_providers_.end(); ++it) {
420 it->disabled = false; 419 it->disabled = false;
421 it->consecutive_failures = 0; 420 it->consecutive_failures = 0;
422 } 421 }
423 422
424 subtle::NoBarrier_Store(&memory_tracing_enabled_, 1); 423 subtle::NoBarrier_Store(&memory_tracing_enabled_, 1);
425 424
426 // TODO(primiano): This is a temporary hack to disable periodic memory dumps 425 // TODO(primiano): This is a temporary hack to disable periodic memory dumps
427 // when running memory benchmarks until telemetry uses TraceConfig to 426 // when running memory benchmarks until telemetry uses TraceConfig to
428 // enable/disable periodic dumps. See crbug.com/529184 . 427 // enable/disable periodic dumps. See crbug.com/529184 .
429 // The same mechanism should be used to disable periodic dumps in tests.
430 if (!is_coordinator_ || 428 if (!is_coordinator_ ||
431 CommandLine::ForCurrentProcess()->HasSwitch( 429 CommandLine::ForCurrentProcess()->HasSwitch(
432 "enable-memory-benchmarking") || 430 "enable-memory-benchmarking")) {
433 disable_periodic_dumps_for_testing_) {
434 return; 431 return;
435 } 432 }
436 433
437 // Enable periodic dumps. At the moment the periodic support is limited to at 434 // Enable periodic dumps. At the moment the periodic support is limited to at
438 // most one low-detail periodic dump and at most one high-detail periodic 435 // most one low-detail periodic dump and at most one high-detail periodic
439 // dump. If both are specified the high-detail period must be an integer 436 // dump. If both are specified the high-detail period must be an integer
440 // multiple of the low-level one. 437 // multiple of the low-level one.
441 g_periodic_dumps_count = 0; 438 g_periodic_dumps_count = 0;
442 const TraceConfig trace_config = 439 const TraceConfig trace_config =
443 TraceLog::GetInstance()->GetCurrentTraceConfig(); 440 TraceLog::GetInstance()->GetCurrentTraceConfig();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 next_dump_provider(next_dump_provider), 501 next_dump_provider(next_dump_provider),
505 callback(callback), 502 callback(callback),
506 task_runner(MessageLoop::current()->task_runner()) { 503 task_runner(MessageLoop::current()->task_runner()) {
507 } 504 }
508 505
509 MemoryDumpManager::ProcessMemoryDumpAsyncState::~ProcessMemoryDumpAsyncState() { 506 MemoryDumpManager::ProcessMemoryDumpAsyncState::~ProcessMemoryDumpAsyncState() {
510 } 507 }
511 508
512 } // namespace trace_event 509 } // namespace trace_event
513 } // namespace base 510 } // namespace base
OLDNEW
« no previous file with comments | « base/trace_event/memory_dump_manager.h ('k') | base/trace_event/memory_dump_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698