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

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

Issue 2736283003: [memory-infra] MemoryDumpScheduler follows config for time between dumps (Closed)
Patch Set: fix task runner check and rebase. Created 3 years, 9 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/memory_dump_manager.cc ('k') | base/trace_event/memory_dump_scheduler.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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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_SCHEDULER_H 5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_SCHEDULER_H
6 #define BASE_TRACE_EVENT_MEMORY_DUMP_SCHEDULER_H 6 #define BASE_TRACE_EVENT_MEMORY_DUMP_SCHEDULER_H
7 7
8 #include "base/base_export.h" 8 #include "base/base_export.h"
9 #include "base/gtest_prod_util.h" 9 #include "base/gtest_prod_util.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 23 matching lines...) Expand all
34 void AddTrigger(MemoryDumpType trigger_type, 34 void AddTrigger(MemoryDumpType trigger_type,
35 MemoryDumpLevelOfDetail level_of_detail, 35 MemoryDumpLevelOfDetail level_of_detail,
36 uint32_t min_time_between_dumps_ms); 36 uint32_t min_time_between_dumps_ms);
37 37
38 // Starts periodic dumps. 38 // Starts periodic dumps.
39 void NotifyPeriodicTriggerSupported(); 39 void NotifyPeriodicTriggerSupported();
40 40
41 // Starts polling memory total. 41 // Starts polling memory total.
42 void NotifyPollingSupported(); 42 void NotifyPollingSupported();
43 43
44 // Resets time for triggering dump to account for minimum time between the
45 // dumps.
46 void NotifyDumpTriggered();
47
44 // Disables all triggers. 48 // Disables all triggers.
45 void DisableAllTriggers(); 49 void DisableAllTriggers();
46 50
47 private: 51 private:
48 friend class MemoryDumpManagerTest; 52 friend class MemoryDumpManagerTest;
49 FRIEND_TEST_ALL_PREFIXES(MemoryDumpManagerTest, TestPollingOnDumpThread); 53 FRIEND_TEST_ALL_PREFIXES(MemoryDumpManagerTest, TestPollingOnDumpThread);
50 54
51 // Helper class to schdule periodic memory dumps. 55 // Helper class to schdule periodic memory dumps.
52 struct PeriodicTriggerState { 56 struct PeriodicTriggerState {
53 PeriodicTriggerState(); 57 PeriodicTriggerState();
54 ~PeriodicTriggerState(); 58 ~PeriodicTriggerState();
55 59
56 bool is_configured; 60 bool is_configured;
57 61
58 RepeatingTimer timer; 62 RepeatingTimer timer;
59 uint32_t dump_count; 63 uint32_t dump_count;
60 uint32_t min_timer_period_ms; 64 uint32_t min_timer_period_ms;
61 uint32_t light_dumps_rate; 65 uint32_t light_dumps_rate;
62 uint32_t heavy_dumps_rate; 66 uint32_t heavy_dumps_rate;
63 67
64 uint32_t light_dump_period_ms; 68 uint32_t light_dump_period_ms;
65 uint32_t heavy_dump_period_ms; 69 uint32_t heavy_dump_period_ms;
66 70
67 DISALLOW_COPY_AND_ASSIGN(PeriodicTriggerState); 71 DISALLOW_COPY_AND_ASSIGN(PeriodicTriggerState);
68 }; 72 };
69 73
70 struct PollingTriggerState { 74 struct PollingTriggerState {
75 enum State {
76 CONFIGURED, // Polling trigger was added.
77 ENABLED, // Polling is running.
78 DISABLED // Polling is disabled.
79 };
80
71 static const uint32_t kMaxNumMemorySamples = 50; 81 static const uint32_t kMaxNumMemorySamples = 50;
72 82
73 explicit PollingTriggerState( 83 explicit PollingTriggerState(
74 scoped_refptr<SingleThreadTaskRunner> polling_task_runner); 84 scoped_refptr<SingleThreadTaskRunner> polling_task_runner);
75 ~PollingTriggerState(); 85 ~PollingTriggerState();
76 86
77 bool is_configured; 87 // Helper to clear the tracked memory totals and poll count from last dump.
78 bool is_polling_enabled; 88 void ResetTotals();
89
90 State current_state;
79 MemoryDumpLevelOfDetail level_of_detail; 91 MemoryDumpLevelOfDetail level_of_detail;
80 92
81 scoped_refptr<SingleThreadTaskRunner> polling_task_runner; 93 scoped_refptr<SingleThreadTaskRunner> polling_task_runner;
82 uint32_t polling_interval_ms; 94 uint32_t polling_interval_ms;
83 95
84 // Minimum numer of polls after the last dump at which next dump can be 96 // Minimum numer of polls after the last dump at which next dump can be
85 // triggered. 97 // triggered.
86 int min_polls_between_dumps; 98 int min_polls_between_dumps;
87 int num_polls_from_last_dump; 99 int num_polls_from_last_dump;
88 100
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 PeriodicTriggerState periodic_state_; 132 PeriodicTriggerState periodic_state_;
121 PollingTriggerState polling_state_; 133 PollingTriggerState polling_state_;
122 134
123 DISALLOW_COPY_AND_ASSIGN(MemoryDumpScheduler); 135 DISALLOW_COPY_AND_ASSIGN(MemoryDumpScheduler);
124 }; 136 };
125 137
126 } // namespace trace_event 138 } // namespace trace_event
127 } // namespace base 139 } // namespace base
128 140
129 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_SCHEDULER_H 141 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_SCHEDULER_H
OLDNEW
« no previous file with comments | « base/trace_event/memory_dump_manager.cc ('k') | base/trace_event/memory_dump_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698