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

Side by Side Diff: gclient_utils.py

Issue 819133003: Add cross-platform resilience to gclient CPU count probe. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 6 years 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) 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 """Generic utils.""" 5 """Generic utils."""
6 6
7 import codecs 7 import codecs
8 import cStringIO 8 import cStringIO
9 import datetime 9 import datetime
10 import logging 10 import logging
(...skipping 1116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 if keyvals.get(key): 1127 if keyvals.get(key):
1128 keyvals[key] = UpgradeToHttps(keyvals[key]) 1128 keyvals[key] = UpgradeToHttps(keyvals[key])
1129 fix_url('CODE_REVIEW_SERVER') 1129 fix_url('CODE_REVIEW_SERVER')
1130 fix_url('VIEW_VC') 1130 fix_url('VIEW_VC')
1131 return keyvals 1131 return keyvals
1132 1132
1133 1133
1134 def NumLocalCpus(): 1134 def NumLocalCpus():
1135 """Returns the number of processors. 1135 """Returns the number of processors.
1136 1136
1137 Python on OSX 10.6 raises a NotImplementedError exception. 1137 multiprocessing.cpu_count() is permitted to raise NotImplementedError, and
1138 is known to do this on some Windows systems and OSX 10.6. If we can't get the
1139 CPU count, we will fall back to '1'.
1138 """ 1140 """
1141 # Surround the entire thing in try/except; no failure here should stop gclient
1142 # from working.
1139 try: 1143 try:
agable 2015/01/07 00:11:02 This function is now: try: try: return ex
dnj 2015/01/07 00:49:23 I'm generally adverse to large 'except' logic bloc
1140 import multiprocessing 1144 # Use multiprocessing to get CPU count. This may raise
1141 return multiprocessing.cpu_count() 1145 # NotImplementedError.
1142 except: # pylint: disable=W0702 1146 try:
1143 # Mac OS 10.6 only 1147 import multiprocessing
1148 return multiprocessing.cpu_count()
1149 except NotImplementedError: # pylint: disable=W0702
1150 pass
1151
1152 # (UNIX) Query 'os.sysconf'.
1144 # pylint: disable=E1101 1153 # pylint: disable=E1101
1145 return int(os.sysconf('SC_NPROCESSORS_ONLN')) 1154 if hasattr(os, 'sysconf') and 'SC_NPROCESSORS_ONLN' in os.sysconf_names:
1155 return int(os.sysconf('SC_NPROCESSORS_ONLN'))
1156
1157 # (Windows) Query 'NUMBER_OF_PROCESSORS' environment variable.
1158 if 'NUMBER_OF_PROCESSORS' in os.environ:
1159 return int(os.environ['NUMBER_OF_PROCESSORS'])
1160 except Exception:
1161 logging.exception("Exception raised while probing CPU count")
1162
1163 logging.debug('Failed to get CPU count. Defaulting to 1.')
1164 return 1
1146 1165
1147 def DefaultDeltaBaseCacheLimit(): 1166 def DefaultDeltaBaseCacheLimit():
1148 """Return a reasonable default for the git config core.deltaBaseCacheLimit. 1167 """Return a reasonable default for the git config core.deltaBaseCacheLimit.
1149 1168
1150 The primary constraint is the address space of virtual memory. The cache 1169 The primary constraint is the address space of virtual memory. The cache
1151 size limit is per-thread, and 32-bit systems can hit OOM errors if this 1170 size limit is per-thread, and 32-bit systems can hit OOM errors if this
1152 parameter is set too high. 1171 parameter is set too high.
1153 """ 1172 """
1154 if platform.architecture()[0].startswith('64'): 1173 if platform.architecture()[0].startswith('64'):
1155 return '2g' 1174 return '2g'
1156 else: 1175 else:
1157 return '512m' 1176 return '512m'
1158 1177
1159 def DefaultIndexPackConfig(url=''): 1178 def DefaultIndexPackConfig(url=''):
1160 """Return reasonable default values for configuring git-index-pack. 1179 """Return reasonable default values for configuring git-index-pack.
1161 1180
1162 Experiments suggest that higher values for pack.threads don't improve 1181 Experiments suggest that higher values for pack.threads don't improve
1163 performance.""" 1182 performance."""
1164 cache_limit = DefaultDeltaBaseCacheLimit() 1183 cache_limit = DefaultDeltaBaseCacheLimit()
1165 result = ['-c', 'core.deltaBaseCacheLimit=%s' % cache_limit] 1184 result = ['-c', 'core.deltaBaseCacheLimit=%s' % cache_limit]
1166 if url in THREADED_INDEX_PACK_BLACKLIST: 1185 if url in THREADED_INDEX_PACK_BLACKLIST:
1167 result.extend(['-c', 'pack.threads=1']) 1186 result.extend(['-c', 'pack.threads=1'])
1168 return result 1187 return result
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