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

Side by Side Diff: components/sync/syncable/directory.cc

Issue 2651563004: [sync] Add model type counters to memory dumps. (Closed)
Patch Set: Created 3 years, 11 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/sync/syncable/directory.h" 5 #include "components/sync/syncable/directory.h"
6 6
7 #include <inttypes.h> 7 #include <inttypes.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <iterator> 10 #include <iterator>
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 size_t Directory::GetEntriesCount() const { 912 size_t Directory::GetEntriesCount() const {
913 ScopedKernelLock lock(this); 913 ScopedKernelLock lock(this);
914 return kernel_->metahandles_map.size(); 914 return kernel_->metahandles_map.size();
915 } 915 }
916 916
917 void Directory::OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd) { 917 void Directory::OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd) {
918 std::string dump_name_base = 918 std::string dump_name_base =
919 base::StringPrintf("sync/0x%" PRIXPTR, reinterpret_cast<uintptr_t>(this)); 919 base::StringPrintf("sync/0x%" PRIXPTR, reinterpret_cast<uintptr_t>(this));
920 920
921 size_t kernel_memory_usage; 921 size_t kernel_memory_usage;
922 size_t model_type_entry_count[MODEL_TYPE_COUNT] = {0};
922 { 923 {
923 using base::trace_event::EstimateMemoryUsage; 924 using base::trace_event::EstimateMemoryUsage;
924 925
925 ReadTransaction trans(FROM_HERE, this); 926 ReadTransaction trans(FROM_HERE, this);
926 ScopedKernelLock lock(this); 927 ScopedKernelLock lock(this);
927 kernel_memory_usage = 928 kernel_memory_usage =
928 EstimateMemoryUsage(kernel_->name) + 929 EstimateMemoryUsage(kernel_->name) +
929 EstimateMemoryUsage(kernel_->metahandles_map) + 930 EstimateMemoryUsage(kernel_->metahandles_map) +
930 EstimateMemoryUsage(kernel_->ids_map) + 931 EstimateMemoryUsage(kernel_->ids_map) +
931 EstimateMemoryUsage(kernel_->server_tags_map) + 932 EstimateMemoryUsage(kernel_->server_tags_map) +
932 EstimateMemoryUsage(kernel_->client_tags_map) + 933 EstimateMemoryUsage(kernel_->client_tags_map) +
933 EstimateMemoryUsage(kernel_->parent_child_index) + 934 EstimateMemoryUsage(kernel_->parent_child_index) +
934 EstimateMemoryUsage(kernel_->index_by_attachment_id) + 935 EstimateMemoryUsage(kernel_->index_by_attachment_id) +
935 EstimateMemoryUsage(kernel_->unapplied_update_metahandles) + 936 EstimateMemoryUsage(kernel_->unapplied_update_metahandles) +
936 EstimateMemoryUsage(kernel_->unsynced_metahandles) + 937 EstimateMemoryUsage(kernel_->unsynced_metahandles) +
937 EstimateMemoryUsage(kernel_->dirty_metahandles) + 938 EstimateMemoryUsage(kernel_->dirty_metahandles) +
938 EstimateMemoryUsage(kernel_->metahandles_to_purge) + 939 EstimateMemoryUsage(kernel_->metahandles_to_purge) +
939 EstimateMemoryUsage(kernel_->persisted_info) + 940 EstimateMemoryUsage(kernel_->persisted_info) +
940 EstimateMemoryUsage(kernel_->cache_guid); 941 EstimateMemoryUsage(kernel_->cache_guid);
942
943 for (const auto& handle_and_kernel : kernel_->metahandles_map) {
944 const EntryKernel* kernel = handle_and_kernel.second.get();
945 // Counting logic from DirectoryBackingStore::LoadEntries()
946 ModelType model_type = kernel->GetModelType();
947 if (!IsRealDataType(model_type)) {
948 model_type = kernel->GetServerModelType();
949 }
950 ++model_type_entry_count[model_type];
951 }
952 }
953
954 // Similar to UploadModelTypeEntryCount()
955 for (size_t i = FIRST_REAL_MODEL_TYPE; i != MODEL_TYPE_COUNT; ++i) {
956 ModelType model_type = static_cast<ModelType>(i);
957 std::string notification_type;
958 if (RealModelTypeToNotificationType(model_type, &notification_type)) {
959 std::string dump_name =
960 base::StringPrintf("%s/model_type/%s", dump_name_base.c_str(),
961 notification_type.c_str());
962 pmd->CreateAllocatorDump(dump_name)->AddScalar(
963 base::trace_event::MemoryAllocatorDump::kNameObjectCount,
964 base::trace_event::MemoryAllocatorDump::kUnitsObjects,
965 model_type_entry_count[i]);
966 }
941 } 967 }
942 968
943 { 969 {
944 std::string dump_name = 970 std::string dump_name =
945 base::StringPrintf("%s/kernel", dump_name_base.c_str()); 971 base::StringPrintf("%s/kernel", dump_name_base.c_str());
946 972
947 auto* dump = pmd->CreateAllocatorDump(dump_name); 973 auto* dump = pmd->CreateAllocatorDump(dump_name);
948 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, 974 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
949 base::trace_event::MemoryAllocatorDump::kUnitsBytes, 975 base::trace_event::MemoryAllocatorDump::kUnitsBytes,
950 kernel_memory_usage); 976 kernel_memory_usage);
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
1607 Directory::Kernel* Directory::kernel() { 1633 Directory::Kernel* Directory::kernel() {
1608 return kernel_; 1634 return kernel_;
1609 } 1635 }
1610 1636
1611 const Directory::Kernel* Directory::kernel() const { 1637 const Directory::Kernel* Directory::kernel() const {
1612 return kernel_; 1638 return kernel_;
1613 } 1639 }
1614 1640
1615 } // namespace syncable 1641 } // namespace syncable
1616 } // namespace syncer 1642 } // namespace syncer
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698