From bbbfeff3dc729802a44395a698242371d7a74ee2 Mon Sep 17 00:00:00 2001 From: "mbelshe@google.com" Date: Mon, 28 Dec 2009 22:10:31 +0000 Subject: Fixup some connection time measurements. - Net.TCP_Connection_Latency Time to connect only - Net.DNS_Resolution_And_TCP_Connection_Latency2 Time to do DNS and Connect - Net.HttpConnectionLatency Time for HTTP to connect (includes all delays, DNS, Queue, TCP, etc) BUG=none TEST=none Review URL: http://codereview.chromium.org/517014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35316 0039d316-1c4b-4281-b951-d872f2087c98 --- net/http/http_network_transaction.cc | 4 ++-- net/socket/tcp_client_socket_pool.cc | 15 ++++++++++++--- net/socket/tcp_client_socket_pool.h | 5 ++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index d61188a..a58b8e1 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc @@ -1150,8 +1150,8 @@ void HttpNetworkTransaction::LogTCPConnectedMetrics( !FieldTrial::MakeName("", "SocketLateBinding").empty(); if (handle.reuse_type() == ClientSocketHandle::UNUSED) { - UMA_HISTOGRAM_CLIPPED_TIMES( - "Net.Dns_Resolution_And_TCP_Connection_Latency", + UMA_HISTOGRAM_CUSTOM_TIMES( + "Net.HttpConnectionLatency", time_to_obtain_connected_socket, base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(10), 100); diff --git a/net/socket/tcp_client_socket_pool.cc b/net/socket/tcp_client_socket_pool.cc index 1c6876a..a64c073 100644 --- a/net/socket/tcp_client_socket_pool.cc +++ b/net/socket/tcp_client_socket_pool.cc @@ -68,6 +68,7 @@ LoadState TCPConnectJob::GetLoadState() const { int TCPConnectJob::ConnectInternal() { next_state_ = kStateResolveHost; + start_time_ = base::TimeTicks::Now(); return DoLoop(OK); } @@ -130,10 +131,18 @@ int TCPConnectJob::DoTCPConnect() { int TCPConnectJob::DoTCPConnectComplete(int result) { if (result == OK) { DCHECK(connect_start_time_ != base::TimeTicks()); - base::TimeDelta connect_duration = - base::TimeTicks::Now() - connect_start_time_; + DCHECK(start_time_ != base::TimeTicks()); + base::TimeTicks now = base::TimeTicks::Now(); + base::TimeDelta total_duration = now - start_time_; + UMA_HISTOGRAM_CUSTOM_TIMES( + "Net.DNS_Resolution_And_TCP_Connection_Latency2", + total_duration, + base::TimeDelta::FromMilliseconds(1), + base::TimeDelta::FromMinutes(10), + 100); - UMA_HISTOGRAM_CLIPPED_TIMES("Net.TCP_Connection_Latency", + base::TimeDelta connect_duration = now - connect_start_time_; + UMA_HISTOGRAM_CUSTOM_TIMES("Net.TCP_Connection_Latency", connect_duration, base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(10), diff --git a/net/socket/tcp_client_socket_pool.h b/net/socket/tcp_client_socket_pool.h index 96ebe73..4da6ea8 100644 --- a/net/socket/tcp_client_socket_pool.h +++ b/net/socket/tcp_client_socket_pool.h @@ -68,7 +68,10 @@ class TCPConnectJob : public ConnectJob { AddressList addresses_; State next_state_; - // The time the Connect() method was called (if it got called). + // The time Connect() was called. + base::TimeTicks start_time_; + + // The time the connect was started (after DNS finished). base::TimeTicks connect_start_time_; DISALLOW_COPY_AND_ASSIGN(TCPConnectJob); -- cgit v1.1