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

Unified Diff: components/sync/syncable/directory.cc

Issue 2949923004: Reland: [Sync] Record sync memory usage in histogram broken by datatypes (Closed)
Patch Set: Fix linker error Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/sync/syncable/directory.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/sync/syncable/directory.cc
diff --git a/components/sync/syncable/directory.cc b/components/sync/syncable/directory.cc
index c0a579e52a67555f48b469802f6a1b03fec3d956..14e0765e51b6738709fdfa3c026b49bbd6c38142 100644
--- a/components/sync/syncable/directory.cc
+++ b/components/sync/syncable/directory.cc
@@ -987,6 +987,42 @@ void Directory::OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd) {
}
}
+// Iterates over entries of |map|, sums memory usage estimate of entries whose
+// entry type is |model_type|. Passing owning container will also include memory
+// estimate of EntryKernel.
+template <typename Container>
+size_t EstimateFiteredMapMemoryUsage(const Container& map,
+ ModelType model_type) {
+ using base::trace_event::EstimateMemoryUsage;
+ size_t memory_usage = 0;
+ for (const auto& kv : map) {
+ const ModelType entry_type =
+ GetModelTypeFromSpecifics(kv.second->ref(SPECIFICS));
+ if (entry_type == model_type) {
+ memory_usage += EstimateMemoryUsage(kv);
+ }
+ }
+ return memory_usage;
+}
+
+size_t Directory::EstimateMemoryUsageByType(ModelType model_type) {
+ using base::trace_event::EstimateMemoryUsage;
+ ReadTransaction trans(FROM_HERE, this);
+ ScopedKernelLock lock(this);
+
+ size_t memory_usage = 0;
+ memory_usage +=
+ EstimateFiteredMapMemoryUsage(kernel_->metahandles_map, model_type);
+ memory_usage += EstimateFiteredMapMemoryUsage(kernel_->ids_map, model_type);
+ memory_usage +=
+ EstimateFiteredMapMemoryUsage(kernel_->server_tags_map, model_type);
+ memory_usage +=
+ EstimateFiteredMapMemoryUsage(kernel_->client_tags_map, model_type);
+ memory_usage += EstimateMemoryUsage(
+ kernel_->persisted_info.download_progress[model_type]);
+ return memory_usage;
+}
+
void Directory::SetDownloadProgress(
ModelType model_type,
const sync_pb::DataTypeProgressMarker& new_progress) {
@@ -1174,13 +1210,12 @@ void Directory::GetMetaHandlesOfType(const ScopedKernelLock& lock,
ModelType type,
std::vector<int64_t>* result) {
result->clear();
- for (MetahandlesMap::iterator it = kernel_->metahandles_map.begin();
- it != kernel_->metahandles_map.end(); ++it) {
- EntryKernel* entry = it->second.get();
+ for (const auto& handle_and_kernel : kernel_->metahandles_map) {
+ EntryKernel* entry = handle_and_kernel.second.get();
const ModelType entry_type =
GetModelTypeFromSpecifics(entry->ref(SPECIFICS));
if (entry_type == type)
- result->push_back(it->first);
+ result->push_back(handle_and_kernel.first);
}
}
« no previous file with comments | « components/sync/syncable/directory.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698