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

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

Issue 692723002: Add histograms to gather ResourceScheduler information. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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: content/browser/loader/resource_scheduler.cc
diff --git a/content/browser/loader/resource_scheduler.cc b/content/browser/loader/resource_scheduler.cc
index 6cc902ea561895a7c7216103c6146b5b7107ff68..f53e679d4d05c7d5f95e61e2c7e26e24d922fee4 100644
--- a/content/browser/loader/resource_scheduler.cc
+++ b/content/browser/loader/resource_scheduler.cc
@@ -7,6 +7,7 @@
#include "content/browser/loader/resource_scheduler.h"
#include "base/metrics/field_trial.h"
+#include "base/metrics/histogram.h"
#include "base/stl_util.h"
#include "content/common/resource_messages.h"
#include "content/browser/loader/resource_message_delegate.h"
@@ -129,7 +130,8 @@ class ResourceScheduler::ScheduledResourceRequest
classification_(NORMAL_REQUEST),
scheduler_(scheduler),
priority_(priority),
- fifo_ordering_(0) {
+ fifo_ordering_(0),
+ request_seen_(base::TimeTicks::Now()) {
mmenke 2014/10/30 15:14:19 Should include base/time.h (Timer, included in the
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
TRACE_EVENT_ASYNC_BEGIN1("net", "URLRequest", request_,
"url", request->url().spec());
}
@@ -143,6 +145,17 @@ class ResourceScheduler::ScheduledResourceRequest
deferred_ = false;
controller()->Resume();
}
+ base::TimeDelta time_deferred = base::TimeTicks::Now() - request_seen_;
mmenke 2014/10/30 15:14:19 This this the time we want? We could measure time
aiolos (Not reviewing) 2014/10/30 16:58:47 I can see value from both options. I'm guessing we
mmenke 2014/10/30 17:30:40 I'm fine with adding both, and a TODO to remove on
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
+ std::string histogram_name = base::StringPrintf(
+ "ResourceScheduler.%sRequestTimeDeferred",
Ilya Sherman 2014/10/30 03:18:11 Optional nit: I'd recommend having the Active vs.
mmenke 2014/10/30 15:14:19 It also makes the histograms more searchable.
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
+ scheduler_->IsClientActive(client_id_) ? "Active" : "Background");
+ base::HistogramBase* histogram_counter = base::Histogram::FactoryTimeGet(
+ histogram_name,
+ base::TimeDelta::FromMilliseconds(1),
+ base::TimeDelta::FromMinutes(5),
+ 100,
mmenke 2014/10/30 15:14:19 Do we really need 100 buckets? Think 50 should be
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
+ base::Histogram::kUmaTargetedHistogramFlag);
+ histogram_counter->AddTime(time_deferred);
}
void set_request_priority_params(const RequestPriorityParams& priority) {
@@ -194,6 +207,7 @@ class ResourceScheduler::ScheduledResourceRequest
ResourceScheduler* scheduler_;
RequestPriorityParams priority_;
uint32 fifo_ordering_;
+ base::TimeTicks request_seen_;
mmenke 2014/10/30 15:14:19 "request_seen_" makes me think "Did we see the req
aiolos (Not reviewing) 2014/10/31 23:33:27 Acknowledged.
DISALLOW_COPY_AND_ASSIGN(ScheduledResourceRequest);
};
@@ -998,6 +1012,14 @@ void ResourceScheduler::LoadCoalescedRequests() {
}
}
+bool ResourceScheduler::IsClientActive(ClientId client_id) {
+ ClientMap::iterator client_it = client_map_.find(client_id);
mmenke 2014/10/30 15:14:19 const_iterator
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
+ if (client_it == client_map_.end()) {
+ return false;
mmenke 2014/10/30 15:14:19 When there's no client, we just let requests throu
aiolos (Not reviewing) 2014/10/31 23:33:27 I made a separate histogram for those requests plu
+ }
mmenke 2014/10/30 15:14:19 don't use braces when both condition and body of a
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
+ return client_it->second->is_active();
mmenke 2014/10/30 15:14:19 Formatting here is off
aiolos (Not reviewing) 2014/10/31 23:33:27 Done.
+}
+
void ResourceScheduler::ReprioritizeRequest(ScheduledResourceRequest* request,
net::RequestPriority new_priority,
int new_intra_priority_value) {

Powered by Google App Engine
This is Rietveld 408576698