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

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: sync, fix conflict 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
« no previous file with comments | « chrome/browser/chrome_browser_field_trials.h ('k') | chrome/browser/chrome_browser_main.h » ('j') | 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) 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 "apps/field_trial_names.h" 9 #include "apps/field_trial_names.h"
10 #include "apps/pref_names.h" 10 #include "apps/pref_names.h"
(...skipping 12 matching lines...) Expand all
23 #include "chrome/browser/omnibox/omnibox_field_trial.h" 23 #include "chrome/browser/omnibox/omnibox_field_trial.h"
24 #include "chrome/browser/prerender/prerender_field_trial.h" 24 #include "chrome/browser/prerender/prerender_field_trial.h"
25 #include "chrome/browser/profiles/profile_manager.h" 25 #include "chrome/browser/profiles/profile_manager.h"
26 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" 26 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
27 #include "chrome/browser/ui/sync/one_click_signin_helper.h" 27 #include "chrome/browser/ui/sync/one_click_signin_helper.h"
28 #include "chrome/common/chrome_switches.h" 28 #include "chrome/common/chrome_switches.h"
29 #include "chrome/common/chrome_version_info.h" 29 #include "chrome/common/chrome_version_info.h"
30 #include "chrome/common/metrics/variations/uniformity_field_trials.h" 30 #include "chrome/common/metrics/variations/uniformity_field_trials.h"
31 #include "chrome/common/metrics/variations/variations_util.h" 31 #include "chrome/common/metrics/variations/variations_util.h"
32 #include "chrome/common/pref_names.h" 32 #include "chrome/common/pref_names.h"
33 #include "net/socket/client_socket_pool_base.h"
34 #include "net/spdy/spdy_session.h" 33 #include "net/spdy/spdy_session.h"
35 #include "ui/base/layout.h" 34 #include "ui/base/layout.h"
36 35
37 #if defined(OS_WIN) 36 #if defined(OS_WIN)
38 #include "net/socket/tcp_client_socket_win.h" 37 #include "net/socket/tcp_client_socket_win.h"
39 #endif // defined(OS_WIN) 38 #endif // defined(OS_WIN)
40 39
41 namespace {
42
43 void SetSocketReusePolicy(int warmest_socket_trial_group,
44 const int socket_policy[],
45 int num_groups) {
46 const int* result = std::find(socket_policy, socket_policy + num_groups,
47 warmest_socket_trial_group);
48 DCHECK_NE(result, socket_policy + num_groups)
49 << "Not a valid socket reuse policy group";
50 net::SetSocketReusePolicy(result - socket_policy);
51 }
52
53 } // namespace
54
55 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials( 40 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials(
56 const CommandLine& parsed_command_line) : 41 const CommandLine& parsed_command_line)
57 parsed_command_line_(parsed_command_line) { 42 : parsed_command_line_(parsed_command_line) {
58 } 43 }
59 44
60 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { 45 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() {
61 } 46 }
62 47
63 void ChromeBrowserFieldTrials::SetupFieldTrials(PrefService* local_state) { 48 void ChromeBrowserFieldTrials::SetupFieldTrials(PrefService* local_state) {
64 const base::Time install_time = base::Time::FromTimeT( 49 const base::Time install_time = base::Time::FromTimeT(
65 local_state->GetInt64(prefs::kInstallDate)); 50 local_state->GetInt64(prefs::kInstallDate));
66 DCHECK(!install_time.is_null()); 51 DCHECK(!install_time.is_null());
67 chrome_variations::SetupUniformityFieldTrials(install_time); 52 chrome_variations::SetupUniformityFieldTrials(install_time);
68 SetUpSimpleCacheFieldTrial(); 53 SetUpSimpleCacheFieldTrial();
69 #if !defined(OS_ANDROID) 54 #if !defined(OS_ANDROID)
70 SetupDesktopFieldTrials(local_state); 55 SetupDesktopFieldTrials(local_state);
71 #endif // defined(OS_ANDROID) 56 #endif // defined(OS_ANDROID)
72 } 57 }
73 58
74 void ChromeBrowserFieldTrials::SetupDesktopFieldTrials( 59 void ChromeBrowserFieldTrials::SetupDesktopFieldTrials(
75 PrefService* local_state) { 60 PrefService* local_state) {
76 prerender::ConfigurePrefetchAndPrerender(parsed_command_line_); 61 prerender::ConfigurePrefetchAndPrerender(parsed_command_line_);
77 SpdyFieldTrial(); 62 SpdyFieldTrial();
78 WarmConnectionFieldTrial();
79 AutoLaunchChromeFieldTrial(); 63 AutoLaunchChromeFieldTrial();
80 gpu_util::InitializeCompositingFieldTrial(); 64 gpu_util::InitializeCompositingFieldTrial();
81 OmniboxFieldTrial::ActivateStaticTrials(); 65 OmniboxFieldTrial::ActivateStaticTrials();
82 SetUpInfiniteCacheFieldTrial(); 66 SetUpInfiniteCacheFieldTrial();
83 SetUpCacheSensitivityAnalysisFieldTrial(); 67 SetUpCacheSensitivityAnalysisFieldTrial();
84 DisableShowProfileSwitcherTrialIfNecessary(); 68 DisableShowProfileSwitcherTrialIfNecessary();
85 WindowsOverlappedTCPReadsFieldTrial(); 69 WindowsOverlappedTCPReadsFieldTrial();
86 #if defined(ENABLE_ONE_CLICK_SIGNIN) 70 #if defined(ENABLE_ONE_CLICK_SIGNIN)
87 OneClickSigninHelper::InitializeFieldTrial(); 71 OneClickSigninHelper::InitializeFieldTrial();
88 #endif 72 #endif
(...skipping 29 matching lines...) Expand all
118 scoped_refptr<base::FieldTrial> trial( 102 scoped_refptr<base::FieldTrial> trial(
119 base::FieldTrialList::FactoryGetFieldTrial( 103 base::FieldTrialList::FactoryGetFieldTrial(
120 "SpdyCwnd", kSpdyCwndDivisor, "cwndDynamic", 2013, 6, 30, NULL)); 104 "SpdyCwnd", kSpdyCwndDivisor, "cwndDynamic", 2013, 6, 30, NULL));
121 105
122 trial->AppendGroup("cwnd10", kSpdyCwnd10); 106 trial->AppendGroup("cwnd10", kSpdyCwnd10);
123 trial->AppendGroup("cwnd16", kSpdyCwnd16); 107 trial->AppendGroup("cwnd16", kSpdyCwnd16);
124 trial->AppendGroup("cwndMin16", kSpdyCwndMin16); 108 trial->AppendGroup("cwndMin16", kSpdyCwndMin16);
125 trial->AppendGroup("cwndMin10", kSpdyCwndMin10); 109 trial->AppendGroup("cwndMin10", kSpdyCwndMin10);
126 } 110 }
127 111
128 // If --socket-reuse-policy is not specified, run an A/B test for choosing the
129 // warmest socket.
130 void ChromeBrowserFieldTrials::WarmConnectionFieldTrial() {
131 const CommandLine& command_line = parsed_command_line_;
132 if (command_line.HasSwitch(switches::kSocketReusePolicy)) {
133 std::string socket_reuse_policy_str = command_line.GetSwitchValueASCII(
134 switches::kSocketReusePolicy);
135 int policy = -1;
136 base::StringToInt(socket_reuse_policy_str, &policy);
137
138 const int policy_list[] = { 0, 1, 2 };
139 VLOG(1) << "Setting socket_reuse_policy = " << policy;
140 SetSocketReusePolicy(policy, policy_list, arraysize(policy_list));
141 return;
142 }
143
144 const base::FieldTrial::Probability kWarmSocketDivisor = 100;
145 const base::FieldTrial::Probability kWarmSocketProbability = 33;
146
147 // Default value is USE_LAST_ACCESSED_SOCKET.
148 int last_accessed_socket = -1;
149
150 // After January 30, 2013 builds, it will always be in default group.
151 scoped_refptr<base::FieldTrial> warmest_socket_trial(
152 base::FieldTrialList::FactoryGetFieldTrial(
153 "WarmSocketImpact", kWarmSocketDivisor, "last_accessed_socket",
154 2013, 1, 30, &last_accessed_socket));
155
156 const int warmest_socket = warmest_socket_trial->AppendGroup(
157 "warmest_socket", kWarmSocketProbability);
158 const int warm_socket = warmest_socket_trial->AppendGroup(
159 "warm_socket", kWarmSocketProbability);
160
161 const int warmest_socket_trial_group = warmest_socket_trial->group();
162
163 const int policy_list[] = { warmest_socket, warm_socket,
164 last_accessed_socket };
165 SetSocketReusePolicy(warmest_socket_trial_group, policy_list,
166 arraysize(policy_list));
167 }
168
169 void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() { 112 void ChromeBrowserFieldTrials::AutoLaunchChromeFieldTrial() {
170 std::string brand; 113 std::string brand;
171 google_util::GetBrand(&brand); 114 google_util::GetBrand(&brand);
172 115
173 // Create a 100% field trial based on the brand code. 116 // Create a 100% field trial based on the brand code.
174 if (auto_launch_trial::IsInExperimentGroup(brand)) { 117 if (auto_launch_trial::IsInExperimentGroup(brand)) {
175 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName, 118 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName,
176 kAutoLaunchTrialAutoLaunchGroup); 119 kAutoLaunchTrialAutoLaunchGroup);
177 } else if (auto_launch_trial::IsInControlGroup(brand)) { 120 } else if (auto_launch_trial::IsInControlGroup(brand)) {
178 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName, 121 base::FieldTrialList::CreateFieldTrial(kAutoLaunchTrialName,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 // Call |FindValue()| on the trials below, which may come from the server, to 229 // Call |FindValue()| on the trials below, which may come from the server, to
287 // ensure they get marked as "used" for the purposes of data reporting. 230 // ensure they get marked as "used" for the purposes of data reporting.
288 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial"); 231 base::FieldTrialList::FindValue("UMA-Dynamic-Binary-Uniformity-Trial");
289 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial"); 232 base::FieldTrialList::FindValue("UMA-Dynamic-Uniformity-Trial");
290 base::FieldTrialList::FindValue("InstantDummy"); 233 base::FieldTrialList::FindValue("InstantDummy");
291 base::FieldTrialList::FindValue("InstantChannel"); 234 base::FieldTrialList::FindValue("InstantChannel");
292 base::FieldTrialList::FindValue("Test0PercentDefault"); 235 base::FieldTrialList::FindValue("Test0PercentDefault");
293 // Activate the autocomplete dynamic field trials. 236 // Activate the autocomplete dynamic field trials.
294 OmniboxFieldTrial::ActivateDynamicTrials(); 237 OmniboxFieldTrial::ActivateDynamicTrials();
295 } 238 }
OLDNEW
« no previous file with comments | « chrome/browser/chrome_browser_field_trials.h ('k') | chrome/browser/chrome_browser_main.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698