| OLD | NEW |
| 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 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/atomic_sequence_num.h" | 10 #include "base/atomic_sequence_num.h" |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 675 return; | 675 return; |
| 676 } | 676 } |
| 677 | 677 |
| 678 // Enable periodic dumps. At the moment the periodic support is limited to at | 678 // Enable periodic dumps. At the moment the periodic support is limited to at |
| 679 // most one low-detail periodic dump and at most one high-detail periodic | 679 // most one low-detail periodic dump and at most one high-detail periodic |
| 680 // dump. If both are specified the high-detail period must be an integer | 680 // dump. If both are specified the high-detail period must be an integer |
| 681 // multiple of the low-level one. | 681 // multiple of the low-level one. |
| 682 g_periodic_dumps_count = 0; | 682 g_periodic_dumps_count = 0; |
| 683 const TraceConfig trace_config = | 683 const TraceConfig trace_config = |
| 684 TraceLog::GetInstance()->GetCurrentTraceConfig(); | 684 TraceLog::GetInstance()->GetCurrentTraceConfig(); |
| 685 const TraceConfig::MemoryDumpConfig& config_list = | 685 session_state_->SetMemoryDumpConfig(trace_config.memory_dump_config()); |
| 686 trace_config.memory_dump_config(); | 686 const std::vector<TraceConfig::MemoryDumpConfig::Trigger>& triggers_list = |
| 687 if (config_list.empty()) | 687 trace_config.memory_dump_config().triggers; |
| 688 if (triggers_list.empty()) |
| 688 return; | 689 return; |
| 689 | 690 |
| 690 uint32_t min_timer_period_ms = std::numeric_limits<uint32_t>::max(); | 691 uint32_t min_timer_period_ms = std::numeric_limits<uint32_t>::max(); |
| 691 uint32_t heavy_dump_period_ms = 0; | 692 uint32_t heavy_dump_period_ms = 0; |
| 692 DCHECK_LE(config_list.size(), 2u); | 693 DCHECK_LE(triggers_list.size(), 2u); |
| 693 for (const TraceConfig::MemoryDumpTriggerConfig& config : config_list) { | 694 for (const TraceConfig::MemoryDumpConfig::Trigger& config : triggers_list) { |
| 694 DCHECK(config.periodic_interval_ms); | 695 DCHECK(config.periodic_interval_ms); |
| 695 if (config.level_of_detail == MemoryDumpLevelOfDetail::DETAILED) | 696 if (config.level_of_detail == MemoryDumpLevelOfDetail::DETAILED) |
| 696 heavy_dump_period_ms = config.periodic_interval_ms; | 697 heavy_dump_period_ms = config.periodic_interval_ms; |
| 697 min_timer_period_ms = | 698 min_timer_period_ms = |
| 698 std::min(min_timer_period_ms, config.periodic_interval_ms); | 699 std::min(min_timer_period_ms, config.periodic_interval_ms); |
| 699 } | 700 } |
| 700 DCHECK_EQ(0u, heavy_dump_period_ms % min_timer_period_ms); | 701 DCHECK_EQ(0u, heavy_dump_period_ms % min_timer_period_ms); |
| 701 g_heavy_dumps_rate = heavy_dump_period_ms / min_timer_period_ms; | 702 g_heavy_dumps_rate = heavy_dump_period_ms / min_timer_period_ms; |
| 702 | 703 |
| 703 periodic_dump_timer_.Start(FROM_HERE, | 704 periodic_dump_timer_.Start(FROM_HERE, |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 779 if (iter == process_dumps.end()) { | 780 if (iter == process_dumps.end()) { |
| 780 std::unique_ptr<ProcessMemoryDump> new_pmd( | 781 std::unique_ptr<ProcessMemoryDump> new_pmd( |
| 781 new ProcessMemoryDump(session_state)); | 782 new ProcessMemoryDump(session_state)); |
| 782 iter = process_dumps.insert(std::make_pair(pid, std::move(new_pmd))).first; | 783 iter = process_dumps.insert(std::make_pair(pid, std::move(new_pmd))).first; |
| 783 } | 784 } |
| 784 return iter->second.get(); | 785 return iter->second.get(); |
| 785 } | 786 } |
| 786 | 787 |
| 787 } // namespace trace_event | 788 } // namespace trace_event |
| 788 } // namespace base | 789 } // namespace base |
| OLD | NEW |