diff options
author | csharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-01 17:17:07 +0000 |
---|---|---|
committer | csharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-01 17:17:07 +0000 |
commit | 3ed84729d876d6bc22b2da8ffc8a2cd609a5004a (patch) | |
tree | 6bae823ec89599e064fe9ecc1e408fad39f3ca00 | |
parent | b6a2227b39282cd4a556105f5c8640bbaa7957e6 (diff) | |
download | chromium_src-3ed84729d876d6bc22b2da8ffc8a2cd609a5004a.zip chromium_src-3ed84729d876d6bc22b2da8ffc8a2cd609a5004a.tar.gz chromium_src-3ed84729d876d6bc22b2da8ffc8a2cd609a5004a.tar.bz2 |
Revert 232376 "Revert 232342 "New prefetch histograms to get an ..."
Didn't break bot, undoing revert.
> Revert 232342 "New prefetch histograms to get an idea of how oft..."
>
> Broke the Linux Chromium OS ASAN Tests(3) bot.
>
> > New prefetch histograms to get an idea of how often prefetches happen,
> > what their success rate is, how often they're canceled, how long
> > they take to load, and how big they are.
> >
> > BUG=303816
> >
> > Review URL: https://codereview.chromium.org/50493005
>
> TBR=jkarlin@google.com
>
> Review URL: https://codereview.chromium.org/55993002
TBR=csharp@chromium.org
Review URL: https://codereview.chromium.org/56243002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232418 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/browser/loader/resource_loader.cc | 35 | ||||
-rw-r--r-- | content/browser/loader/resource_loader.h | 12 | ||||
-rw-r--r-- | net/url_request/url_request_http_job.cc | 4 | ||||
-rw-r--r-- | tools/metrics/histograms/histograms.xml | 48 |
4 files changed, 99 insertions, 0 deletions
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc index a995259..0a7047d 100644 --- a/content/browser/loader/resource_loader.cc +++ b/content/browser/loader/resource_loader.cc @@ -30,6 +30,7 @@ #include "net/base/load_flags.h" #include "net/http/http_response_headers.h" #include "net/ssl/client_cert_store.h" +#include "net/url_request/url_request_status.h" #include "webkit/browser/appcache/appcache_interceptor.h" using base::TimeDelta; @@ -630,6 +631,7 @@ void ResourceLoader::CompleteRead(int bytes_read) { void ResourceLoader::ResponseCompleted() { VLOG(1) << "ResponseCompleted: " << request_->url().spec(); + RecordHistograms(); ResourceRequestInfoImpl* info = GetRequestInfo(); std::string security_info; @@ -657,4 +659,37 @@ void ResourceLoader::CallDidFinishLoading() { delegate_->DidFinishLoading(this); } +void ResourceLoader::RecordHistograms() { + ResourceRequestInfoImpl* info = GetRequestInfo(); + + if (info->GetResourceType() == ResourceType::PREFETCH) { + PrefetchStatus status = STATUS_UNDEFINED; + TimeDelta total_time = base::TimeTicks::Now() - request_->creation_time(); + + switch (request_->status().status()) { + case net::URLRequestStatus::SUCCESS: + if (request_->was_cached()) { + status = STATUS_SUCCESS_FROM_CACHE; + UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentPrefetchingFromCache", + total_time); + } else { + status = STATUS_SUCCESS_FROM_NETWORK; + UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentPrefetchingFromNetwork", + total_time); + } + break; + case net::URLRequestStatus::CANCELED: + status = STATUS_CANCELED; + UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeBeforeCancel", total_time); + break; + case net::URLRequestStatus::IO_PENDING: + case net::URLRequestStatus::FAILED: + status = STATUS_UNDEFINED; + break; + } + + UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX); + } +} + } // namespace content diff --git a/content/browser/loader/resource_loader.h b/content/browser/loader/resource_loader.h index 8662cca..ca8b119 100644 --- a/content/browser/loader/resource_loader.h +++ b/content/browser/loader/resource_loader.h @@ -99,9 +99,21 @@ class CONTENT_EXPORT ResourceLoader : public net::URLRequest::Delegate, void CompleteRead(int bytes_read); void ResponseCompleted(); void CallDidFinishLoading(); + void RecordHistograms(); bool is_deferred() const { return deferred_stage_ != DEFERRED_NONE; } + // Used for categorizing loading of prefetches for reporting in histograms. + // NOTE: This enumeration is used in histograms, so please do not add entries + // in the middle. + enum PrefetchStatus { + STATUS_UNDEFINED, + STATUS_SUCCESS_FROM_CACHE, + STATUS_SUCCESS_FROM_NETWORK, + STATUS_CANCELED, + STATUS_MAX, + }; + enum DeferredStage { DEFERRED_NONE, DEFERRED_START, diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index e6b39f6..564da62 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -1489,6 +1489,10 @@ void URLRequestHttpJob::RecordPerfHistograms(CompletionCause reason) { } } + if (request_info_.load_flags & LOAD_PREFETCH && !request_->was_cached()) + UMA_HISTOGRAM_COUNTS("Net.Prefetch.PrefilterBytesReadFromNetwork", + prefilter_bytes_read()); + start_time_ = base::TimeTicks(); } diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 495308e..d66818d 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -8268,6 +8268,47 @@ other types of suffix sets. </details> </histogram> +<histogram name="Net.Prefetch.Pattern" enum="PrefetchStatus"> + <summary> + The completion status of prefetches that have finished loading. + </summary> + <details> + Measurement occurs at ResourceLoader::ResponseCompleted so requests canceled + before that point are not registered. + + Note that "success from cache" means that the + UrlRequest::was_cached() was true, and "success from network" + means that was_cached() was false. Validated results are considered cached, + even though a conditional network request is made. + </details> +</histogram> + +<histogram name="Net.Prefetch.PrefilterBytesReadFromNetwork" units="bytes"> + <summary> + Number of bytes read from the network on behalf of prefetch requests. This + is prefilter, so before any decompression. + </summary> +</histogram> + +<histogram name="Net.Prefetch.TimeBeforeCancel" units="milliseconds"> + <summary> + Time spent on prefetch requests before the request was canceled. + </summary> +</histogram> + +<histogram name="Net.Prefetch.TimeSpentPrefetchingFromCache" + units="milliseconds"> + <summary>Time spent on prefetch requests when fetched from cache.</summary> +</histogram> + +<histogram name="Net.Prefetch.TimeSpentPrefetchingFromNetwork" + units="milliseconds"> + <summary> + Time spent on prefetch requests when fetched from the network, including + validation time. + </summary> +</histogram> + <histogram name="Net.Priority_High_Latency" units="milliseconds"> <obsolete> Replaced by Net.Priority_High_Latency_b. @@ -26263,6 +26304,13 @@ other types of suffix sets. <int value="1" label="The pre-connect triggered host was accessed"/> </enum> +<enum name="PrefetchStatus" type="int"> + <int value="0" label="undefined"/> + <int value="1" label="success from cache"/> + <int value="2" label="success from network"/> + <int value="3" label="canceled in-flight"/> +</enum> + <enum name="PrerenderFinalStatus" type="int"> <int value="0" label="USED"/> <int value="1" label="TIMED_OUT"/> |