diff options
author | 2018-06-19 15:07:26 -0700 | |
---|---|---|
committer | 2018-06-19 15:09:17 -0700 | |
commit | a0e8aae4b30a23d6a3069c343a47cd56b5ed3809 (patch) | |
tree | 255a02dc61f029f3495ca7bbee4f54bc1a6fa40c /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | af545684f4f9c2697951d291d00ae2106ff65041 (diff) |
Add new BuildMetrics event to BEP.
To start we add just a single metric, the number of actions constructed in the current build.
RELNOTES: None
PiperOrigin-RevId: 201248490
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java | 22 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java | 7 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index acb7c4a064..c41bf5d224 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -13,6 +13,8 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import static com.google.devtools.build.skyframe.EvaluationProgressReceiver.EvaluationState.BUILT; + import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -76,11 +78,13 @@ import com.google.devtools.build.skyframe.EvaluationProgressReceiver; import com.google.devtools.build.skyframe.EvaluationResult; import com.google.devtools.build.skyframe.SkyFunction.Environment; import com.google.devtools.build.skyframe.SkyKey; +import com.google.devtools.build.skyframe.SkyValue; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; import javax.annotation.Nullable; @@ -109,6 +113,8 @@ public final class SkyframeBuildView { private Set<SkyKey> dirtiedConfiguredTargetKeys = Sets.newConcurrentHashSet(); private volatile boolean anyConfiguredTargetDeleted = false; + private final AtomicInteger evaluatedActionCount = new AtomicInteger(); + private final ConfiguredRuleClassProvider ruleClassProvider; // The host configuration containing all fragments used by this build's transitive closure. @@ -148,6 +154,14 @@ public final class SkyframeBuildView { return factory; } + public int getEvaluatedActionCount() { + return evaluatedActionCount.get(); + } + + public void resetEvaluationActionCount() { + evaluatedActionCount.set(0); + } + private boolean areConfigurationsDifferent(BuildConfigurationCollection configurations) { if (this.configurations == null) { // no configurations currently, no need to drop anything @@ -719,6 +733,7 @@ public final class SkyframeBuildView { @Override public void evaluated( SkyKey skyKey, + @Nullable SkyValue value, Supplier<EvaluationSuccessState> evaluationSuccessState, EvaluationState state) { if (skyKey.functionName().equals(SkyFunctions.CONFIGURED_TARGET)) { @@ -729,6 +744,9 @@ public final class SkyframeBuildView { // During multithreaded operation, this is only set to true, so no concurrency issues. someConfiguredTargetEvaluated = true; } + if (value instanceof ConfiguredTargetValue) { + evaluatedActionCount.addAndGet(((ConfiguredTargetValue) value).getNumActions()); + } break; case CLEAN: // If the configured target value did not need to be rebuilt, then it wasn't truly @@ -736,6 +754,10 @@ public final class SkyframeBuildView { dirtiedConfiguredTargetKeys.remove(skyKey); break; } + } else if (skyKey.functionName().equals(SkyFunctions.ASPECT) + && state == BUILT + && value instanceof AspectValue) { + evaluatedActionCount.addAndGet(((AspectValue) value).getNumActions()); } } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 32b5ca0d56..b0aee1bb43 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -2297,14 +2297,17 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { @Override public void evaluated( SkyKey skyKey, + @Nullable SkyValue value, Supplier<EvaluationSuccessState> evaluationSuccessState, EvaluationState state) { if (ignoreInvalidations) { return; } - skyframeBuildView.getProgressReceiver().evaluated(skyKey, evaluationSuccessState, state); + skyframeBuildView + .getProgressReceiver() + .evaluated(skyKey, value, evaluationSuccessState, state); if (executionProgressReceiver != null) { - executionProgressReceiver.evaluated(skyKey, evaluationSuccessState, state); + executionProgressReceiver.evaluated(skyKey, value, evaluationSuccessState, state); } } } |