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

Side by Side Diff: chrome/browser/chromeos/chrome_browser_main_chromeos.cc

Issue 11744024: Add zram field trial (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add logging Created 7 years, 11 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
« no previous file with comments | « chrome/browser/chromeos/chrome_browser_main_chromeos.h ('k') | 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) 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/chromeos/chrome_browser_main_chromeos.h" 5 #include "chrome/browser/chromeos/chrome_browser_main_chromeos.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/shell.h" 10 #include "ash/shell.h"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/chromeos/chromeos_version.h" 13 #include "base/chromeos/chromeos_version.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/file_util.h"
15 #include "base/lazy_instance.h" 16 #include "base/lazy_instance.h"
16 #include "base/linux_util.h" 17 #include "base/linux_util.h"
17 #include "base/message_loop.h" 18 #include "base/message_loop.h"
18 #include "base/string_number_conversions.h" 19 #include "base/string_number_conversions.h"
19 #include "base/string_split.h" 20 #include "base/string_split.h"
20 #include "chrome/browser/browser_process.h" 21 #include "chrome/browser/browser_process.h"
21 #include "chrome/browser/chromeos/accessibility/accessibility_util.h" 22 #include "chrome/browser/chromeos/accessibility/accessibility_util.h"
22 #include "chrome/browser/chromeos/accessibility/magnification_manager.h" 23 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
23 #include "chrome/browser/chromeos/audio/audio_handler.h" 24 #include "chrome/browser/chromeos/audio/audio_handler.h"
24 #include "chrome/browser/chromeos/boot_times_loader.h" 25 #include "chrome/browser/chromeos/boot_times_loader.h"
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 706
706 // Let the UserManager unregister itself as an observer of the CrosSettings 707 // Let the UserManager unregister itself as an observer of the CrosSettings
707 // singleton before it is destroyed. 708 // singleton before it is destroyed.
708 UserManager::Get()->Shutdown(); 709 UserManager::Get()->Shutdown();
709 710
710 ChromeBrowserMainPartsLinux::PostMainMessageLoopRun(); 711 ChromeBrowserMainPartsLinux::PostMainMessageLoopRun();
711 } 712 }
712 713
713 void ChromeBrowserMainPartsChromeos::SetupPlatformFieldTrials() { 714 void ChromeBrowserMainPartsChromeos::SetupPlatformFieldTrials() {
714 SetupLowMemoryHeadroomFieldTrial(); 715 SetupLowMemoryHeadroomFieldTrial();
716 SetupZramFieldTrial();
715 } 717 }
716 718
717 void ChromeBrowserMainPartsChromeos::SetupLowMemoryHeadroomFieldTrial() { 719 void ChromeBrowserMainPartsChromeos::SetupLowMemoryHeadroomFieldTrial() {
718 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); 720 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
719 // Only enable this experiment on Canary and Dev, since it's possible 721 // Only enable this experiment on Canary and Dev, since it's possible
720 // that this will make the machine unstable. 722 // that this will make the machine unstable.
721 // Note that to have this code execute in a developer build, 723 // Note that to have this code execute in a developer build,
722 // then chrome::VersionInfo::CHANNEL_UNKNOWN needs to be added here. 724 // then chrome::VersionInfo::CHANNEL_UNKNOWN needs to be added here.
723 if (channel == chrome::VersionInfo::CHANNEL_CANARY || 725 if (channel == chrome::VersionInfo::CHANNEL_CANARY ||
724 channel == chrome::VersionInfo::CHANNEL_DEV) { 726 channel == chrome::VersionInfo::CHANNEL_DEV) {
(...skipping 28 matching lines...) Expand all
753 LowMemoryObserver::SetLowMemoryMargin(100); 755 LowMemoryObserver::SetLowMemoryMargin(100);
754 } else if (trial->group() == margin_200mb) { 756 } else if (trial->group() == margin_200mb) {
755 LOG(WARNING) << "low_mem: Part of '200MB' experiment"; 757 LOG(WARNING) << "low_mem: Part of '200MB' experiment";
756 LowMemoryObserver::SetLowMemoryMargin(200); 758 LowMemoryObserver::SetLowMemoryMargin(200);
757 } else { 759 } else {
758 LOG(WARNING) << "low_mem: Part of 'default' experiment"; 760 LOG(WARNING) << "low_mem: Part of 'default' experiment";
759 } 761 }
760 } 762 }
761 } 763 }
762 764
765
766 void ChromeBrowserMainPartsChromeos::SetupZramFieldTrial() {
767 // The dice for this experiment has been thrown at boot. The selected group
Ilya Sherman 2013/01/08 02:19:04 nit: either "has" -> "have" or "dice" -> "die"
Luigi Semenzato 2013/01/08 18:17:57 Both forms (die and dice) are used for the singula
768 // number is stored in a file.
769 const FilePath kZramGroupPath("/home/chronos/.swap_exp_enrolled");
James Cook 2013/01/08 05:07:43 We frequently run a linux_chromeos build on Ubuntu
Luigi Semenzato 2013/01/08 18:17:57 If the file does not exist, the experiment is not
James Cook 2013/01/08 19:03:44 I'm afraid this might cause NFS to attempt to moun
Luigi Semenzato 2013/01/08 21:28:18 We discussed this offline and decided to leave as
770 std::string zram_group;
771 // If the file does not exist, the experiment has not started. If the file
772 // exists but contains an "x", the user has a non-standard swap size and has
773 // been opted out.
774 if (!file_util::ReadFileToString(kZramGroupPath, &zram_group) ||
James Cook 2013/01/08 05:07:43 We should run this in a Debug build to make sure w
Luigi Semenzato 2013/01/08 18:17:57 OK, thanks. I don't even know if the file thread
James Cook 2013/01/08 19:03:44 If the file thread isn't created yet, this should
Luigi Semenzato 2013/01/08 21:28:18 James tested this and no assertion is produced.
775 StartsWithASCII(zram_group, "x", true)) {
776 return;
777 }
778 const base::FieldTrial::Probability kDivisor = 1; // on/off only
779 scoped_refptr<base::FieldTrial> trial =
780 base::FieldTrialList::FactoryGetFieldTrial(
781 "ZRAM", kDivisor, "default", 2013, 12, 31, NULL);
782 // Assign probability of 1 to the group Chrome OS has picked. Assign 0 to
783 // all other choices.
784 const char *groups[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8" };
Ilya Sherman 2013/01/08 02:19:04 nit: "const char* const kGroups[] = ..."
Ilya Sherman 2013/01/08 02:19:04 Is 9 intentionally omitted? What do each of these
Luigi Semenzato 2013/01/08 18:17:57 OK
Luigi Semenzato 2013/01/08 18:17:57 Yes, there are only 9 groups (0-8). Should the gr
Ilya Sherman 2013/01/08 20:16:16 It's always nice when names are self-documenting.
Luigi Semenzato 2013/01/08 21:28:18 OK. I was about to change the names, but then asv
785 for (unsigned int i = 0; i < sizeof(groups) / sizeof(groups[0]); i++) {
Ilya Sherman 2013/01/08 02:19:04 nit: Please use the arraysize macro here.
Ilya Sherman 2013/01/08 02:19:04 nit: "unsigned int" -> "size_t"
Ilya Sherman 2013/01/08 02:19:04 nit: "i++" -> "++i"
Luigi Semenzato 2013/01/08 18:17:57 OK
Luigi Semenzato 2013/01/08 18:17:57 Are you sure? A size divided by a size is a dimen
Luigi Semenzato 2013/01/08 18:17:57 OK
Ilya Sherman 2013/01/08 20:16:16 According to [ http://dev.chromium.org/developers/
Luigi Semenzato 2013/01/08 21:28:18 Thank you for setting me straight on this.
786 bool match = StartsWithASCII(zram_group, groups[i], true);
Ilya Sherman 2013/01/08 02:19:04 Why are you checking for a prefix, rather than dir
Luigi Semenzato 2013/01/08 18:17:57 Because I don't want to have to worry whether the
Ilya Sherman 2013/01/08 20:16:16 IMO it would be better to trim off any whitespace,
787 (void) trial->AppendGroup(groups[i], match ? 1 : 0);
Ilya Sherman 2013/01/08 02:19:04 nit: Remove the "(void)"
Luigi Semenzato 2013/01/08 18:17:57 OK. I thought it may help to indicate I am aware
James Cook 2013/01/08 19:03:44 I think Chrome-style is to leave it out.
788 if (match) {
789 LOG(WARNING) << "zram field trial: group " << groups[i];
Ilya Sherman 2013/01/08 02:19:04 nit: Can this be a DVLOG(1)?
James Cook 2013/01/08 05:07:43 Actually, I'd be OK with leaving this in as a warn
Luigi Semenzato 2013/01/08 18:17:57 Yes, it's only one line and I would prefer to alwa
Ilya Sherman 2013/01/08 20:16:16 FWIW, the list of running field trials is also ava
Luigi Semenzato 2013/01/08 21:28:18 Good to know, thanks, but if you don't mind I'd le
790 }
Ilya Sherman 2013/01/08 02:19:04 nit: No need for curly braces since this is a 1-li
Luigi Semenzato 2013/01/08 18:17:57 OK
791 }
792 }
793
763 } // namespace chromeos 794 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/chrome_browser_main_chromeos.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698