| OLD | NEW |
| 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 Loading... |
| 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, ¬ification_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 Loading... |
| 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 |
| OLD | NEW |