aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar dmaclach <dmaclach@google.com>2017-12-12 12:06:54 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-12 12:08:48 -0800
commit28341132b90e9e315976efcafeec2e510eedf74c (patch)
treefdfd643d650a4a72f8566d9b47171dca95d4987c /src
parentd7ad01b71564968002d1d30274764b636345c809 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinux.java42
-rw-r--r--src/test/java/com/google/devtools/build/lib/actions/LocalHostResourceManagerLinuxTest.java6
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)