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

Side by Side Diff: content/browser/download/download_stats.cc

Issue 2885793004: Parallelizable download metrics. (Closed)
Patch Set: Some change according to meeting. 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/download/download_stats.h" 5 #include "content/browser/download/download_stats.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/metrics/histogram_functions.h" 8 #include "base/metrics/histogram_functions.h"
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 #include "base/metrics/sparse_histogram.h" 10 #include "base/metrics/sparse_histogram.h"
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 FILE_PATH_LITERAL(".img"), 332 FILE_PATH_LITERAL(".img"),
333 FILE_PATH_LITERAL(".imgpart"), 333 FILE_PATH_LITERAL(".imgpart"),
334 FILE_PATH_LITERAL(".ndif"), 334 FILE_PATH_LITERAL(".ndif"),
335 FILE_PATH_LITERAL(".smi"), 335 FILE_PATH_LITERAL(".smi"),
336 FILE_PATH_LITERAL(".sparsebundle"), 336 FILE_PATH_LITERAL(".sparsebundle"),
337 FILE_PATH_LITERAL(".sparseimage"), 337 FILE_PATH_LITERAL(".sparseimage"),
338 FILE_PATH_LITERAL(".toast"), 338 FILE_PATH_LITERAL(".toast"),
339 FILE_PATH_LITERAL(".udif"), 339 FILE_PATH_LITERAL(".udif"),
340 }; 340 };
341 341
342 // The maximum size in KB for the file size metric, file size larger than this
343 // will be kept in overflow bucket.
344 const int64_t kMaxFileSizeKb = 4 * 1024 * 1024; /* 4GB. */
345
342 // Maps extensions to their matching UMA histogram int value. 346 // Maps extensions to their matching UMA histogram int value.
343 int GetDangerousFileType(const base::FilePath& file_path) { 347 int GetDangerousFileType(const base::FilePath& file_path) {
344 for (size_t i = 0; i < arraysize(kDangerousFileTypes); ++i) { 348 for (size_t i = 0; i < arraysize(kDangerousFileTypes); ++i) {
345 if (file_path.MatchesExtension(kDangerousFileTypes[i])) 349 if (file_path.MatchesExtension(kDangerousFileTypes[i]))
346 return i + 1; 350 return i + 1;
347 } 351 }
348 return 0; // Unknown extension. 352 return 0; // Unknown extension.
349 } 353 }
350 354
351 // Helper method to calculate the bandwidth given the data length and time. 355 // Helper method to calculate the bandwidth given the data length and time.
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 void RecordParallelDownloadAddStreamSuccess(bool success) { 793 void RecordParallelDownloadAddStreamSuccess(bool success) {
790 UMA_HISTOGRAM_BOOLEAN("Download.ParallelDownloadAddStreamSuccess", success); 794 UMA_HISTOGRAM_BOOLEAN("Download.ParallelDownloadAddStreamSuccess", success);
791 } 795 }
792 796
793 void RecordParallelizableDownloadStats( 797 void RecordParallelizableDownloadStats(
794 size_t bytes_downloaded_with_parallel_streams, 798 size_t bytes_downloaded_with_parallel_streams,
795 base::TimeDelta time_with_parallel_streams, 799 base::TimeDelta time_with_parallel_streams,
796 size_t bytes_downloaded_without_parallel_streams, 800 size_t bytes_downloaded_without_parallel_streams,
797 base::TimeDelta time_without_parallel_streams, 801 base::TimeDelta time_without_parallel_streams,
798 bool uses_parallel_requests) { 802 bool uses_parallel_requests) {
803 RecordParallelizableDownloadAverageStats(
804 bytes_downloaded_with_parallel_streams +
805 bytes_downloaded_without_parallel_streams,
806 time_with_parallel_streams + time_without_parallel_streams);
807
799 int64_t bandwidth_without_parallel_streams = 0; 808 int64_t bandwidth_without_parallel_streams = 0;
800 if (bytes_downloaded_without_parallel_streams > 0) { 809 if (bytes_downloaded_without_parallel_streams > 0) {
801 bandwidth_without_parallel_streams = CalculateBandwidthBytesPerSecond( 810 bandwidth_without_parallel_streams = CalculateBandwidthBytesPerSecond(
802 bytes_downloaded_without_parallel_streams, 811 bytes_downloaded_without_parallel_streams,
803 time_without_parallel_streams); 812 time_without_parallel_streams);
804 if (uses_parallel_requests) { 813 if (uses_parallel_requests) {
805 RecordBandwidthMetric( 814 RecordBandwidthMetric(
806 "Download.ParallelizableDownloadBandwidth." 815 "Download.ParallelizableDownloadBandwidth."
807 "WithParallelRequestsSingleStream", 816 "WithParallelRequestsSingleStream",
808 bandwidth_without_parallel_streams); 817 bandwidth_without_parallel_streams);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 UMA_HISTOGRAM_CUSTOM_COUNTS( 865 UMA_HISTOGRAM_CUSTOM_COUNTS(
857 "Download.EstimatedTimeSavedWithParallelDownload", 866 "Download.EstimatedTimeSavedWithParallelDownload",
858 time_saved.InMilliseconds(), 0, kMillisecondsPerHour, 50); 867 time_saved.InMilliseconds(), 0, kMillisecondsPerHour, 50);
859 } else { 868 } else {
860 UMA_HISTOGRAM_CUSTOM_COUNTS( 869 UMA_HISTOGRAM_CUSTOM_COUNTS(
861 "Download.EstimatedTimeWastedWithParallelDownload", 870 "Download.EstimatedTimeWastedWithParallelDownload",
862 -time_saved.InMilliseconds(), 0, kMillisecondsPerHour, 50); 871 -time_saved.InMilliseconds(), 0, kMillisecondsPerHour, 50);
863 } 872 }
864 } 873 }
865 874
875 void RecordParallelizableDownloadAverageStats(
876 int64_t bytes_downloaded,
877 const base::TimeDelta& time_span) {
878 if (time_span.is_zero() || bytes_downloaded <= 0)
879 return;
880
881 int64_t average_bandwidth =
882 CalculateBandwidthBytesPerSecond(bytes_downloaded, time_span);
883 int64_t file_size_kb = bytes_downloaded / 1024;
884 RecordBandwidthMetric("Download.ParallelizableDownloadBandwidth",
885 average_bandwidth);
886 UMA_HISTOGRAM_LONG_TIMES("Download.Parallelizable.DownloadTime", time_span);
887 UMA_HISTOGRAM_CUSTOM_COUNTS("Download.Parallelizable.FileSize", file_size_kb,
888 1, kMaxFileSizeKb, 50);
889 }
890
866 void RecordParallelDownloadCreationEvent(ParallelDownloadCreationEvent event) { 891 void RecordParallelDownloadCreationEvent(ParallelDownloadCreationEvent event) {
867 UMA_HISTOGRAM_ENUMERATION("Download.ParallelDownload.CreationEvent", event, 892 UMA_HISTOGRAM_ENUMERATION("Download.ParallelDownload.CreationEvent", event,
868 ParallelDownloadCreationEvent::COUNT); 893 ParallelDownloadCreationEvent::COUNT);
869 } 894 }
870 895
871 void RecordDownloadFileRenameResultAfterRetry( 896 void RecordDownloadFileRenameResultAfterRetry(
872 base::TimeDelta time_since_first_failure, 897 base::TimeDelta time_since_first_failure,
873 DownloadInterruptReason interrupt_reason) { 898 DownloadInterruptReason interrupt_reason) {
874 if (interrupt_reason == DOWNLOAD_INTERRUPT_REASON_NONE) { 899 if (interrupt_reason == DOWNLOAD_INTERRUPT_REASON_NONE) {
875 UMA_HISTOGRAM_TIMES("Download.TimeToRenameSuccessAfterInitialFailure", 900 UMA_HISTOGRAM_TIMES("Download.TimeToRenameSuccessAfterInitialFailure",
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 } 977 }
953 978
954 void RecordDownloadHttpResponseCode(int response_code) { 979 void RecordDownloadHttpResponseCode(int response_code) {
955 UMA_HISTOGRAM_CUSTOM_ENUMERATION( 980 UMA_HISTOGRAM_CUSTOM_ENUMERATION(
956 "Download.HttpResponseCode", 981 "Download.HttpResponseCode",
957 net::HttpUtil::MapStatusCodeForHistogram(response_code), 982 net::HttpUtil::MapStatusCodeForHistogram(response_code),
958 net::HttpUtil::GetStatusCodesForHistogram()); 983 net::HttpUtil::GetStatusCodesForHistogram());
959 } 984 }
960 985
961 } // namespace content 986 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_stats.h ('k') | content/browser/download/download_stats_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698