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

Side by Side Diff: build/toolchain/get_concurrent_links.py

Issue 1261073004: Reduce DefaultConcurrentLinks from phys/4GB to phys/5GB. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« 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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 # This script computs the number of concurrent links we want to run in the build 5 # This script computs the number of concurrent links we want to run in the build
6 # as a function of machine spec. It's based on GetDefaultConcurrentLinks in GYP. 6 # as a function of machine spec. It's based on GetDefaultConcurrentLinks in GYP.
7 7
8 import os 8 import os
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 17 matching lines...) Expand all
28 ("ullTotalPageFile", ctypes.c_ulonglong), 28 ("ullTotalPageFile", ctypes.c_ulonglong),
29 ("ullAvailPageFile", ctypes.c_ulonglong), 29 ("ullAvailPageFile", ctypes.c_ulonglong),
30 ("ullTotalVirtual", ctypes.c_ulonglong), 30 ("ullTotalVirtual", ctypes.c_ulonglong),
31 ("ullAvailVirtual", ctypes.c_ulonglong), 31 ("ullAvailVirtual", ctypes.c_ulonglong),
32 ("sullAvailExtendedVirtual", ctypes.c_ulonglong), 32 ("sullAvailExtendedVirtual", ctypes.c_ulonglong),
33 ] 33 ]
34 34
35 stat = MEMORYSTATUSEX(dwLength=ctypes.sizeof(MEMORYSTATUSEX)) 35 stat = MEMORYSTATUSEX(dwLength=ctypes.sizeof(MEMORYSTATUSEX))
36 ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat)) 36 ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat))
37 37
38 mem_limit = max(1, stat.ullTotalPhys / (4 * (2 ** 30))) # total / 4GB 38 # VS 2015 uses 20% more working set than VS 2013 and can consume all RAM
39 # on a 64 GB machine.
40 mem_limit = max(1, stat.ullTotalPhys / (5 * (2 ** 30))) # total / 5GB
39 hard_cap = max(1, int(os.getenv('GYP_LINK_CONCURRENCY_MAX', 2**32))) 41 hard_cap = max(1, int(os.getenv('GYP_LINK_CONCURRENCY_MAX', 2**32)))
40 return min(mem_limit, hard_cap) 42 return min(mem_limit, hard_cap)
41 elif sys.platform.startswith('linux'): 43 elif sys.platform.startswith('linux'):
42 if os.path.exists("/proc/meminfo"): 44 if os.path.exists("/proc/meminfo"):
43 with open("/proc/meminfo") as meminfo: 45 with open("/proc/meminfo") as meminfo:
44 memtotal_re = re.compile(r'^MemTotal:\s*(\d*)\s*kB') 46 memtotal_re = re.compile(r'^MemTotal:\s*(\d*)\s*kB')
45 for line in meminfo: 47 for line in meminfo:
46 match = memtotal_re.match(line) 48 match = memtotal_re.match(line)
47 if not match: 49 if not match:
48 continue 50 continue
49 # Allow 8Gb per link on Linux because Gold is quite memory hungry 51 # Allow 8Gb per link on Linux because Gold is quite memory hungry
50 return max(1, int(match.group(1)) / (8 * (2 ** 20))) 52 return max(1, int(match.group(1)) / (8 * (2 ** 20)))
51 return 1 53 return 1
52 elif sys.platform == 'darwin': 54 elif sys.platform == 'darwin':
53 try: 55 try:
54 avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.memsize'])) 56 avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
55 # A static library debug build of Chromium's unit_tests takes ~2.7GB, so 57 # A static library debug build of Chromium's unit_tests takes ~2.7GB, so
56 # 4GB per ld process allows for some more bloat. 58 # 4GB per ld process allows for some more bloat.
57 return max(1, avail_bytes / (4 * (2 ** 30))) # total / 4GB 59 return max(1, avail_bytes / (4 * (2 ** 30))) # total / 4GB
58 except Exception: 60 except Exception:
59 return 1 61 return 1
60 else: 62 else:
61 # TODO(scottmg): Implement this for other platforms. 63 # TODO(scottmg): Implement this for other platforms.
62 return 1 64 return 1
63 65
64 print GetDefaultConcurrentLinks() 66 print GetDefaultConcurrentLinks()
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