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) { |