diff options
author | 2017-12-12 12:06:54 -0800 | |
---|---|---|
committer | 2017-12-12 12:08:48 -0800 | |
commit | 28341132b90e9e315976efcafeec2e510eedf74c (patch) | |
tree | fdfd643d650a4a72f8566d9b47171dca95d4987c /src | |
parent | d7ad01b71564968002d1d30274764b636345c809 (diff) |
Remove hyperthreading multiplier to improve performance.
Tests on my local machine show that the Hyperthreading multiplier is significantly hurting our builds times.
RELNOTES: Set build jobs equivalent to number of logical processors by default. Should improve build times significantly.
PiperOrigin-RevId: 178795078
Diffstat (limited to 'src')
2 files changed, 1 insertions, 47 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinux.java b/src/main/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinux.java index b889742bf5..19d0208dd2 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinux.java +++ b/src/main/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinux.java @@ -20,8 +20,6 @@ import com.google.devtools.build.lib.unix.ProcMeminfoParser; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; -import java.util.HashSet; -import java.util.Set; /** * This class estimates the local host's resource capacity for Linux. @@ -38,11 +36,6 @@ public class LocalHostResourceManagerLinux { return getLogicalCpuCountHelper(content); } - private static int getPhysicalCpuCount(int logicalCpuCount) throws IOException { - String content = getCpuInfoContent(); - return getPhysicalCpuCountHelper(logicalCpuCount, content); - } - private static double getMemoryInMb() throws IOException, ProcMeminfoParser.KeywordNotFoundException { return getMemoryInMbHelper(MEM_INFO_FILE); @@ -51,14 +44,11 @@ public class LocalHostResourceManagerLinux { public static ResourceSet getLocalHostResources() { try { int logicalCpuCount = getLogicalCpuCount(); - int physicalCpuCount = getPhysicalCpuCount(logicalCpuCount); double ramMb = getMemoryInMb(); - boolean hyperthreading = (logicalCpuCount != physicalCpuCount); - final double EFFECTIVE_CPUS_PER_HYPERTHREADED_CPU = 0.6; return ResourceSet.create( ramMb, - logicalCpuCount * (hyperthreading ? EFFECTIVE_CPUS_PER_HYPERTHREADED_CPU : 1.0), + logicalCpuCount, 1.0, Integer.MAX_VALUE); } catch (IOException | ProcMeminfoParser.KeywordNotFoundException e) { @@ -94,36 +84,6 @@ public class LocalHostResourceManagerLinux { return count; } - public static int getPhysicalCpuCountHelper(int logicalCpuCount, String content) - throws IOException { - // CPU count - Iterable<String> lines = NEWLINE_SPLITTER.split(content); - Set<String> uniq = new HashSet<>(); - for (String line : lines) { - if (line.startsWith("physical id")) { - uniq.add(line); - } - } - int cpuCount = uniq.size(); - if (cpuCount == 0) { - cpuCount = logicalCpuCount; - } - - // core per CPU - uniq = new HashSet<>(); - for (String line : lines) { - if (line.startsWith("core id")) { - uniq.add(line); - } - } - int coresPerCpu = uniq.size(); - if (coresPerCpu == 0) { - coresPerCpu = 1; - } - - return cpuCount * coresPerCpu; - } - public static double getMemoryInMbHelper(String memInfoFileName) throws IOException, ProcMeminfoParser.KeywordNotFoundException { ProcMeminfoParser memInfo = new ProcMeminfoParser(memInfoFileName); diff --git a/src/test/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinuxTest.java b/src/test/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinuxTest.java index ba383ddbd6..ef82dba8ec 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinuxTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinuxTest.java @@ -88,8 +88,6 @@ public class LocalHostResourceManagerLinuxTest { "Hugepagesize: 2048 kB"); String meminfoFile = scratch.file("test_meminfo_nonht", meminfoContent).getPathString(); assertThat(LocalHostResourceManagerLinux.getLogicalCpuCountHelper(cpuinfoContent)).isEqualTo(1); - assertThat(LocalHostResourceManagerLinux.getPhysicalCpuCountHelper(1, cpuinfoContent)) - .isEqualTo(1); // +/- 0.1MB assertThat(LocalHostResourceManagerLinux.getMemoryInMbHelper(meminfoFile)) .isWithin(0.1) @@ -184,8 +182,6 @@ public class LocalHostResourceManagerLinuxTest { "Hugepagesize: 2048 kB"); String meminfoFile = scratch.file("test_meminfo_ht", meminfoContent).getPathString(); assertThat(LocalHostResourceManagerLinux.getLogicalCpuCountHelper(cpuinfoContent)).isEqualTo(2); - assertThat(LocalHostResourceManagerLinux.getPhysicalCpuCountHelper(2, cpuinfoContent)) - .isEqualTo(1); // +/- 0.1MB assertThat(LocalHostResourceManagerLinux.getMemoryInMbHelper(meminfoFile)) .isWithin(0.1) @@ -338,8 +334,6 @@ public class LocalHostResourceManagerLinuxTest { "Hugepagesize: 2048 kB"); String meminfoFile = scratch.file("test_meminfo_amd", meminfoContent).getPathString(); assertThat(LocalHostResourceManagerLinux.getLogicalCpuCountHelper(cpuinfoContent)).isEqualTo(4); - assertThat(LocalHostResourceManagerLinux.getPhysicalCpuCountHelper(4, cpuinfoContent)) - .isEqualTo(4); // +/- 0.1MB assertThat(LocalHostResourceManagerLinux.getMemoryInMbHelper(meminfoFile)) .isWithin(0.1) |