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

Unified Diff: content/browser/loader/resource_scheduler.cc

Issue 782903002: Breakdown ClientLoadedTime histograms into buckets based on number of clients. Fix RequestTimeThrot… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/loader/resource_scheduler.cc
diff --git a/content/browser/loader/resource_scheduler.cc b/content/browser/loader/resource_scheduler.cc
index 64d7e654e61a95d47241026038eefe681ebdbc27..f643dafadd373895eff629504d35f99562f1637e 100644
--- a/content/browser/loader/resource_scheduler.cc
+++ b/content/browser/loader/resource_scheduler.cc
@@ -27,20 +27,40 @@ namespace content {
namespace {
+// Post ResourceScheduler histograms of the following forms:
+// If |histogram_suffix| is NULL or the empty string:
+// ResourceScheduler.base_name.histogram_name
+// Else:
+// ResourceScheduler.base_name.histogram_name.histogram_suffix
void PostHistogram(const char* base_name,
- const char* suffix,
+ const char* histogram_name,
+ const char* histogram_suffix,
base::TimeDelta time) {
- std::string histogram_name =
- base::StringPrintf("ResourceScheduler.%s.%s", base_name, suffix);
+ std::string histogram =
+ base::StringPrintf("ResourceScheduler.%s.%s", base_name, histogram_name);
+ if (histogram_suffix && histogram_suffix[0] != '\0')
+ histogram = histogram + "." + histogram_suffix;
base::HistogramBase* histogram_counter = base::Histogram::FactoryTimeGet(
- histogram_name,
- base::TimeDelta::FromMilliseconds(1),
- base::TimeDelta::FromMinutes(5),
- 50,
+ histogram, base::TimeDelta::FromMilliseconds(1),
+ base::TimeDelta::FromMinutes(5), 50,
base::Histogram::kUmaTargetedHistogramFlag);
histogram_counter->AddTime(time);
}
+// For use with PostHistogram to specify the correct string for histogram
+// suffixes based on number of Clients.
+const char* GetNumClientsString(size_t num_clients) {
+ if (num_clients == 1)
+ return "1Client";
+ else if (num_clients <= 5)
+ return "Max5Clients";
+ else if (num_clients <= 15)
+ return "Max15Clients";
+ else if (num_clients <= 30)
+ return "Max30Clients";
+ return "Over30Clients";
+}
+
} // namespace
static const size_t kCoalescedTimerPeriod = 5000;
@@ -182,9 +202,9 @@ class ResourceScheduler::ScheduledResourceRequest
controller()->Resume();
time_was_deferred = time - time_deferred_;
}
- PostHistogram("RequestTimeDeferred", client_state, time_was_deferred);
- PostHistogram(
- "RequestTimeThrottled", client_state, time - request_->creation_time());
+ PostHistogram("RequestTimeDeferred", client_state, NULL, time_was_deferred);
+ PostHistogram("RequestTimeThrottled", client_state, NULL,
+ time - request_->creation_time());
// TODO(aiolos): Remove one of the above histograms after gaining an
// understanding of the difference between them and which one is more
// interesting.
@@ -368,15 +388,23 @@ class ResourceScheduler::Client {
return;
}
base::TimeTicks cur_time = base::TimeTicks::Now();
+ const char* num_clients =
+ GetNumClientsString(scheduler_->client_map_.size());
const char* client_catagory = "Other";
if (last_active_switch_time_.is_null()) {
client_catagory = is_active() ? "Active" : "Background";
} else if (is_active()) {
- PostHistogram("ClientLoadedTime", "Other.SwitchedToActive",
- cur_time - last_active_switch_time_);
+ base::TimeDelta time_since_active = cur_time - last_active_switch_time_;
+ PostHistogram("ClientLoadedTime", "Other.SwitchedToActive", NULL,
+ time_since_active);
+ PostHistogram("ClientLoadedTime", "Other.SwitchedToActive", num_clients,
+ time_since_active);
}
- PostHistogram("ClientLoadedTime", client_catagory,
- cur_time - load_started_time_);
+ base::TimeDelta time_since_load_started = cur_time - load_started_time_;
+ PostHistogram("ClientLoadedTime", client_catagory, NULL,
+ time_since_load_started);
+ PostHistogram("ClientLoadedTime", client_catagory, num_clients,
+ time_since_load_started);
// TODO(aiolos): The above histograms will not take main resource load time
// into account with PlzNavigate into account. The ResourceScheduler also
// will load the main resources without a clients with the current logic.
@@ -878,8 +906,6 @@ void ResourceScheduler::OnClientCreated(int child_id,
Client* client = new Client(this, is_visible, is_audible);
client_map_[client_id] = client;
- // TODO(aiolos): set Client visibility/audibility when signals are added
- // this will UNTHROTTLE Clients as needed
client->UpdateThrottleState();
}
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698