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

Unified Diff: net/sdch/sdch_owner.cc

Issue 1051353003: SDCH: add TimeWeightedMemoryUse (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 | « net/sdch/sdch_owner.h ('k') | net/sdch/sdch_owner_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/sdch/sdch_owner.cc
diff --git a/net/sdch/sdch_owner.cc b/net/sdch/sdch_owner.cc
index 9d985816a9e0350e3930b7c17e7f4f0fdbb85630..9f0922ceaee19dd62ae8c0ec0675fc39e7190e06 100644
--- a/net/sdch/sdch_owner.cc
+++ b/net/sdch/sdch_owner.cc
@@ -10,6 +10,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/prefs/persistent_pref_store.h"
#include "base/prefs/value_map_pref_store.h"
+#include "base/process/process_info.h"
#include "base/strings/string_util.h"
#include "base/time/default_clock.h"
#include "base/values.h"
@@ -177,6 +178,7 @@ class DictionaryPreferenceIterator {
base::Time last_used() const { return last_used_; }
int use_count() const { return use_count_; }
int size() const { return size_; }
+ base::Time load_time() const { return load_time_; }
private:
void LoadDictionaryOrDie();
@@ -186,6 +188,7 @@ class DictionaryPreferenceIterator {
base::Time last_used_;
int use_count_;
int size_;
+ base::Time load_time_;
Randy Smith (Not in Mondays) 2015/04/03 13:25:29 I'm probably missing something really obvious, but
Elly Fong-Jones 2015/04/03 15:21:00 Yeah, this was vestigal. Removed.
base::DictionaryValue::Iterator dictionary_iterator_;
};
@@ -310,6 +313,7 @@ SdchOwner::~SdchOwner() {
DICTIONARY_FATE_UNLOAD_FOR_DESTRUCTION :
DICTIONARY_FATE_EVICT_FOR_DESTRUCTION;
RecordDictionaryEvictionOrUnload(new_uses, fate);
+ RecordDictionaryLifetime(it.server_hash(), it.size());
}
manager_->RemoveObserver(this);
@@ -351,16 +355,19 @@ void SdchOwner::OnDictionaryFetched(base::Time last_used,
std::string server_hash;
int use_count;
size_t dictionary_size;
+ base::Time load_time;
DictionaryItem() : use_count(0), dictionary_size(0) {}
DictionaryItem(const base::Time& last_used,
const std::string& server_hash,
int use_count,
- size_t dictionary_size)
+ size_t dictionary_size,
+ const base::Time& load_time)
: last_used(last_used),
server_hash(server_hash),
use_count(use_count),
- dictionary_size(dictionary_size) {}
+ dictionary_size(dictionary_size),
+ load_time(load_time) {}
DictionaryItem(const DictionaryItem& rhs) = default;
DictionaryItem& operator=(const DictionaryItem& rhs) = default;
bool operator<(const DictionaryItem& rhs) const {
@@ -393,7 +400,8 @@ void SdchOwner::OnDictionaryFetched(base::Time last_used,
if (it.last_used() < stale_boundary ||
(it.use_count() == 0 && it.last_used() < never_used_stale_boundary)) {
stale_dictionary_list.push_back(DictionaryItem(
- it.last_used(), it.server_hash(), it.use_count(), it.size()));
+ it.last_used(), it.server_hash(), it.use_count(), it.size(),
+ it.load_time()));
Randy Smith (Not in Mondays) 2015/04/03 13:25:29 Shouldn't this be a lookup in the load_times_ map?
Elly Fong-Jones 2015/04/03 15:20:59 Done.
recoverable_bytes += it.size();
}
}
@@ -452,6 +460,7 @@ void SdchOwner::OnDictionaryFetched(base::Time last_used,
use_counts_at_load_[stale_it->server_hash];
RecordDictionaryEvictionOrUnload(new_uses,
DICTIONARY_FATE_EVICT_FOR_DICT);
+ RecordDictionaryLifetime(stale_it->server_hash, stale_it->dictionary_size);
++stale_it;
}
@@ -487,6 +496,7 @@ void SdchOwner::OnDictionaryFetched(base::Time last_used,
dictionary_description->SetInteger(kDictionarySizeKey,
dictionary_text.size());
pref_dictionary_map->Set(server_hash, dictionary_description.Pass());
+ load_times_[server_hash] = clock_->Now();
}
void SdchOwner::OnDictionaryUsed(SdchManager* manager,
@@ -780,4 +790,17 @@ bool SdchOwner::IsPersistingDictionaries() const {
return in_memory_pref_store_.get() != nullptr;
}
+void SdchOwner::RecordDictionaryLifetime(const std::string& server_hash,
+ size_t size) {
+ if (load_times_.count(server_hash) == 0)
Randy Smith (Not in Mondays) 2015/04/03 13:25:29 When will this happen? Shouldn't this be a DCHECK
Elly Fong-Jones 2015/04/03 15:21:00 Done.
+ return;
+ base::Time now = clock_->Now();
+ base::TimeDelta dict_lifetime = now - load_times_[server_hash];
+ base::TimeDelta process_lifetime = now -
+ base::CurrentProcessInfo::CreationTime();
+ int64 frac = (size * dict_lifetime.InMilliseconds()) /
+ process_lifetime.InMilliseconds();
+ UMA_HISTOGRAM_COUNTS("Sdch3.TimeWeightedMemoryUse", frac);
+}
+
} // namespace net
« no previous file with comments | « net/sdch/sdch_owner.h ('k') | net/sdch/sdch_owner_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698