Bug 1866739 - Make HTTP upload throughput keyed by request size, r=acreskey

Differential Revision: https://phabricator.services.mozilla.com/D194729
This commit is contained in:
Kershaw Chang 2023-12-08 12:35:40 +00:00
parent 0c6f31929b
commit 7d4f130840
3 changed files with 327 additions and 41 deletions

View File

@ -606,6 +606,195 @@ networking:
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3
http_1_upload_throughput_10_50:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_1_10_50
http_1_upload_throughput_50_100:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_1_50_100
http_1_upload_throughput_100:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_1_100
http_2_upload_throughput_10_50:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_2_10_50
http_2_upload_throughput_50_100:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_2_50_100
http_2_upload_throughput_100:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_2_100
http_3_upload_throughput_10_50:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3_10_50
http_3_upload_throughput_50_100:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3_50_100
http_3_upload_throughput_100:
type: custom_distribution
unit: mbps
range_min: 0
range_max: 5000
bucket_count: 100
histogram_type: exponential
description: >
The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1866739
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1858256#c2
data_sensitivity:
- technical
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
expires: never
telemetry_mirror: HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3_100
residual_cache_folder_count:
type: counter
description: >

View File

@ -3556,32 +3556,46 @@ void nsHttpTransaction::CollectTelemetryForUploads() {
case HttpVersion::v1_0:
case HttpVersion::v1_1:
glean::networking::http_1_upload_throughput.AccumulateSamples({mpbs});
if (mRequestSize <= TELEMETRY_REQUEST_SIZE_50M) {
glean::networking::http_1_upload_throughput_10_50.AccumulateSamples(
{mpbs});
} else if (mRequestSize <= TELEMETRY_REQUEST_SIZE_100M) {
glean::networking::http_1_upload_throughput_50_100.AccumulateSamples(
{mpbs});
} else {
glean::networking::http_1_upload_throughput_100.AccumulateSamples(
{mpbs});
}
break;
case HttpVersion::v2_0:
glean::networking::http_2_upload_throughput.AccumulateSamples({mpbs});
if (mRequestSize <= TELEMETRY_REQUEST_SIZE_50M) {
glean::networking::http_2_upload_throughput_10_50.AccumulateSamples(
{mpbs});
} else if (mRequestSize <= TELEMETRY_REQUEST_SIZE_100M) {
glean::networking::http_2_upload_throughput_50_100.AccumulateSamples(
{mpbs});
} else {
glean::networking::http_2_upload_throughput_100.AccumulateSamples(
{mpbs});
}
break;
case HttpVersion::v3_0:
glean::networking::http_3_upload_throughput.AccumulateSamples({mpbs});
if (mRequestSize <= TELEMETRY_REQUEST_SIZE_50M) {
glean::networking::http_3_upload_throughput_10_50.AccumulateSamples(
{mpbs});
} else if (mRequestSize <= TELEMETRY_REQUEST_SIZE_100M) {
glean::networking::http_3_upload_throughput_50_100.AccumulateSamples(
{mpbs});
} else {
glean::networking::http_3_upload_throughput_100.AccumulateSamples(
{mpbs});
}
break;
default:
break;
}
if ((mHttpVersion == HttpVersion::v3_0) || mSupportsHTTP3) {
nsAutoCString key((mHttpVersion == HttpVersion::v3_0) ? "uses_http3"
: "supports_http3");
auto hist = Telemetry::HTTP3_UPLOAD_TIME_10M_100M;
if (mRequestSize <= TELEMETRY_REQUEST_SIZE_50M) {
key.Append("_10_50"_ns);
} else if (mRequestSize <= TELEMETRY_REQUEST_SIZE_100M) {
key.Append("_50_100"_ns);
} else {
hist = Telemetry::HTTP3_UPLOAD_TIME_GT_100M;
}
Telemetry::AccumulateTimeDelta(hist, key, mTimings.requestStart,
mTimings.responseStart);
}
}
void nsHttpTransaction::GetHashKeyOfConnectionEntry(nsACString& aResult) {

View File

@ -2928,31 +2928,6 @@
"keyed": true,
"description": "The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3"
},
"HTTP3_UPLOAD_TIME_10M_100M": {
"alert_emails": ["necko@mozilla.com", "ddamjanovic@mozilla.com"],
"record_in_processes": ["main", "socket"],
"products": ["firefox", "fennec"],
"bug_numbers": [1675496, 1712441],
"expires_in_version": "103",
"kind": "exponential",
"high": 120000,
"n_buckets": 100,
"keyed": true,
"description": "HTTP transaction upload time (ms) (keys: uses_http3_10_50 (load size 10M to 50M), uses_http3_50_100 (load size 50M to 100M), supports_http3_10_50, supports_http3_50_100)"
},
"HTTP3_UPLOAD_TIME_GT_100M": {
"alert_emails": ["necko@mozilla.com", "ddamjanovic@mozilla.com"],
"record_in_processes": ["main", "socket"],
"products": ["firefox", "fennec"],
"bug_numbers": [1712441],
"expires_in_version": "103",
"kind": "exponential",
"low": 30000,
"high": 240000,
"n_buckets": 100,
"keyed": true,
"description": "HTTP transaction upload time for resources larger than 100M (ms) (keys: uses_http3, supports_http3)"
},
"HTTPS_RR_OPEN_TO_FIRST_SENT": {
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"record_in_processes": ["main", "content"],
@ -3359,6 +3334,114 @@
"bug_numbers": [1858256],
"description": "The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_1_10_50": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_1_50_100": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_1_100": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/1.0, http/1.1 requests larger than 100MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_2_10_50": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_2_50_100": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_2_100": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/2 requests larger than 100MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3_10_50": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3_50_100": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps."
},
"HTTP_UPLOAD_THROUGHPUT_MBPS_HTTP_3_100": {
"record_in_processes": ["main"],
"products": ["firefox"],
"alert_emails": ["necko@mozilla.com", "kershaw@mozilla.com"],
"expires_in_version": "never",
"releaseChannelCollection": "opt-out",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"bug_numbers": [1866739, 1858256],
"description": "The upload throughput for http/3 requests larger than 100MB. Measured in megabits per second, Mbps."
},
"NETWORK_RACE_CACHE_WITH_NETWORK_USAGE_2": {
"record_in_processes": ["main", "content"],
"products": ["firefox", "fennec"],