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

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

Issue 1306843006: [tracing] Fix MemoryDumpManager periodic scheduler and improve tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re petrcermak review 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
« no previous file with comments | « base/trace_event/malloc_dump_provider.cc ('k') | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ 5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_
6 #define BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ 6 #define BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_
7 7
8 #include <set> 8 #include <set>
9 9
10 #include "base/atomicops.h" 10 #include "base/atomicops.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 86
87 // Returns a unique id for identifying the processes. The id can be 87 // Returns a unique id for identifying the processes. The id can be
88 // retrieved by child processes only when tracing is enabled. This is 88 // retrieved by child processes only when tracing is enabled. This is
89 // intended to express cross-process sharing of memory dumps on the 89 // intended to express cross-process sharing of memory dumps on the
90 // child-process side, without having to know its own child process id. 90 // child-process side, without having to know its own child process id.
91 uint64 GetTracingProcessId() const; 91 uint64 GetTracingProcessId() const;
92 92
93 // Returns the name for a the allocated_objects dump. Use this to declare 93 // Returns the name for a the allocated_objects dump. Use this to declare
94 // suballocator dumps from other dump providers. 94 // suballocator dumps from other dump providers.
95 // It should not return nullptr after the manager has been initialized. 95 // It will return nullptr if there is no dump provider for the system
96 // allocator registered (which is currently the case for Mac OS).
96 const char* system_allocator_pool_name() const { 97 const char* system_allocator_pool_name() const {
97 return system_allocator_pool_name_; 98 return kSystemAllocatorPoolName;
98 }; 99 };
99 100
100 // Tells the initialization phase to skip scheduling periodic memory dumps. 101 // Tells the initialization phase to skip scheduling periodic memory dumps.
101 void DisablePeriodicDumpsForTesting() { 102 void DisablePeriodicDumpsForTesting() {
102 disable_periodic_dumps_for_testing_ = true; 103 disable_periodic_dumps_for_testing_ = true;
103 } 104 }
104 105
105 private: 106 private:
106 friend struct DefaultDeleter<MemoryDumpManager>; // For the testing instance. 107 friend struct DefaultDeleter<MemoryDumpManager>; // For the testing instance.
107 friend struct DefaultSingletonTraits<MemoryDumpManager>; 108 friend struct DefaultSingletonTraits<MemoryDumpManager>;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 // The thread on which FinalizeDumpAndAddToTrace() (and hence |callback|) 168 // The thread on which FinalizeDumpAndAddToTrace() (and hence |callback|)
168 // should be invoked. This is the thread on which the initial 169 // should be invoked. This is the thread on which the initial
169 // CreateProcessDump() request was called. 170 // CreateProcessDump() request was called.
170 const scoped_refptr<SingleThreadTaskRunner> task_runner; 171 const scoped_refptr<SingleThreadTaskRunner> task_runner;
171 172
172 private: 173 private:
173 DISALLOW_COPY_AND_ASSIGN(ProcessMemoryDumpAsyncState); 174 DISALLOW_COPY_AND_ASSIGN(ProcessMemoryDumpAsyncState);
174 }; 175 };
175 176
176 static const int kMaxConsecutiveFailuresCount; 177 static const int kMaxConsecutiveFailuresCount;
178 static const char* const kSystemAllocatorPoolName;
177 179
178 MemoryDumpManager(); 180 MemoryDumpManager();
179 ~MemoryDumpManager() override; 181 ~MemoryDumpManager() override;
180 182
181 static void SetInstanceForTesting(MemoryDumpManager* instance); 183 static void SetInstanceForTesting(MemoryDumpManager* instance);
182 static void FinalizeDumpAndAddToTrace( 184 static void FinalizeDumpAndAddToTrace(
183 scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state); 185 scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state);
184 static void AbortDumpLocked(MemoryDumpCallback callback, 186 static void AbortDumpLocked(MemoryDumpCallback callback,
185 scoped_refptr<SingleThreadTaskRunner> task_runner, 187 scoped_refptr<SingleThreadTaskRunner> task_runner,
186 uint64 dump_guid); 188 uint64 dump_guid);
(...skipping 27 matching lines...) Expand all
214 // dump_providers_enabled_ list) when tracing is not enabled. 216 // dump_providers_enabled_ list) when tracing is not enabled.
215 subtle::AtomicWord memory_tracing_enabled_; 217 subtle::AtomicWord memory_tracing_enabled_;
216 218
217 // For time-triggered periodic dumps. 219 // For time-triggered periodic dumps.
218 RepeatingTimer<MemoryDumpManager> periodic_dump_timer_; 220 RepeatingTimer<MemoryDumpManager> periodic_dump_timer_;
219 221
220 // The unique id of the child process. This is created only for tracing and is 222 // The unique id of the child process. This is created only for tracing and is
221 // expected to be valid only when tracing is enabled. 223 // expected to be valid only when tracing is enabled.
222 uint64 tracing_process_id_; 224 uint64 tracing_process_id_;
223 225
224 // Name of the allocated_objects dump.
225 const char* system_allocator_pool_name_;
226
227 // Skips the auto-registration of the core dumpers during Initialize(). 226 // Skips the auto-registration of the core dumpers during Initialize().
228 bool skip_core_dumpers_auto_registration_for_testing_; 227 bool skip_core_dumpers_auto_registration_for_testing_;
229 228
230 // When true, the initialization phase does not start the periodic memory 229 // When true, the initialization phase does not start the periodic memory
231 // dumps. 230 // dumps.
232 // TODO(primiano): This should go into TraceConfig. https://goo.gl/5Hj3o0. 231 // TODO(primiano): This should go into TraceConfig. https://goo.gl/5Hj3o0.
233 bool disable_periodic_dumps_for_testing_; 232 bool disable_periodic_dumps_for_testing_;
234 233
235 DISALLOW_COPY_AND_ASSIGN(MemoryDumpManager); 234 DISALLOW_COPY_AND_ASSIGN(MemoryDumpManager);
236 }; 235 };
(...skipping 23 matching lines...) Expand all
260 } 259 }
261 260
262 private: 261 private:
263 DISALLOW_COPY_AND_ASSIGN(MemoryDumpManagerDelegate); 262 DISALLOW_COPY_AND_ASSIGN(MemoryDumpManagerDelegate);
264 }; 263 };
265 264
266 } // namespace trace_event 265 } // namespace trace_event
267 } // namespace base 266 } // namespace base
268 267
269 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ 268 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_
OLDNEW
« no previous file with comments | « base/trace_event/malloc_dump_provider.cc ('k') | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698