aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Mark Schaller <mschaller@google.com>2015-02-20 23:14:47 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-02-20 23:14:47 +0000
commit5d81dd5ac3a5af12c69ead07c70d062e70deb361 (patch)
treeb03a075edcb2e121285d3d65bd6cc138697c9f16 /src/main/java/com
parenta998ff5b152d10feb551480d42dcc648e51c5b28 (diff)
Convert ResourceSet ctor calls to factory method
Most current invocations of the ResourceSet constructor shouldn't care about any new dimensions we add to restrict test execution. This change allows us to make those changes, keep the ResourceSet ctor symmetrical, and avoid contaminating those ctor call sites with noise. -- MOS_MIGRATED_REVID=86826112
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/LocalHostCapacity.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ResourceSet.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestTargetProperties.java9
16 files changed, 44 insertions, 36 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
index 95c943bfa5..54997a4046 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
@@ -47,7 +47,8 @@ public abstract class AbstractAction implements Action {
/**
* An arbitrary default resource set. Currently 250MB of memory, 50% CPU and 0% of total I/O.
*/
- public static final ResourceSet DEFAULT_RESOURCE_SET = new ResourceSet(250, 0.5, 0);
+ public static final ResourceSet DEFAULT_RESOURCE_SET =
+ ResourceSet.createWithRamCpuIo(250, 0.5, 0);
// owner/inputs/outputs attributes below should never be directly accessed even
// within AbstractAction itself. The appropriate getter methods should be used
diff --git a/src/main/java/com/google/devtools/build/lib/actions/LocalHostCapacity.java b/src/main/java/com/google/devtools/build/lib/actions/LocalHostCapacity.java
index 5fc6013490..7f375d4c25 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/LocalHostCapacity.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/LocalHostCapacity.java
@@ -126,7 +126,7 @@ public final class LocalHostCapacity {
static boolean isDisabled;
// If /proc/* information is not available, assume 3000 MB and 2 CPUs.
- private static ResourceSet DEFAULT_RESOURCES = new ResourceSet(3000.0, 2.0, 1.0);
+ private static ResourceSet DEFAULT_RESOURCES = ResourceSet.createWithRamCpuIo(3000.0, 2.0, 1.0);
private LocalHostCapacity() {}
@@ -252,11 +252,10 @@ public final class LocalHostCapacity {
boolean hyperthreading = (logicalCpuCount != totalCores);
double ramMb = ProcMeminfoParser.kbToMb(memInfo.getTotalKb());
final double EFFECTIVE_CPUS_PER_HYPERTHREADED_CPU = 0.6;
- return new ResourceSet(
- ramMb,
- logicalCpuCount * (hyperthreading ? EFFECTIVE_CPUS_PER_HYPERTHREADED_CPU
- : 1.0),
- 1.0);
+ return ResourceSet.createWithRamCpuIo(
+ ramMb,
+ logicalCpuCount * (hyperthreading ? EFFECTIVE_CPUS_PER_HYPERTHREADED_CPU : 1.0),
+ 1.0);
} catch (IOException | IllegalArgumentException e) {
disableProcFsUse(e);
return DEFAULT_RESOURCES;
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java b/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java
index 929a1068d9..bb2aea9fcc 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java
@@ -424,7 +424,7 @@ public class ResourceManager {
private synchronized void updateAvailableResources(boolean useFreeReading) {
Preconditions.checkNotNull(staticResources);
if (useFreeReading && isAutoSensingEnabled()) {
- availableResources = new ResourceSet(
+ availableResources = ResourceSet.createWithRamCpuIo(
usedRam + freeReading.getFreeMb(),
usedCpu + freeReading.getAvgFreeCpu(),
staticResources.getIoUsage());
@@ -434,7 +434,7 @@ public class ResourceManager {
}
processWaitingThreads();
} else {
- availableResources = new ResourceSet(
+ availableResources = ResourceSet.createWithRamCpuIo(
staticResources.getMemoryMb() * this.ramUtilizationPercentage / 100.0,
staticResources.getCpuUsage(),
staticResources.getIoUsage());
@@ -467,6 +467,6 @@ public class ResourceManager {
@VisibleForTesting
synchronized boolean isAvailable(double ram, double cpu, double io) {
- return areResourcesAvailable(new ResourceSet(ram, cpu, io));
+ return areResourcesAvailable(ResourceSet.createWithRamCpuIo(ram, cpu, io));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ResourceSet.java b/src/main/java/com/google/devtools/build/lib/actions/ResourceSet.java
index e7ab98f968..65d2d1453f 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ResourceSet.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ResourceSet.java
@@ -47,12 +47,16 @@ public class ResourceSet {
*/
private final double ioUsage;
- public ResourceSet(double memoryMb, double cpuUsage, double ioUsage) {
+ private ResourceSet(double memoryMb, double cpuUsage, double ioUsage) {
this.memoryMb = memoryMb;
this.cpuUsage = cpuUsage;
this.ioUsage = ioUsage;
}
+ public static ResourceSet createWithRamCpuIo(double memoryMb, double cpuUsage, double ioUsage) {
+ return new ResourceSet(memoryMb, cpuUsage, ioUsage);
+ }
+
/** Returns the amount of real memory (resident set size) used in MB. */
public double getMemoryMb() {
return memoryMb;
@@ -95,7 +99,7 @@ public class ResourceSet {
if (memoryMb <= 0.0 || cpuUsage <= 0.0 || ioUsage <= 0.0) {
throw new OptionsParsingException("All resource values must be positive");
}
- return new ResourceSet(memoryMb, cpuUsage, ioUsage);
+ return createWithRamCpuIo(memoryMb, cpuUsage, ioUsage);
} catch (NumberFormatException nfe) {
throw new OptionsParsingException("Expected exactly 3 comma-separated float values", nfe);
} catch (NoSuchElementException nsee) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java
index 187fc480b9..1f9713c0d4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java
@@ -93,7 +93,7 @@ public abstract class AbstractFileWriteAction extends AbstractAction {
// We're mainly doing I/O, so estimate very low CPU usage, e.g. 1%. Just a guess.
private static final ResourceSet DEFAULT_FILEWRITE_LOCAL_ACTION_RESOURCE_SET =
- new ResourceSet(/*memoryMb=*/0.0, /*cpuUsage=*/0.01, /*ioUsage=*/0.2);
+ ResourceSet.createWithRamCpuIo(/*memoryMb=*/0.0, /*cpuUsage=*/0.01, /*ioUsage=*/0.2);
@Override
public ResourceSet estimateResourceConsumption(Executor executor) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java
index 2bbb3e2c40..c4abf5415f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java
@@ -100,7 +100,7 @@ public class SymlinkAction extends AbstractAction {
@Override
public ResourceSet estimateResourceConsumption(Executor executor) {
- return new ResourceSet(/*memoryMb=*/0, /*cpuUsage=*/0, /*ioUsage=*/0.0);
+ return ResourceSet.createWithRamCpuIo(/*memoryMb=*/0, /*cpuUsage=*/0, /*ioUsage=*/0.0);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleAction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleAction.java
index 0a9b3e77a1..9941edb6e3 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleAction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleAction.java
@@ -35,7 +35,7 @@ public final class GenRuleAction extends SpawnAction {
private static final ResourceSet GENRULE_RESOURCES =
// Not chosen scientifically/carefully. 300MB memory, 100% CPU, 20% of total I/O.
- new ResourceSet(300, 1.0, 0.0);
+ ResourceSet.createWithRamCpuIo(300, 1.0, 0.0);
public GenRuleAction(ActionOwner owner,
Iterable<Artifact> inputs,
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java
index 6127ceec80..a3a6d7d9f5 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java
@@ -45,7 +45,7 @@ public final class SymlinkTreeHelper {
* their directory creations get non-interleaved allocations. So we give them
* a huge resource cost.
*/
- public static final ResourceSet RESOURCE_SET = new ResourceSet(1000, 0.5, 0.75);
+ public static final ResourceSet RESOURCE_SET = ResourceSet.createWithRamCpuIo(1000, 0.5, 0.75);
private final PathFragment inputManifest;
private final PathFragment symlinkTreeRoot;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 29a8fb1921..02c4ddbaba 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -956,7 +956,7 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable
public ResourceSet estimateResourceConsumptionLocal() {
// We use a local compile, so much of the time is spent waiting for IO,
// but there is still significant CPU; hence we estimate 50% cpu usage.
- return new ResourceSet(/*memoryMb=*/200, /*cpuUsage=*/0.5, /*ioUsage=*/0.0);
+ return ResourceSet.createWithRamCpuIo(/*memoryMb=*/200, /*cpuUsage=*/0.5, /*ioUsage=*/0.0);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
index ecf3431b4f..36ad55f3b3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -93,13 +93,16 @@ public final class CppLinkAction extends AbstractAction {
// thrash the machine to the point where it stops
// responding to keystrokes or mouse clicks.
// CPU and IO do not scale similarly and still use the static minimum estimate.
- public static final ResourceSet LINK_RESOURCES_PER_INPUT = new ResourceSet(1, 0, 0);
+ public static final ResourceSet LINK_RESOURCES_PER_INPUT =
+ ResourceSet.createWithRamCpuIo(1, 0, 0);
// This defines the minimum of each resource that will be reserved.
- public static final ResourceSet MIN_STATIC_LINK_RESOURCES = new ResourceSet(1536, 1, 0.3);
+ public static final ResourceSet MIN_STATIC_LINK_RESOURCES =
+ ResourceSet.createWithRamCpuIo(1536, 1, 0.3);
// Dynamic linking should be cheaper than static linking.
- public static final ResourceSet MIN_DYNAMIC_LINK_RESOURCES = new ResourceSet(1024, 0.3, 0.2);
+ public static final ResourceSet MIN_DYNAMIC_LINK_RESOURCES =
+ ResourceSet.createWithRamCpuIo(1024, 0.3, 0.2);
/**
* Use {@link Builder} to create instances of this class. Also see there for
@@ -452,13 +455,13 @@ public final class CppLinkAction extends AbstractAction {
final int inputSize = Iterables.size(getLinkCommandLine().getLinkerInputs())
+ Iterables.size(getLinkCommandLine().getRuntimeInputs());
- return new ResourceSet(
- Math.max(inputSize * LINK_RESOURCES_PER_INPUT.getMemoryMb(),
- minLinkResources.getMemoryMb()),
- Math.max(inputSize * LINK_RESOURCES_PER_INPUT.getCpuUsage(),
- minLinkResources.getCpuUsage()),
- Math.max(inputSize * LINK_RESOURCES_PER_INPUT.getIoUsage(),
- minLinkResources.getIoUsage())
+ return ResourceSet.createWithRamCpuIo(
+ Math.max(inputSize * LINK_RESOURCES_PER_INPUT.getMemoryMb(),
+ minLinkResources.getMemoryMb()),
+ Math.max(inputSize * LINK_RESOURCES_PER_INPUT.getCpuUsage(),
+ minLinkResources.getCpuUsage()),
+ Math.max(inputSize * LINK_RESOURCES_PER_INPUT.getIoUsage(),
+ minLinkResources.getIoUsage())
);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java
index a503f1f8d8..23005c37d1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMapAction.java
@@ -162,7 +162,7 @@ public class CppModuleMapAction extends AbstractFileWriteAction {
@Override
public ResourceSet estimateResourceConsumptionLocal() {
- return new ResourceSet(/*memoryMb=*/0, /*cpuUsage=*/0, /*ioUsage=*/0.02);
+ return ResourceSet.createWithRamCpuIo(/*memoryMb=*/0, /*cpuUsage=*/0, /*ioUsage=*/0.02);
}
@VisibleForTesting
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 2fb8580e6f..0f8ab42fb2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -197,7 +197,7 @@ public class FakeCppCompileAction extends CppCompileAction {
@Override
public ResourceSet estimateResourceConsumptionLocal() {
- return new ResourceSet(/*memoryMb=*/1, /*cpuUsage=*/0.1, /*ioUsage=*/0.0);
+ return ResourceSet.createWithRamCpuIo(/*memoryMb=*/1, /*cpuUsage=*/0.1, /*ioUsage=*/0.0);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
index 120ba86a34..d597465366 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
@@ -92,7 +92,7 @@ public final class SolibSymlinkAction extends AbstractAction {
@Override
public ResourceSet estimateResourceConsumption(Executor executor) {
- return new ResourceSet(/*memoryMb=*/0, /*cpuUsage=*/0, /*ioUsage=*/0.0);
+ return ResourceSet.createWithRamCpuIo(/*memoryMb=*/0, /*cpuUsage=*/0, /*ioUsage=*/0.0);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
index b9fe186ebd..9af470e649 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
@@ -236,7 +236,7 @@ public class DeployArchiveBuilder {
List<String> jvmArgs = ImmutableList.of("-client", SINGLEJAR_MAX_MEMORY);
ResourceSet resourceSet =
- new ResourceSet(/*memoryMb = */200.0, /*cpuUsage = */.2, /*ioUsage=*/.2);
+ ResourceSet.createWithRamCpuIo(/*memoryMb = */200.0, /*cpuUsage = */.2, /*ioUsage=*/.2);
ruleContext.registerAction(new SpawnAction.Builder()
.addInputs(inputs.build())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 397fa18685..006a5df5eb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -77,7 +77,7 @@ public class JavaCompileAction extends AbstractAction {
private static final String GUID = "786e174d-ed97-4e79-9f61-ae74430714cf";
private static final ResourceSet LOCAL_RESOURCES =
- new ResourceSet(750 /*MB*/, 0.5 /*CPU*/, 0.0 /*IO*/);
+ ResourceSet.createWithRamCpuIo(750 /*MB*/, 0.5 /*CPU*/, 0.0 /*IO*/);
private final CommandLine javaCompileCommandLine;
private final CommandLine commandLine;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestTargetProperties.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestTargetProperties.java
index 8cf26b8dc1..0834ca9464 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestTargetProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestTargetProperties.java
@@ -38,10 +38,11 @@ public class TestTargetProperties {
/**
* Resources used by local tests of various sizes.
*/
- private static final ResourceSet SMALL_RESOURCES = new ResourceSet(20, 0.9, 0.00);
- private static final ResourceSet MEDIUM_RESOURCES = new ResourceSet(100, 0.9, 0.1);
- private static final ResourceSet LARGE_RESOURCES = new ResourceSet(300, 0.8, 0.1);
- private static final ResourceSet ENORMOUS_RESOURCES = new ResourceSet(800, 0.7, 0.4);
+ private static final ResourceSet SMALL_RESOURCES = ResourceSet.createWithRamCpuIo(20, 0.9, 0.00);
+ private static final ResourceSet MEDIUM_RESOURCES = ResourceSet.createWithRamCpuIo(100, 0.9, 0.1);
+ private static final ResourceSet LARGE_RESOURCES = ResourceSet.createWithRamCpuIo(300, 0.8, 0.1);
+ private static final ResourceSet ENORMOUS_RESOURCES =
+ ResourceSet.createWithRamCpuIo(800, 0.7, 0.4);
private static ResourceSet getResourceSetFromSize(TestSize size) {
switch (size) {