Index: build/toolchain/get_concurrent_links.py |
diff --git a/build/toolchain/get_concurrent_links.py b/build/toolchain/get_concurrent_links.py |
index 32294fab849d242298f447557cab6d710208c737..e72c12ec42a6ecc3416eda6a9f928510dab0b571 100644 |
--- a/build/toolchain/get_concurrent_links.py |
+++ b/build/toolchain/get_concurrent_links.py |
@@ -49,12 +49,14 @@ def _GetDefaultConcurrentLinks(is_lto): |
match = memtotal_re.match(line) |
if not match: |
continue |
+ mem_total_gb = float(match.group(1)) / (2 ** 20) |
# Allow 8Gb per link on Linux because Gold is quite memory hungry |
- # For LTO builds the RAM requirements are even higher |
- # Note: it's 15 GB for LTO build to make sure we get 4 link jobs |
- # for 64 GB, even if the system reports a couple of GBs less. |
- ram_per_link_gb = 15 if is_lto else 8 |
- return max(1, int(match.group(1)) / (ram_per_link_gb * (2 ** 20))) |
+ mem_per_link_gb = 8 |
+ if is_lto: |
+ mem_total_gb -= 20 # Reserve |
+ # For LTO builds the RAM requirements are even higher |
+ mem_per_link_gb = 20 |
+ return int(max(1, mem_total_gb / mem_per_link_gb)) |
return 1 |
elif sys.platform == 'darwin': |
try: |