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

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

Issue 2542853002: [tracing] Introduce config to setup memory-infra peak detection (Closed)
Patch Set: fix devtools test. Created 4 years 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 30 matching lines...) Expand all
41 const char kExcludedCategoriesParam[] = "excluded_categories"; 41 const char kExcludedCategoriesParam[] = "excluded_categories";
42 const char kSyntheticDelaysParam[] = "synthetic_delays"; 42 const char kSyntheticDelaysParam[] = "synthetic_delays";
43 43
44 const char kSyntheticDelayCategoryFilterPrefix[] = "DELAY("; 44 const char kSyntheticDelayCategoryFilterPrefix[] = "DELAY(";
45 45
46 // String parameters that is used to parse memory dump config in trace config 46 // String parameters that is used to parse memory dump config in trace config
47 // string. 47 // string.
48 const char kMemoryDumpConfigParam[] = "memory_dump_config"; 48 const char kMemoryDumpConfigParam[] = "memory_dump_config";
49 const char kAllowedDumpModesParam[] = "allowed_dump_modes"; 49 const char kAllowedDumpModesParam[] = "allowed_dump_modes";
50 const char kTriggersParam[] = "triggers"; 50 const char kTriggersParam[] = "triggers";
51 const char kPeriodicIntervalParam[] = "periodic_interval_ms"; 51 const char kTriggerModeParam[] = "mode";
52 const char kModeParam[] = "mode"; 52 const char kMinTimeBetweenDumps[] = "min_time_between_dumps_ms";
53 const char kTriggerTypeParam[] = "type";
54 const char kPeriodicIntervalParam[] = "periodic_interval_ms"; // legacy config
Primiano Tucci (use gerrit) 2016/12/15 15:40:43 maybe add Legacy to the name (kPeriodicIntervalLeg
ssid 2016/12/15 19:48:07 Done.
53 const char kHeapProfilerOptions[] = "heap_profiler_options"; 55 const char kHeapProfilerOptions[] = "heap_profiler_options";
54 const char kBreakdownThresholdBytes[] = "breakdown_threshold_bytes"; 56 const char kBreakdownThresholdBytes[] = "breakdown_threshold_bytes";
55 57
56 // String parameters used to parse category event filters. 58 // String parameters used to parse category event filters.
57 const char kEventFiltersParam[] = "event_filters"; 59 const char kEventFiltersParam[] = "event_filters";
58 const char kFilterPredicateParam[] = "filter_predicate"; 60 const char kFilterPredicateParam[] = "filter_predicate";
59 const char kFilterArgsParam[] = "filter_args"; 61 const char kFilterArgsParam[] = "filter_args";
60 62
61 // Default configuration of memory dumps. 63 // Default configuration of memory dumps.
62 const TraceConfig::MemoryDumpConfig::Trigger kDefaultHeavyMemoryDumpTrigger = { 64 const TraceConfig::MemoryDumpConfig::Trigger kDefaultHeavyMemoryDumpTrigger = {
63 2000, // periodic_interval_ms 65 2000, // min_time_between_dumps_ms
64 MemoryDumpLevelOfDetail::DETAILED}; 66 MemoryDumpLevelOfDetail::DETAILED, MemoryDumpType::PERIODIC_INTERVAL};
65 const TraceConfig::MemoryDumpConfig::Trigger kDefaultLightMemoryDumpTrigger = { 67 const TraceConfig::MemoryDumpConfig::Trigger kDefaultLightMemoryDumpTrigger = {
66 250, // periodic_interval_ms 68 250, // min_time_between_dumps_ms
67 MemoryDumpLevelOfDetail::LIGHT}; 69 MemoryDumpLevelOfDetail::LIGHT, MemoryDumpType::PERIODIC_INTERVAL};
68 70
69 class ConvertableTraceConfigToTraceFormat 71 class ConvertableTraceConfigToTraceFormat
70 : public base::trace_event::ConvertableToTraceFormat { 72 : public base::trace_event::ConvertableToTraceFormat {
71 public: 73 public:
72 explicit ConvertableTraceConfigToTraceFormat(const TraceConfig& trace_config) 74 explicit ConvertableTraceConfigToTraceFormat(const TraceConfig& trace_config)
73 : trace_config_(trace_config) {} 75 : trace_config_(trace_config) {}
74 76
75 ~ConvertableTraceConfigToTraceFormat() override {} 77 ~ConvertableTraceConfigToTraceFormat() override {}
76 78
77 void AppendAsTraceFormat(std::string* out) const override { 79 void AppendAsTraceFormat(std::string* out) const override {
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 // Set triggers 587 // Set triggers
586 memory_dump_config_.triggers.clear(); 588 memory_dump_config_.triggers.clear();
587 const ListValue* trigger_list = nullptr; 589 const ListValue* trigger_list = nullptr;
588 if (memory_dump_config.GetList(kTriggersParam, &trigger_list) && 590 if (memory_dump_config.GetList(kTriggersParam, &trigger_list) &&
589 trigger_list->GetSize() > 0) { 591 trigger_list->GetSize() > 0) {
590 for (size_t i = 0; i < trigger_list->GetSize(); ++i) { 592 for (size_t i = 0; i < trigger_list->GetSize(); ++i) {
591 const DictionaryValue* trigger = nullptr; 593 const DictionaryValue* trigger = nullptr;
592 if (!trigger_list->GetDictionary(i, &trigger)) 594 if (!trigger_list->GetDictionary(i, &trigger))
593 continue; 595 continue;
594 596
597 MemoryDumpConfig::Trigger dump_config;
595 int interval = 0; 598 int interval = 0;
596 if (!trigger->GetInteger(kPeriodicIntervalParam, &interval)) 599 if (!trigger->GetInteger(kMinTimeBetweenDumps, &interval)) {
597 continue; 600 // If "min_time_between_dumps_ms" param was not given, then the trace
601 // config uses old format where only periodic dumps are supported.
602 trigger->GetInteger(kPeriodicIntervalParam, &interval);
Primiano Tucci (use gerrit) 2016/12/15 15:40:43 don't you have to keep the path where you skip if
ssid 2016/12/15 19:48:07 um, this will happen if someone writes: memory_dum
Primiano Tucci (use gerrit) 2016/12/16 12:13:55 Yeah I just didn't see the "!", sorry ignore my pr
603 dump_config.trigger_type = MemoryDumpType::PERIODIC_INTERVAL;
604 } else {
605 std::string trigger_type_str;
606 trigger->GetString(kTriggerTypeParam, &trigger_type_str);
607 dump_config.trigger_type = StringToMemoryDumpType(trigger_type_str);
608 }
609 DCHECK_GT(interval, 0);
610 dump_config.min_time_between_dumps_ms = static_cast<uint32_t>(interval);
598 611
599 DCHECK_GT(interval, 0);
600 MemoryDumpConfig::Trigger dump_config;
601 dump_config.periodic_interval_ms = static_cast<uint32_t>(interval);
602 std::string level_of_detail_str; 612 std::string level_of_detail_str;
603 trigger->GetString(kModeParam, &level_of_detail_str); 613 trigger->GetString(kTriggerModeParam, &level_of_detail_str);
604 dump_config.level_of_detail = 614 dump_config.level_of_detail =
605 StringToMemoryDumpLevelOfDetail(level_of_detail_str); 615 StringToMemoryDumpLevelOfDetail(level_of_detail_str);
616
606 memory_dump_config_.triggers.push_back(dump_config); 617 memory_dump_config_.triggers.push_back(dump_config);
607 } 618 }
608 } 619 }
609 620
610 // Set heap profiler options 621 // Set heap profiler options
611 const DictionaryValue* heap_profiler_options = nullptr; 622 const DictionaryValue* heap_profiler_options = nullptr;
612 if (memory_dump_config.GetDictionary(kHeapProfilerOptions, 623 if (memory_dump_config.GetDictionary(kHeapProfilerOptions,
613 &heap_profiler_options)) { 624 &heap_profiler_options)) {
614 int min_size_bytes = 0; 625 int min_size_bytes = 0;
615 if (heap_profiler_options->GetInteger(kBreakdownThresholdBytes, 626 if (heap_profiler_options->GetInteger(kBreakdownThresholdBytes,
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 auto allowed_modes = MakeUnique<ListValue>(); 755 auto allowed_modes = MakeUnique<ListValue>();
745 for (auto dump_mode : memory_dump_config_.allowed_dump_modes) 756 for (auto dump_mode : memory_dump_config_.allowed_dump_modes)
746 allowed_modes->AppendString(MemoryDumpLevelOfDetailToString(dump_mode)); 757 allowed_modes->AppendString(MemoryDumpLevelOfDetailToString(dump_mode));
747 758
748 auto memory_dump_config = MakeUnique<DictionaryValue>(); 759 auto memory_dump_config = MakeUnique<DictionaryValue>();
749 memory_dump_config->Set(kAllowedDumpModesParam, std::move(allowed_modes)); 760 memory_dump_config->Set(kAllowedDumpModesParam, std::move(allowed_modes));
750 761
751 auto triggers_list = MakeUnique<ListValue>(); 762 auto triggers_list = MakeUnique<ListValue>();
752 for (const auto& config : memory_dump_config_.triggers) { 763 for (const auto& config : memory_dump_config_.triggers) {
753 auto trigger_dict = MakeUnique<DictionaryValue>(); 764 auto trigger_dict = MakeUnique<DictionaryValue>();
754 trigger_dict->SetInteger(kPeriodicIntervalParam, 765 trigger_dict->SetString(kTriggerTypeParam,
755 static_cast<int>(config.periodic_interval_ms)); 766 MemoryDumpTypeToString(config.trigger_type));
767 trigger_dict->SetInteger(
768 kMinTimeBetweenDumps,
769 static_cast<int>(config.min_time_between_dumps_ms));
756 trigger_dict->SetString( 770 trigger_dict->SetString(
757 kModeParam, MemoryDumpLevelOfDetailToString(config.level_of_detail)); 771 kTriggerModeParam,
772 MemoryDumpLevelOfDetailToString(config.level_of_detail));
758 triggers_list->Append(std::move(trigger_dict)); 773 triggers_list->Append(std::move(trigger_dict));
759 } 774 }
760 775
761 // Empty triggers will still be specified explicitly since it means that 776 // Empty triggers will still be specified explicitly since it means that
762 // the periodic dumps are not enabled. 777 // the periodic dumps are not enabled.
763 memory_dump_config->Set(kTriggersParam, std::move(triggers_list)); 778 memory_dump_config->Set(kTriggersParam, std::move(triggers_list));
764 779
765 if (memory_dump_config_.heap_profiler_options.breakdown_threshold_bytes != 780 if (memory_dump_config_.heap_profiler_options.breakdown_threshold_bytes !=
766 MemoryDumpConfig::HeapProfiler::kDefaultBreakdownThresholdBytes) { 781 MemoryDumpConfig::HeapProfiler::kDefaultBreakdownThresholdBytes) {
767 auto options = MakeUnique<DictionaryValue>(); 782 auto options = MakeUnique<DictionaryValue>();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 StringPiece str) { 864 StringPiece str) {
850 return str.empty() || str.front() == ' ' || str.back() == ' '; 865 return str.empty() || str.front() == ' ' || str.back() == ' ';
851 } 866 }
852 867
853 bool TraceConfig::HasIncludedPatterns() const { 868 bool TraceConfig::HasIncludedPatterns() const {
854 return !included_categories_.empty(); 869 return !included_categories_.empty();
855 } 870 }
856 871
857 } // namespace trace_event 872 } // namespace trace_event
858 } // namespace base 873 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698