summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authormbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-21 06:50:19 +0000
committermbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-21 06:50:19 +0000
commit0aebc00b24f403eedc849ecf816d3f0e3c5dfe76 (patch)
tree6f0ff86922f0d9658abe1ef1eaa80a1be3e02ca4 /net
parent7bc0e693b24a626518f9b0b5eeead31499718ef7 (diff)
downloadchromium_src-0aebc00b24f403eedc849ecf816d3f0e3c5dfe76.zip
chromium_src-0aebc00b24f403eedc849ecf816d3f0e3c5dfe76.tar.gz
chromium_src-0aebc00b24f403eedc849ecf816d3f0e3c5dfe76.tar.bz2
Add more histograms for SPDY and settings.
BUG=none TEST=none Review URL: http://codereview.chromium.org/2098013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47894 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/spdy/spdy_session.cc70
-rw-r--r--net/spdy/spdy_session.h5
2 files changed, 62 insertions, 13 deletions
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 686e960..5c1f133 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -269,6 +269,8 @@ SpdySession::SpdySession(const HostPortPair& host_port_pair,
streams_pushed_count_(0),
streams_pushed_and_claimed_count_(0),
streams_abandoned_count_(0),
+ sent_settings_(false),
+ received_settings_(false),
in_session_pool_(true),
net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SPDY_SESSION)) {
net_log_.BeginEvent(
@@ -293,19 +295,7 @@ SpdySession::~SpdySession() {
connection_->socket()->Disconnect();
}
- // Record per-session histograms here.
- UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPerSession",
- streams_initiated_count_,
- 0, 300, 50);
- UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPushedPerSession",
- streams_pushed_count_,
- 0, 300, 50);
- UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPushedAndClaimedPerSession",
- streams_pushed_and_claimed_count_,
- 0, 300, 50);
- UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsAbandonedPerSession",
- streams_abandoned_count_,
- 0, 300, 50);
+ RecordHistograms();
net_log_.EndEvent(NetLog::TYPE_SPDY_SESSION, NULL);
}
@@ -1240,6 +1230,8 @@ void SpdySession::OnSettings(const spdy::SpdySettingsControlFrame& frame) {
settings_storage->Set(host_port_pair_, settings);
}
+ received_settings_ = true;
+
net_log_.AddEvent(
NetLog::TYPE_SPDY_SESSION_RECV_SETTINGS,
new NetLogSpdySettingsParameter(settings));
@@ -1258,7 +1250,59 @@ void SpdySession::SendSettings() {
// Create the SETTINGS frame and send it.
scoped_ptr<spdy::SpdySettingsControlFrame> settings_frame(
spdy_framer_.CreateSettings(settings));
+ sent_settings_ = true;
QueueFrame(settings_frame.get(), 0, NULL);
}
+void SpdySession::RecordHistograms() {
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPerSession",
+ streams_initiated_count_,
+ 0, 300, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPushedPerSession",
+ streams_pushed_count_,
+ 0, 300, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPushedAndClaimedPerSession",
+ streams_pushed_and_claimed_count_,
+ 0, 300, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsAbandonedPerSession",
+ streams_abandoned_count_,
+ 0, 300, 50);
+ UMA_HISTOGRAM_ENUMERATION("Net.SpdySettingsSent",
+ sent_settings_ ? 1 : 0, 2);
+ UMA_HISTOGRAM_ENUMERATION("Net.SpdySettingsReceived",
+ received_settings_ ? 1 : 0, 2);
+
+ if (received_settings_) {
+ // Enumerate the saved settings, and set histograms for it.
+ const SpdySettingsStorage& settings_storage = session_->spdy_settings();
+ const spdy::SpdySettings& settings = settings_storage.Get(host_port_pair_);
+ if (settings.empty()) {
+ NOTREACHED(); // If we lost our settings already, something is wrong!
+ return;
+ }
+
+ spdy::SpdySettings::const_iterator it;
+ for (it = settings.begin(); it != settings.end(); ++it) {
+ const spdy::SpdySetting setting = *it;
+ switch (setting.first.id()) {
+ case spdy::SETTINGS_CURRENT_CWND:
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdySettingsCwnd",
+ setting.second,
+ 1, 200, 100);
+ break;
+ case spdy::SETTINGS_ROUND_TRIP_TIME:
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdySettingsRTT",
+ setting.second,
+ 1, 1200, 100);
+ break;
+ case spdy::SETTINGS_DOWNLOAD_RETRANS_RATE:
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdySettingsRetransRate",
+ setting.second,
+ 1, 100, 50);
+ break;
+ }
+ }
+ }
+}
+
} // namespace net
diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h
index 8ef8759..f9f9e6f 100644
--- a/net/spdy/spdy_session.h
+++ b/net/spdy/spdy_session.h
@@ -179,6 +179,8 @@ class SpdySession : public base::RefCounted<SpdySession>,
void GetSSLInfo(SSLInfo* ssl_info);
+ void RecordHistograms();
+
// Callbacks for the Spdy session.
CompletionCallbackImpl<SpdySession> connect_callback_;
CompletionCallbackImpl<SpdySession> ssl_connect_callback_;
@@ -249,6 +251,9 @@ class SpdySession : public base::RefCounted<SpdySession>,
int streams_pushed_count_;
int streams_pushed_and_claimed_count_;
int streams_abandoned_count_;
+ bool sent_settings_; // Did this session send settings when it started.
+ bool received_settings_; // Did this session receive at least one settings
+ // frame.
bool in_session_pool_; // True if the session is currently in the pool.