summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/socket/transport_client_socket_pool.cc57
-rw-r--r--net/socket/transport_client_socket_pool.h11
-rw-r--r--tools/metrics/histograms/histograms.xml13
3 files changed, 59 insertions, 22 deletions
diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc
index 6da3b45..ec56dcb 100644
--- a/net/socket/transport_client_socket_pool.cc
+++ b/net/socket/transport_client_socket_pool.cc
@@ -96,7 +96,7 @@ TransportConnectJob::TransportConnectJob(
client_socket_factory_(client_socket_factory),
resolver_(host_resolver),
next_state_(STATE_NONE),
- less_than_20ms_since_connect_(true) {
+ interval_between_connects_(CONNECT_INTERVAL_GT_20MS) {
}
TransportConnectJob::~TransportConnectJob() {
@@ -204,11 +204,16 @@ int TransportConnectJob::DoTransportConnect() {
last_connect_time = g_last_connect_time.Get();
*g_last_connect_time.Pointer() = now;
}
- if (last_connect_time.is_null() ||
- (now - last_connect_time).InMilliseconds() < 20) {
- less_than_20ms_since_connect_ = true;
+ if (last_connect_time.is_null()) {
+ interval_between_connects_ = CONNECT_INTERVAL_GT_20MS;
} else {
- less_than_20ms_since_connect_ = false;
+ int64 interval = (now - last_connect_time).InMilliseconds();
+ if (interval <= 10)
+ interval_between_connects_ = CONNECT_INTERVAL_LE_10MS;
+ else if (interval <= 20)
+ interval_between_connects_ = CONNECT_INTERVAL_LE_20MS;
+ else
+ interval_between_connects_ = CONNECT_INTERVAL_GT_20MS;
}
next_state_ = STATE_TRANSPORT_CONNECT_COMPLETE;
@@ -247,20 +252,34 @@ int TransportConnectJob::DoTransportConnectComplete(int result) {
base::TimeDelta::FromMinutes(10),
100);
- if (less_than_20ms_since_connect_) {
- UMA_HISTOGRAM_CUSTOM_TIMES(
- "Net.TCP_Connection_Latency_Interval_20ms_Minus",
- connect_duration,
- base::TimeDelta::FromMilliseconds(1),
- base::TimeDelta::FromMinutes(10),
- 100);
- } else {
- UMA_HISTOGRAM_CUSTOM_TIMES(
- "Net.TCP_Connection_Latency_Interval_20ms_Plus",
- connect_duration,
- base::TimeDelta::FromMilliseconds(1),
- base::TimeDelta::FromMinutes(10),
- 100);
+ switch (interval_between_connects_) {
+ case CONNECT_INTERVAL_LE_10MS:
+ UMA_HISTOGRAM_CUSTOM_TIMES(
+ "Net.TCP_Connection_Latency_Interval_LessThanOrEqual_10ms",
+ connect_duration,
+ base::TimeDelta::FromMilliseconds(1),
+ base::TimeDelta::FromMinutes(10),
+ 100);
+ break;
+ case CONNECT_INTERVAL_LE_20MS:
+ UMA_HISTOGRAM_CUSTOM_TIMES(
+ "Net.TCP_Connection_Latency_Interval_LessThanOrEqual_20ms",
+ connect_duration,
+ base::TimeDelta::FromMilliseconds(1),
+ base::TimeDelta::FromMinutes(10),
+ 100);
+ break;
+ case CONNECT_INTERVAL_GT_20MS:
+ UMA_HISTOGRAM_CUSTOM_TIMES(
+ "Net.TCP_Connection_Latency_Interval_GreaterThan_20ms",
+ connect_duration,
+ base::TimeDelta::FromMilliseconds(1),
+ base::TimeDelta::FromMinutes(10),
+ 100);
+ break;
+ default:
+ NOTREACHED();
+ break;
}
if (is_ipv4) {
diff --git a/net/socket/transport_client_socket_pool.h b/net/socket/transport_client_socket_pool.h
index 95b51c3..1c22bf2 100644
--- a/net/socket/transport_client_socket_pool.h
+++ b/net/socket/transport_client_socket_pool.h
@@ -93,6 +93,12 @@ class NET_EXPORT_PRIVATE TransportConnectJob : public ConnectJob {
STATE_NONE,
};
+ enum ConnectInterval {
+ CONNECT_INTERVAL_LE_10MS,
+ CONNECT_INTERVAL_LE_20MS,
+ CONNECT_INTERVAL_GT_20MS,
+ };
+
void OnIOComplete(int result);
// Runs the state transition loop.
@@ -125,9 +131,8 @@ class NET_EXPORT_PRIVATE TransportConnectJob : public ConnectJob {
base::TimeTicks fallback_connect_start_time_;
base::OneShotTimer<TransportConnectJob> fallback_timer_;
- // If the interval between this connect and previous connect is less than
- // 20ms, then |less_than_20ms_since_connect_| is set to true.
- bool less_than_20ms_since_connect_;
+ // Track the interval between this connect and previous connect.
+ ConnectInterval interval_between_connects_;
DISALLOW_COPY_AND_ASSIGN(TransportConnectJob);
};
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 603e5ad..c572e7d 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -30280,6 +30280,11 @@ other types of suffix sets.
<affected-histogram name="Instant.SessionsStorageNamespace"/>
</fieldtrial>
+<fieldtrial name="Interval" separator="_">
+ <group name="Interval" label="Interval between two consecutive connects is"/>
+ <affected-histogram name="Net.TCP_Connection_Latency"/>
+</fieldtrial>
+
<fieldtrial name="Interval_20ms_plus_and_minus" separator="_">
<group name="Interval_20ms_Minus"
label="Interval between two consecutive connects is less than 20ms."/>
@@ -30289,6 +30294,14 @@ other types of suffix sets.
<affected-histogram name="Net.TCP_Connection_Latency"/>
</fieldtrial>
+<fieldtrial name="Interval_lt_gt_20ms" separator="_">
+ <group name="LessThanOrEqual_10ms" label="less than or equal to 10ms."/>
+ <group name="LessThanOrEqual_20ms"
+ label="more than 10ms, and less than or equal to 20ms."/>
+ <group name="GreaterThan_20ms" label="greater than 20ms."/>
+ <affected-histogram name="Net.TCP_Connection_Latency_Interval"/>
+</fieldtrial>
+
<fieldtrial name="IPv6_Probe">
<group name="IPv6_probe_skipped"
label="with IPv6 not probed, and default OS settings used"/>