Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: chrome/browser/browser_main.cc

Issue 3077001: Experiment for number of persistent connections per host... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/browser_main.h" 5 #include "chrome/browser/browser_main.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 PostEarlyInitialization(); 172 PostEarlyInitialization();
173 } 173 }
174 174
175 // This is an A/B test for the maximum number of persistent connections per 175 // This is an A/B test for the maximum number of persistent connections per
176 // host. Currently Chrome, Firefox, and IE8 have this value set at 6. Safari 176 // host. Currently Chrome, Firefox, and IE8 have this value set at 6. Safari
177 // uses 4, and Fasterfox (a plugin for Firefox that supposedly configures it to 177 // uses 4, and Fasterfox (a plugin for Firefox that supposedly configures it to
178 // run faster) uses 8. We would like to see how much of an effect this value has 178 // run faster) uses 8. We would like to see how much of an effect this value has
179 // on browsing. Too large a value might cause us to run into SYN flood detection 179 // on browsing. Too large a value might cause us to run into SYN flood detection
180 // mechanisms. 180 // mechanisms.
181 void BrowserMainParts::ConnectionFieldTrial() { 181 void BrowserMainParts::ConnectionFieldTrial() {
182 const FieldTrial::Probability kConnDivisor = 100; 182 const FieldTrial::Probability kConnectDivisor = 100;
183 const FieldTrial::Probability kConn16 = 10; // 10% probability 183 const FieldTrial::Probability kConnectProbability = 20; // 20% probability
184 const FieldTrial::Probability kRemainingConn = 30; // 30% probability
185 184
186 scoped_refptr<FieldTrial> conn_trial = 185 scoped_refptr<FieldTrial> connect_trial =
187 new FieldTrial("ConnCountImpact", kConnDivisor); 186 new FieldTrial("ConnCountImpact", kConnectDivisor);
188 187
189 const int conn_16 = conn_trial->AppendGroup("_conn_count_16", kConn16); 188 const int connect_5 = connect_trial->AppendGroup("_conn_count_5",
190 const int conn_4 = conn_trial->AppendGroup("_conn_count_4", kRemainingConn); 189 kConnectProbability);
191 const int conn_8 = conn_trial->AppendGroup("_conn_count_8", kRemainingConn); 190 const int connect_6 = connect_trial->AppendGroup("_conn_count_6",
192 const int conn_6 = conn_trial->AppendGroup("_conn_count_6", 191 kConnectProbability);
192 const int connect_7 = connect_trial->AppendGroup("_conn_count_7",
193 kConnectProbability);
194 const int connect_8 = connect_trial->AppendGroup("_conn_count_8",
195 kConnectProbability);
196 const int connect_9 = connect_trial->AppendGroup("_conn_count_9",
193 FieldTrial::kAllRemainingProbability); 197 FieldTrial::kAllRemainingProbability);
194 198
195 const int conn_trial_grp = conn_trial->group(); 199 const int connect_trial_group = connect_trial->group();
196 200
197 if (conn_trial_grp == conn_4) { 201 if (connect_trial_group == connect_5) {
198 net::HttpNetworkSession::set_max_sockets_per_group(4); 202 net::HttpNetworkSession::set_max_sockets_per_group(5);
199 } else if (conn_trial_grp == conn_6) { 203 } else if (connect_trial_group == connect_6) {
200 // This (6) is the current default value. 204 // This (6) is the current default value.
201 net::HttpNetworkSession::set_max_sockets_per_group(6); 205 net::HttpNetworkSession::set_max_sockets_per_group(6);
202 } else if (conn_trial_grp == conn_8) { 206 } else if (connect_trial_group == connect_7) {
207 net::HttpNetworkSession::set_max_sockets_per_group(7);
208 } else if (connect_trial_group == connect_8) {
203 net::HttpNetworkSession::set_max_sockets_per_group(8); 209 net::HttpNetworkSession::set_max_sockets_per_group(8);
204 } else if (conn_trial_grp == conn_16) { 210 } else if (connect_trial_group == connect_9) {
205 net::HttpNetworkSession::set_max_sockets_per_group(16); 211 net::HttpNetworkSession::set_max_sockets_per_group(9);
206 } else { 212 } else {
207 NOTREACHED(); 213 NOTREACHED();
208 } 214 }
209 } 215 }
210 216
211 // A/B test for determining a value for unused socket timeout. Currently the 217 // A/B test for determining a value for unused socket timeout. Currently the
212 // timeout defaults to 10 seconds. Having this value set too low won't allow us 218 // timeout defaults to 10 seconds. Having this value set too low won't allow us
213 // to take advantage of idle sockets. Setting it to too high could possibly 219 // to take advantage of idle sockets. Setting it to too high could possibly
214 // result in more ERR_CONNECT_RESETs, requiring one RTT to receive the RST 220 // result in more ERR_CONNECT_RESETs, requiring one RTT to receive the RST
215 // packet and possibly another RTT to re-establish the connection. 221 // packet and possibly another RTT to re-establish the connection.
216 void BrowserMainParts::SocketTimeoutFieldTrial() { 222 void BrowserMainParts::SocketTimeoutFieldTrial() {
217 const FieldTrial::Probability kIdleSktToDivisor = 100; // Idle socket timeout 223 const FieldTrial::Probability kIdleSocketTimeoutDivisor = 100;
218 const FieldTrial::Probability kSktToProb = 25; // 25% probability 224 // 25% probability
225 const FieldTrial::Probability kSocketTimeoutProbability = 25;
219 226
220 scoped_refptr<FieldTrial> socket_timeout_trial = 227 scoped_refptr<FieldTrial> socket_timeout_trial =
221 new FieldTrial("IdleSktToImpact", kIdleSktToDivisor); 228 new FieldTrial("IdleSktToImpact", kIdleSocketTimeoutDivisor);
222 229
223 const int socket_timeout_5 = 230 const int socket_timeout_5 =
224 socket_timeout_trial->AppendGroup("_idle_timeout_5", kSktToProb); 231 socket_timeout_trial->AppendGroup("_idle_timeout_5",
232 kSocketTimeoutProbability);
225 const int socket_timeout_10 = 233 const int socket_timeout_10 =
226 socket_timeout_trial->AppendGroup("_idle_timeout_10", kSktToProb); 234 socket_timeout_trial->AppendGroup("_idle_timeout_10",
235 kSocketTimeoutProbability);
227 const int socket_timeout_20 = 236 const int socket_timeout_20 =
228 socket_timeout_trial->AppendGroup("_idle_timeout_20", kSktToProb); 237 socket_timeout_trial->AppendGroup("_idle_timeout_20",
238 kSocketTimeoutProbability);
229 const int socket_timeout_60 = 239 const int socket_timeout_60 =
230 socket_timeout_trial->AppendGroup("_idle_timeout_60", 240 socket_timeout_trial->AppendGroup("_idle_timeout_60",
231 FieldTrial::kAllRemainingProbability); 241 FieldTrial::kAllRemainingProbability);
232 242
233 const int idle_to_trial_grp = socket_timeout_trial->group(); 243 const int idle_to_trial_group = socket_timeout_trial->group();
234 244
235 if (idle_to_trial_grp == socket_timeout_5) { 245 if (idle_to_trial_group == socket_timeout_5) {
236 net::ClientSocketPool::set_unused_idle_socket_timeout(5); 246 net::ClientSocketPool::set_unused_idle_socket_timeout(5);
237 } else if (idle_to_trial_grp == socket_timeout_10) { 247 } else if (idle_to_trial_group == socket_timeout_10) {
238 // This (10 seconds) is the current default value. 248 // This (10 seconds) is the current default value.
239 net::ClientSocketPool::set_unused_idle_socket_timeout(10); 249 net::ClientSocketPool::set_unused_idle_socket_timeout(10);
240 } else if (idle_to_trial_grp == socket_timeout_20) { 250 } else if (idle_to_trial_group == socket_timeout_20) {
241 net::ClientSocketPool::set_unused_idle_socket_timeout(20); 251 net::ClientSocketPool::set_unused_idle_socket_timeout(20);
242 } else if (idle_to_trial_grp == socket_timeout_60) { 252 } else if (idle_to_trial_group == socket_timeout_60) {
243 net::ClientSocketPool::set_unused_idle_socket_timeout(60); 253 net::ClientSocketPool::set_unused_idle_socket_timeout(60);
244 } else { 254 } else {
245 NOTREACHED(); 255 NOTREACHED();
246 } 256 }
247 } 257 }
248 258
249 // When --use-spdy not set, users will be in A/B test for spdy. 259 // When --use-spdy not set, users will be in A/B test for spdy.
250 // group A (npn_with_spdy): this means npn and spdy are enabled. In case server 260 // group A (npn_with_spdy): this means npn and spdy are enabled. In case server
251 // supports spdy, browser will use spdy. 261 // supports spdy, browser will use spdy.
252 // group B (npn_with_http): this means npn is enabled but spdy won't be used. 262 // group B (npn_with_http): this means npn is enabled but spdy won't be used.
(...skipping 1048 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 1311
1302 metrics->Stop(); 1312 metrics->Stop();
1303 1313
1304 // browser_shutdown takes care of deleting browser_process, so we need to 1314 // browser_shutdown takes care of deleting browser_process, so we need to
1305 // release it. 1315 // release it.
1306 ignore_result(browser_process.release()); 1316 ignore_result(browser_process.release());
1307 browser_shutdown::Shutdown(); 1317 browser_shutdown::Shutdown();
1308 1318
1309 return result_code; 1319 return result_code;
1310 } 1320 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698