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

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

Issue 1911643002: Add configurable limit to allocations in heap profiler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Formatting changes Created 4 years, 8 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 (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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/trace_config.h" 5 #include "base/trace_event/trace_config.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 const char kSyntheticDelaysParam[] = "synthetic_delays"; 43 const char kSyntheticDelaysParam[] = "synthetic_delays";
44 44
45 const char kSyntheticDelayCategoryFilterPrefix[] = "DELAY("; 45 const char kSyntheticDelayCategoryFilterPrefix[] = "DELAY(";
46 46
47 // String parameters that is used to parse memory dump config in trace config 47 // String parameters that is used to parse memory dump config in trace config
48 // string. 48 // string.
49 const char kMemoryDumpConfigParam[] = "memory_dump_config"; 49 const char kMemoryDumpConfigParam[] = "memory_dump_config";
50 const char kTriggersParam[] = "triggers"; 50 const char kTriggersParam[] = "triggers";
51 const char kPeriodicIntervalParam[] = "periodic_interval_ms"; 51 const char kPeriodicIntervalParam[] = "periodic_interval_ms";
52 const char kModeParam[] = "mode"; 52 const char kModeParam[] = "mode";
53 const char kMinAllocationSize[] = "min_allocation_size_bytes";
ssid 2016/04/20 23:00:30 heap_profiler_min_bucket_size. Since min allocatio
Maria 2016/04/21 00:03:56 Acknowledged.
53 54
54 // Default configuration of memory dumps. 55 // Default configuration of memory dumps.
55 const TraceConfig::MemoryDumpTriggerConfig kDefaultHeavyMemoryDumpTrigger = { 56 const TraceConfig::MemoryDumpTriggerConfig kDefaultHeavyMemoryDumpTrigger = {
56 2000, // periodic_interval_ms 57 2000, // periodic_interval_ms
57 MemoryDumpLevelOfDetail::DETAILED}; 58 MemoryDumpLevelOfDetail::DETAILED};
58 const TraceConfig::MemoryDumpTriggerConfig kDefaultLightMemoryDumpTrigger = { 59 const TraceConfig::MemoryDumpTriggerConfig kDefaultLightMemoryDumpTrigger = {
59 250, // periodic_interval_ms 60 250, // periodic_interval_ms
60 MemoryDumpLevelOfDetail::LIGHT}; 61 MemoryDumpLevelOfDetail::LIGHT};
61 62
62 class ConvertableTraceConfigToTraceFormat 63 class ConvertableTraceConfigToTraceFormat
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 else 117 else
117 InitializeDefault(); 118 InitializeDefault();
118 } 119 }
119 120
120 TraceConfig::TraceConfig(const TraceConfig& tc) 121 TraceConfig::TraceConfig(const TraceConfig& tc)
121 : record_mode_(tc.record_mode_), 122 : record_mode_(tc.record_mode_),
122 enable_sampling_(tc.enable_sampling_), 123 enable_sampling_(tc.enable_sampling_),
123 enable_systrace_(tc.enable_systrace_), 124 enable_systrace_(tc.enable_systrace_),
124 enable_argument_filter_(tc.enable_argument_filter_), 125 enable_argument_filter_(tc.enable_argument_filter_),
125 memory_dump_config_(tc.memory_dump_config_), 126 memory_dump_config_(tc.memory_dump_config_),
127 min_allocation_size_bytes_(tc.min_allocation_size_bytes_),
126 included_categories_(tc.included_categories_), 128 included_categories_(tc.included_categories_),
127 disabled_categories_(tc.disabled_categories_), 129 disabled_categories_(tc.disabled_categories_),
128 excluded_categories_(tc.excluded_categories_), 130 excluded_categories_(tc.excluded_categories_),
129 synthetic_delays_(tc.synthetic_delays_) {} 131 synthetic_delays_(tc.synthetic_delays_) {}
130 132
131 TraceConfig::~TraceConfig() { 133 TraceConfig::~TraceConfig() {
132 } 134 }
133 135
134 TraceConfig& TraceConfig::operator=(const TraceConfig& rhs) { 136 TraceConfig& TraceConfig::operator=(const TraceConfig& rhs) {
135 if (this == &rhs) 137 if (this == &rhs)
136 return *this; 138 return *this;
137 139
138 record_mode_ = rhs.record_mode_; 140 record_mode_ = rhs.record_mode_;
139 enable_sampling_ = rhs.enable_sampling_; 141 enable_sampling_ = rhs.enable_sampling_;
140 enable_systrace_ = rhs.enable_systrace_; 142 enable_systrace_ = rhs.enable_systrace_;
141 enable_argument_filter_ = rhs.enable_argument_filter_; 143 enable_argument_filter_ = rhs.enable_argument_filter_;
142 memory_dump_config_ = rhs.memory_dump_config_; 144 memory_dump_config_ = rhs.memory_dump_config_;
145 min_allocation_size_bytes_ = rhs.min_allocation_size_bytes_;
143 included_categories_ = rhs.included_categories_; 146 included_categories_ = rhs.included_categories_;
144 disabled_categories_ = rhs.disabled_categories_; 147 disabled_categories_ = rhs.disabled_categories_;
145 excluded_categories_ = rhs.excluded_categories_; 148 excluded_categories_ = rhs.excluded_categories_;
146 synthetic_delays_ = rhs.synthetic_delays_; 149 synthetic_delays_ = rhs.synthetic_delays_;
147 return *this; 150 return *this;
148 } 151 }
149 152
150 const TraceConfig::StringList& TraceConfig::GetSyntheticDelayValues() const { 153 const TraceConfig::StringList& TraceConfig::GetSyntheticDelayValues() const {
151 return synthetic_delays_; 154 return synthetic_delays_;
152 } 155 }
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 continue; 512 continue;
510 } 513 }
511 DCHECK_GT(interval, 0); 514 DCHECK_GT(interval, 0);
512 dump_config.periodic_interval_ms = static_cast<uint32_t>(interval); 515 dump_config.periodic_interval_ms = static_cast<uint32_t>(interval);
513 std::string level_of_detail_str; 516 std::string level_of_detail_str;
514 trigger->GetString(kModeParam, &level_of_detail_str); 517 trigger->GetString(kModeParam, &level_of_detail_str);
515 dump_config.level_of_detail = 518 dump_config.level_of_detail =
516 StringToMemoryDumpLevelOfDetail(level_of_detail_str); 519 StringToMemoryDumpLevelOfDetail(level_of_detail_str);
517 memory_dump_config_.push_back(dump_config); 520 memory_dump_config_.push_back(dump_config);
518 } 521 }
522
523 int min_size_bytes = 0;
524 if (!memory_dump_config.GetInteger(kMinAllocationSize, &min_size_bytes)) {
525 min_allocation_size_bytes_ = kDefaultMinAllocationSizeBytes;
526 } else {
527 if (min_size_bytes >= 0)
ssid 2016/04/20 23:00:30 merge with above else, reduces one block. Also th
Maria 2016/04/21 00:03:56 Done.
528 min_allocation_size_bytes_ = (size_t) min_size_bytes;
529 else
530 min_allocation_size_bytes_ = kDefaultMinAllocationSizeBytes;
531 }
532
519 } 533 }
520 534
521 void TraceConfig::SetDefaultMemoryDumpConfig() { 535 void TraceConfig::SetDefaultMemoryDumpConfig() {
522 memory_dump_config_.clear(); 536 memory_dump_config_.clear();
523 memory_dump_config_.push_back(kDefaultHeavyMemoryDumpTrigger); 537 memory_dump_config_.push_back(kDefaultHeavyMemoryDumpTrigger);
524 memory_dump_config_.push_back(kDefaultLightMemoryDumpTrigger); 538 memory_dump_config_.push_back(kDefaultLightMemoryDumpTrigger);
539 min_allocation_size_bytes_ = kDefaultMinAllocationSizeBytes;
525 } 540 }
526 541
527 void TraceConfig::ToDict(base::DictionaryValue& dict) const { 542 void TraceConfig::ToDict(base::DictionaryValue& dict) const {
528 switch (record_mode_) { 543 switch (record_mode_) {
529 case RECORD_UNTIL_FULL: 544 case RECORD_UNTIL_FULL:
530 dict.SetString(kRecordModeParam, kRecordUntilFull); 545 dict.SetString(kRecordModeParam, kRecordUntilFull);
531 break; 546 break;
532 case RECORD_CONTINUOUSLY: 547 case RECORD_CONTINUOUSLY:
533 dict.SetString(kRecordModeParam, kRecordContinuously); 548 dict.SetString(kRecordModeParam, kRecordContinuously);
534 break; 549 break;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 new base::DictionaryValue()); 589 new base::DictionaryValue());
575 trigger_dict->SetInteger(kPeriodicIntervalParam, 590 trigger_dict->SetInteger(kPeriodicIntervalParam,
576 static_cast<int>(config.periodic_interval_ms)); 591 static_cast<int>(config.periodic_interval_ms));
577 trigger_dict->SetString( 592 trigger_dict->SetString(
578 kModeParam, MemoryDumpLevelOfDetailToString(config.level_of_detail)); 593 kModeParam, MemoryDumpLevelOfDetailToString(config.level_of_detail));
579 triggers_list->Append(std::move(trigger_dict)); 594 triggers_list->Append(std::move(trigger_dict));
580 } 595 }
581 596
582 // Empty triggers will still be specified explicitly since it means that 597 // Empty triggers will still be specified explicitly since it means that
583 // the periodic dumps are not enabled. 598 // the periodic dumps are not enabled.
584 memory_dump_config->Set(kTriggersParam, std::move(triggers_list)); 599 memory_dump_config->Set(kTriggersParam, std::move(triggers_list));
ssid 2016/04/20 23:00:30 You should add a line here: memory_dump_config->Se
Maria 2016/04/21 00:03:56 Done.
585 dict.Set(kMemoryDumpConfigParam, std::move(memory_dump_config)); 600 dict.Set(kMemoryDumpConfigParam, std::move(memory_dump_config));
586 } 601 }
587 } 602 }
588 603
589 std::string TraceConfig::ToTraceOptionsString() const { 604 std::string TraceConfig::ToTraceOptionsString() const {
590 std::string ret; 605 std::string ret;
591 switch (record_mode_) { 606 switch (record_mode_) {
592 case RECORD_UNTIL_FULL: 607 case RECORD_UNTIL_FULL:
593 ret = kRecordUntilFull; 608 ret = kRecordUntilFull;
594 break; 609 break;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 str.at(0) == ' ' || 687 str.at(0) == ' ' ||
673 str.at(str.length() - 1) == ' '; 688 str.at(str.length() - 1) == ' ';
674 } 689 }
675 690
676 bool TraceConfig::HasIncludedPatterns() const { 691 bool TraceConfig::HasIncludedPatterns() const {
677 return !included_categories_.empty(); 692 return !included_categories_.empty();
678 } 693 }
679 694
680 } // namespace trace_event 695 } // namespace trace_event
681 } // namespace base 696 } // namespace base
OLDNEW
« base/trace_event/trace_config.h ('K') | « base/trace_event/trace_config.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698