diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-17 23:51:24 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-17 23:51:24 +0000 |
commit | 42afa7c1459ea4e26c5977a249aa58bac91a7003 (patch) | |
tree | f854a1061462f638f94fec152a7134c2a899d0c3 /net | |
parent | 037958af0fa3a7541a067b72bb904a4c67452f73 (diff) | |
download | chromium_src-42afa7c1459ea4e26c5977a249aa58bac91a7003.zip chromium_src-42afa7c1459ea4e26c5977a249aa58bac91a7003.tar.gz chromium_src-42afa7c1459ea4e26c5977a249aa58bac91a7003.tar.bz2 |
Add tcp connection time histograms.
Review URL: http://codereview.chromium.org/77036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13985 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/http/http_network_transaction.cc | 14 | ||||
-rw-r--r-- | net/http/http_network_transaction.h | 6 |
2 files changed, 20 insertions, 0 deletions
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index aa5b691..1065729 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc @@ -595,6 +595,8 @@ int HttpNetworkTransaction::DoTCPConnect() { DCHECK(!connection_.socket()); + connect_start_time_ = base::Time::Now(); + ClientSocket* s = socket_factory_->CreateTCPClientSocket(addresses_); connection_.set_socket(s); return connection_.socket()->Connect(&io_callback_); @@ -604,6 +606,7 @@ int HttpNetworkTransaction::DoTCPConnectComplete(int result) { // If we are using a direct SSL connection, then go ahead and establish the // SSL connection, now. Otherwise, we need to first issue a CONNECT request. if (result == OK) { + LogTCPConnectionMetrics(); if (using_ssl_ && !using_tunnel_) { next_state_ = STATE_SSL_CONNECT; } else { @@ -960,6 +963,17 @@ int HttpNetworkTransaction::DoDrainBodyForAuthRestartComplete(int result) { return OK; } +void HttpNetworkTransaction::LogTCPConnectionMetrics() const { + DCHECK(connect_start_time_ != base::Time()); + base::TimeDelta connect_duration = + base::Time::Now() - connect_start_time_; + + UMA_HISTOGRAM_CLIPPED_TIMES(FieldTrial::MakeName( + "Net.TCP_Connection_Latency", "DnsImpact").data(), connect_duration, + base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(10), + 100); +} + void HttpNetworkTransaction::LogTransactionConnectedMetrics() const { base::TimeDelta total_duration = response_.response_time - start_time_; diff --git a/net/http/http_network_transaction.h b/net/http/http_network_transaction.h index d41d29d..3915c7e 100644 --- a/net/http/http_network_transaction.h +++ b/net/http/http_network_transaction.h @@ -88,6 +88,9 @@ class HttpNetworkTransaction : public HttpTransaction { int DoDrainBodyForAuthRestart(); int DoDrainBodyForAuthRestartComplete(int result); + // Record histogram of time to acquire a TCP connection. + void LogTCPConnectionMetrics() const; + // Record histogram of time until first byte of header is received. void LogTransactionConnectedMetrics() const; @@ -309,6 +312,9 @@ class HttpNetworkTransaction : public HttpTransaction { // The time the Start method was called. base::Time start_time_; + // The time the Connect() method was called (if it got called). + base::Time connect_start_time_; + enum State { STATE_RESOLVE_PROXY, STATE_RESOLVE_PROXY_COMPLETE, |