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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc

Issue 2888653003: increase bucket size and break down video by http/https (Closed)
Patch Set: Address trybot failure Created 3 years, 7 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 | components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
index d444fbf3cfc42c930480d1b7e1a8d360643f0e7b..c94d5ea77bb76c0acaaf8eecfecfa6ac937152b9 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
@@ -9,6 +9,7 @@
#include <utility>
#include "base/memory/ptr_util.h"
+#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
@@ -43,19 +44,67 @@ namespace data_reduction_proxy {
namespace {
-// |lofi_low_header_added| is set to true iff Lo-Fi "q=low" request header can
-// be added to the Chrome proxy headers.
-// |received_content_length| is the number of prefilter bytes received.
-// |original_content_length| is the length of resource if accessed directly
-// without data saver proxy.
-// |freshness_lifetime| contains information on how long the resource will be
-// fresh for and how long is the usability.
+// Records the occurrence of |sample| in |name| histogram. UMA macros are not
+// used because the |name| is not static.
+void RecordNewContentLengthHistogram(const std::string& name, int64_t sample) {
+ base::UmaHistogramCustomCounts(
+ name, sample,
+ 1, // Minimum sample size in bytes.
+ 128 << 20, // Maximum sample size in bytes. 128MB is chosen because some
+ // video requests can be very large.
+ 50 // Bucket count.
+ );
+}
+
+void RecordNewContentLengthHistograms(
+ bool is_https,
+ bool is_video,
+ DataReductionProxyRequestType request_type,
+ int64_t received_content_length) {
+ std::string prefix = "Net.HttpContentLength";
+ std::string connection_type = is_https ? ".Https" : ".Http";
+ std::string suffix = ".Other";
+ // TODO(crbug.com/726411): Differentiate between a bypass and a disabled
+ // proxy config.
+ switch (request_type) {
+ case VIA_DATA_REDUCTION_PROXY:
+ suffix = ".ViaDRP";
+ break;
+ case HTTPS:
+ suffix = ".Direct";
+ break;
+ case SHORT_BYPASS:
+ case LONG_BYPASS:
+ suffix = ".BypassedDRP";
+ break;
+ case UPDATE:
+ case UNKNOWN_TYPE:
+ default:
+ // Value already properly initialized to ".Other"
+ break;
+ }
+ // Record a histogram for all traffic, including video.
+ RecordNewContentLengthHistogram(prefix + connection_type + suffix,
+ received_content_length);
+ if (is_video) {
+ RecordNewContentLengthHistogram(
+ prefix + connection_type + suffix + ".Video", received_content_length);
+ }
+}
+
+// |lofi_low_header_added| is set to true iff Lo-Fi request header
+// can be added to the Chrome proxy header. |received_content_length| is
+// the number of prefilter bytes received. |original_content_length| is the
+// length of resource if accessed directly without data saver proxy.
+// |freshness_lifetime| specifies how long the resource will
+// be fresh for.
void RecordContentLengthHistograms(bool lofi_low_header_added,
bool is_https,
bool is_video,
int64_t received_content_length,
int64_t original_content_length,
- const base::TimeDelta& freshness_lifetime) {
+ const base::TimeDelta& freshness_lifetime,
+ DataReductionProxyRequestType request_type) {
// Add the current resource to these histograms only when a valid
// X-Original-Content-Length header is present.
if (original_content_length >= 0) {
@@ -84,17 +133,11 @@ void RecordContentLengthHistograms(bool lofi_low_header_added,
original_content_length = received_content_length;
}
UMA_HISTOGRAM_COUNTS_1M("Net.HttpContentLength", received_content_length);
- if (is_https) {
- UMA_HISTOGRAM_COUNTS_1M("Net.HttpContentLength.Https",
- received_content_length);
- } else {
- UMA_HISTOGRAM_COUNTS_1M("Net.HttpContentLength.Http",
- received_content_length);
- }
- if (is_video) {
- UMA_HISTOGRAM_COUNTS_1M("Net.HttpContentLength.Video",
- received_content_length);
- }
+
+ // Record the new histograms broken down by HTTP/HTTPS and video/non-video
+ RecordNewContentLengthHistograms(is_https, is_video, request_type,
+ received_content_length);
+
UMA_HISTOGRAM_COUNTS_1M("Net.HttpOriginalContentLength",
original_content_length);
UMA_HISTOGRAM_COUNTS_1M("Net.HttpContentLengthDifference",
@@ -102,8 +145,7 @@ void RecordContentLengthHistograms(bool lofi_low_header_added,
UMA_HISTOGRAM_CUSTOM_COUNTS("Net.HttpContentFreshnessLifetime",
freshness_lifetime.InSeconds(),
base::TimeDelta::FromHours(1).InSeconds(),
- base::TimeDelta::FromDays(30).InSeconds(),
- 100);
+ base::TimeDelta::FromDays(30).InSeconds(), 100);
if (freshness_lifetime.InSeconds() <= 0)
return;
UMA_HISTOGRAM_COUNTS_1M("Net.HttpContentLengthCacheable",
@@ -570,7 +612,7 @@ void DataReductionProxyNetworkDelegate::RecordContentLength(
data_reduction_proxy_io_data_->lofi_decider() &&
data_reduction_proxy_io_data_->lofi_decider()->IsUsingLoFi(request),
is_https, is_video, request.received_response_content_length(),
- original_content_length, freshness_lifetime);
+ original_content_length, freshness_lifetime, request_type);
if (data_reduction_proxy_io_data_ && data_reduction_proxy_bypass_stats_) {
// Record BypassedBytes histograms for the request.
« no previous file with comments | « no previous file | components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698