Commit 75e287db authored by willchan@chromium.org's avatar willchan@chromium.org

Add a histogram to measure the number of idle sockets when a TCP connection is established.

Review URL: http://codereview.chromium.org/99205

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14955 0039d316-1c4b-4281-b951-d872f2087c98
parent 4b77038e
...@@ -62,6 +62,7 @@ class ClientSocketHandle { ...@@ -62,6 +62,7 @@ class ClientSocketHandle {
bool is_initialized() const { return socket_ != NULL; } bool is_initialized() const { return socket_ != NULL; }
// These may only be used if is_initialized() is true. // These may only be used if is_initialized() is true.
const std::string& group_name() const { return group_name_; }
ClientSocket* socket() { return socket_->get(); } ClientSocket* socket() { return socket_->get(); }
ClientSocket* release_socket() { return socket_->release(); } ClientSocket* release_socket() { return socket_->release(); }
void set_socket(ClientSocket* s) { socket_->reset(s); } void set_socket(ClientSocket* s) { socket_->reset(s); }
......
...@@ -122,6 +122,14 @@ void ClientSocketPool::CloseIdleSockets() { ...@@ -122,6 +122,14 @@ void ClientSocketPool::CloseIdleSockets() {
CleanupIdleSockets(true); CleanupIdleSockets(true);
} }
int ClientSocketPool::IdleSocketCountInGroup(
const std::string& group_name) const {
GroupMap::const_iterator i = group_map_.find(group_name);
DCHECK(i != group_map_.end());
return i->second.idle_sockets.size();
}
bool ClientSocketPool::IdleSocket::ShouldCleanup(base::TimeTicks now) const { bool ClientSocketPool::IdleSocket::ShouldCleanup(base::TimeTicks now) const {
bool timed_out = (now - start_time) >= bool timed_out = (now - start_time) >=
base::TimeDelta::FromSeconds(kIdleTimeout); base::TimeDelta::FromSeconds(kIdleTimeout);
......
...@@ -73,6 +73,9 @@ class ClientSocketPool : public base::RefCounted<ClientSocketPool> { ...@@ -73,6 +73,9 @@ class ClientSocketPool : public base::RefCounted<ClientSocketPool> {
return idle_socket_count_; return idle_socket_count_;
} }
// The total number of idle sockets in a connection group.
int IdleSocketCountInGroup(const std::string& group_name) const;
private: private:
friend class base::RefCounted<ClientSocketPool>; friend class base::RefCounted<ClientSocketPool>;
......
...@@ -1033,6 +1033,12 @@ void HttpNetworkTransaction::LogTCPConnectedMetrics() const { ...@@ -1033,6 +1033,12 @@ void HttpNetworkTransaction::LogTCPConnectedMetrics() const {
host_resolution_and_tcp_connection_latency, host_resolution_and_tcp_connection_latency,
base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(10), base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromMinutes(10),
100); 100);
UMA_HISTOGRAM_COUNTS_100(
FieldTrial::MakeName(
"Net.TCP_Connection_Idle_Sockets", "DnsImpact").data(),
session_->connection_pool()->IdleSocketCountInGroup(
connection_.group_name()));
} }
void HttpNetworkTransaction::LogTransactionConnectedMetrics() const { void HttpNetworkTransaction::LogTransactionConnectedMetrics() const {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment