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

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

Issue 12886034: Remove experimental code to pick the "warmest" socket (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Don't add missing include (Shouldn't be done in this CL) Created 7 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chrome_browser_field_trials.h" 5 #include "chrome/browser/chrome_browser_field_trials.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
11 #include "base/string_util.h" 11 #include "base/string_util.h"
12 #include "base/stringprintf.h" 12 #include "base/stringprintf.h"
13 #include "base/strings/string_number_conversions.h" 13 #include "base/strings/string_number_conversions.h"
14 #include "base/sys_string_conversions.h" 14 #include "base/sys_string_conversions.h"
15 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
16 #include "chrome/browser/auto_launch_trial.h" 16 #include "chrome/browser/auto_launch_trial.h"
17 #include "chrome/browser/google/google_util.h" 17 #include "chrome/browser/google/google_util.h"
18 #include "chrome/browser/gpu/chrome_gpu_util.h" 18 #include "chrome/browser/gpu/chrome_gpu_util.h"
19 #include "chrome/browser/metrics/variations/variations_service.h" 19 #include "chrome/browser/metrics/variations/variations_service.h"
20 #include "chrome/browser/omnibox/omnibox_field_trial.h" 20 #include "chrome/browser/omnibox/omnibox_field_trial.h"
21 #include "chrome/browser/prerender/prerender_field_trial.h" 21 #include "chrome/browser/prerender/prerender_field_trial.h"
22 #include "chrome/browser/profiles/profile_manager.h" 22 #include "chrome/browser/profiles/profile_manager.h"
23 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" 23 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
24 #include "chrome/browser/ui/sync/one_click_signin_helper.h" 24 #include "chrome/browser/ui/sync/one_click_signin_helper.h"
25 #include "chrome/common/chrome_switches.h" 25 #include "chrome/common/chrome_switches.h"
26 #include "chrome/common/chrome_version_info.h" 26 #include "chrome/common/chrome_version_info.h"
27 #include "chrome/common/metrics/variations/uniformity_field_trials.h" 27 #include "chrome/common/metrics/variations/uniformity_field_trials.h"
28 #include "chrome/common/metrics/variations/variations_util.h" 28 #include "chrome/common/metrics/variations/variations_util.h"
29 #include "net/socket/client_socket_pool_base.h"
30 #include "net/spdy/spdy_session.h" 29 #include "net/spdy/spdy_session.h"
31 #include "ui/base/layout.h" 30 #include "ui/base/layout.h"
32 31
33 #if defined(OS_WIN) 32 #if defined(OS_WIN)
34 #include "net/socket/tcp_client_socket_win.h" 33 #include "net/socket/tcp_client_socket_win.h"
35 #endif // defined(OS_WIN) 34 #endif // defined(OS_WIN)
36 35
37 namespace {
38
39 void SetSocketReusePolicy(int warmest_socket_trial_group,
40 const int socket_policy[],
41 int num_groups) {
42 const int* result = std::find(socket_policy, socket_policy + num_groups,
43 warmest_socket_trial_group);
44 DCHECK_NE(result, socket_policy + num_groups)
45 << "Not a valid socket reuse policy group";
46 net::SetSocketReusePolicy(result - socket_policy);
47 }
48
49 } // namespace
50
51 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials( 36 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials(
52 const CommandLine& parsed_command_line) : 37 const CommandLine& parsed_command_line)
53 parsed_command_line_(parsed_command_line) { 38 : parsed_command_line_(parsed_command_line) {
54 } 39 }
55 40
56 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { 41 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() {
57 } 42 }
58 43
59 void ChromeBrowserFieldTrials::SetupFieldTrials( 44 void ChromeBrowserFieldTrials::SetupFieldTrials(
60 const base::Time& install_time) { 45 const base::Time& install_time) {
61 chrome_variations::SetupUniformityFieldTrials(install_time); 46 chrome_variations::SetupUniformityFieldTrials(install_time);
62 SetUpSimpleCacheFieldTrial(); 47 SetUpSimpleCacheFieldTrial();
63 #if !defined(OS_ANDROID) 48 #if !defined(OS_ANDROID)
64 SetupDesktopFieldTrials(); 49 SetupDesktopFieldTrials();
65 #endif // defined(OS_ANDROID) 50 #endif // defined(OS_ANDROID)
66 } 51 }
67 52
68 void ChromeBrowserFieldTrials::SetupDesktopFieldTrials() { 53 void ChromeBrowserFieldTrials::SetupDesktopFieldTrials() {
69 prerender::ConfigurePrefetchAndPrerender(parsed_command_line_); 54 prerender::ConfigurePrefetchAndPrerender(parsed_command_line_);
70 SpdyFieldTrial(); 55 SpdyFieldTrial();
71 WarmConnectionFieldTrial();
72 AutoLaunchChromeFieldTrial(); 56 AutoLaunchChromeFieldTrial();
73 gpu_util::InitializeCompositingFieldTrial(); 57 gpu_util::InitializeCompositingFieldTrial();
74 OmniboxFieldTrial::ActivateStaticTrials(); 58 OmniboxFieldTrial::ActivateStaticTrials();
75 SetUpInfiniteCacheFieldTrial(); 59 SetUpInfiniteCacheFieldTrial();
76 SetUpCacheSensitivityAnalysisFieldTrial(); 60 SetUpCacheSensitivityAnalysisFieldTrial();
77 DisableShowProfileSwitcherTrialIfNecessary(); 61 DisableShowProfileSwitcherTrialIfNecessary();
78 WindowsOverlappedTCPReadsFieldTrial(); 62 WindowsOverlappedTCPReadsFieldTrial();
79 #if defined(ENABLE_ONE_CLICK_SIGNIN) 63 #if defined(ENABLE_ONE_CLICK_SIGNIN)
80 OneClickSigninHelper::InitializeFieldTrial(); 64 OneClickSigninHelper::InitializeFieldTrial();
81 #endif 65 #endif
(...skipping 20 matching lines...) Expand all
102 scoped_refptr<base::FieldTrial> trial( 86 scoped_refptr<base::FieldTrial> trial(
103 base::FieldTrialList::FactoryGetFieldTrial( 87 base::FieldTrialList::FactoryGetFieldTrial(
104 "SpdyCwnd", kSpdyCwndDivisor, "cwndDynamic", 2013, 6, 30, NULL)); 88 "SpdyCwnd", kSpdyCwndDivisor, "cwndDynamic", 2013, 6, 30, NULL));
105 89
106 trial->AppendGroup("cwnd10", kSpdyCwnd10); 90 trial->AppendGroup("cwnd10", kSpdyCwnd10);
107 trial->AppendGroup("cwnd16", kSpdyCwnd16); 91 trial->AppendGroup("cwnd16", kSpdyCwnd16);
108 trial->AppendGroup("cwndMin16", kSpdyCwndMin16); 92 trial->AppendGroup("cwndMin16", kSpdyCwndMin16);
109 trial->AppendGroup("cwndMin10", kSpdyCwndMin10); 93 trial->AppendGroup("cwndMin10", kSpdyCwndMin10);
110 } 94 }
111 95
112 // If --socket-reuse-policy is not specified, run an A/B test for choosing the
113 // warmest socket.
114 void ChromeBrowserFieldTrials::WarmConnectionFieldTrial() {
115 const CommandLine& command_line = parsed_command_line_;
116 if (command_line.HasSwitch(switches::kSocketReusePolicy)) {
117 std::string socket_reuse_policy_str = command_line.GetSwitchValueASCII(
118 switches::kSocketReusePolicy);
119 int policy = -1;
120 base::StringToInt(socket_reuse_policy_str, &policy);
121
122 const int policy_list[] = { 0, 1, 2 };
123 VLOG(1) << "Setting socket_reuse_policy = " << policy;
124 SetSocketReusePolicy(policy, policy_list, arraysize(policy_list));
125 return;
126 }
127
128 const base::FieldTrial::Probability kWarmSocketDivisor = 100;
129 const base::FieldTrial::Probability kWarmSocketProbability = 33;
130
131 // Default value is USE_LAST_ACCESSED_SOCKET.
132 int last_accessed_socket = -1;
133
134 // After January 30, 2013 builds, it will always be in default group.
135 scoped_refptr<base::FieldTrial> warmest_socket_trial(
136 base::FieldTrialList::FactoryGetFieldTrial(
137 "WarmSocketImpact", kWarmSocketDivisor, "last_accessed_socket",
138 2013, 1, 30, &last_accessed_socket));
139
140 const int warmest_socket = warmest_socket_trial->AppendGroup(
141 "warmest_socket", kWarmSocketProbability);
142 const int warm_socket = warmest_socket_trial->AppendGroup(
143 "warm_socket", kWarmSocketProbability);
144
145 const int warmest_socket_trial_group = warmest_socket_trial->group();
146
147 const int policy_list[] = { warmest_socket, warm_socket,
148 last_accessed_socket };
149 SetSocketReusePolicy(warmest_socket_trial_group, policy_list,
150 arraysize(policy_list));
151 }
152
153 void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() { 96 void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() {
154 std::string brand; 97 std::string brand;
155 google_util::GetBrand(&brand); 98 google_util::GetBrand(&brand);
156 99
157 // Create a 100% field trial based on the brand code. 100 // Create a 100% field trial based on the brand code.
158 if (auto_launch_trial::IsInExperimentGroup(brand)) { 101 if (auto_launch_trial::IsInExperimentGroup(brand)) {
159 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName, 102 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName,
160 kAutoLaunchTrialAutoLaunchGroup); 103 kAutoLaunchTrialAutoLaunchGroup);
161 } else if (auto_launch_trial::IsInControlGroup(brand)) { 104 } else if (auto_launch_trial::IsInControlGroup(brand)) {
162 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName, 105 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 // Call |FindValue()| on the trials below, which may come from the server, to 213 // Call |FindValue()| on the trials below, which may come from the server, to
271 // ensure they get marked as "used" for the purposes of data reporting. 214 // ensure they get marked as "used" for the purposes of data reporting.
272 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); 215 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial");
273 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial"); 216 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial");
274 base::FieldTrialList::FindValue("InstantDummy"); 217 base::FieldTrialList::FindValue("InstantDummy");
275 base::FieldTrialList::FindValue("InstantChannel"); 218 base::FieldTrialList::FindValue("InstantChannel");
276 base::FieldTrialList::FindValue("Test0PercentDefault"); 219 base::FieldTrialList::FindValue("Test0PercentDefault");
277 // Activate the autocomplete dynamic field trials. 220 // Activate the autocomplete dynamic field trials.
278 OmniboxFieldTrial::ActivateDynamicTrials(); 221 OmniboxFieldTrial::ActivateDynamicTrials();
279 } 222 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698