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

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

Issue 2950583003: [Sync] Record sync memory usage in histogram broken by datatypes (Closed)
Patch Set: Cleanup 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
Index: components/sync/syncable/directory.cc
diff --git a/components/sync/syncable/directory.cc b/components/sync/syncable/directory.cc
index c0a579e52a67555f48b469802f6a1b03fec3d956..495faf629af9e73ca4a4948dc5ed4e880f8efee0 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|, summs memory usage estimate of entries whose
Patrick Noland 2017/06/19 23:34:52 [nit] sums
pavely 2017/06/19 23:53:37 Done.
+// 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);
}
}

Powered by Google App Engine
This is Rietveld 408576698