aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java84
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java63
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java11
9 files changed, 142 insertions, 63 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index b88952acc6..6eddca5e9c 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -64,6 +64,7 @@ import com.google.devtools.build.lib.pkgcache.LoadingFailedException;
import com.google.devtools.build.lib.pkgcache.LoadingResult;
import com.google.devtools.build.lib.profiler.ProfilePhase;
import com.google.devtools.build.lib.profiler.Profiler;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
@@ -134,15 +135,24 @@ public class BuildTool {
throws BuildFailedException, InterruptedException, ViewCreationFailedException,
TargetParsingException, LoadingFailedException, AbruptExitException,
InvalidConfigurationException, TestExecException, PostAnalysisQueryCommandLineException {
- validateOptions(request);
- BuildOptions buildOptions = runtime.createBuildOptions(request);
+ try (SilentCloseable c = Profiler.instance().profile("validateOptions")) {
+ validateOptions(request);
+ }
+ BuildOptions buildOptions;
+ try (SilentCloseable c = Profiler.instance().profile("createBuildOptions")) {
+ buildOptions = runtime.createBuildOptions(request);
+ }
// Sync the package manager before sending the BuildStartingEvent in runLoadingPhase()
- env.setupPackageCache(request, DefaultsPackage.getDefaultsPackageContent(buildOptions));
+ try (SilentCloseable c = Profiler.instance().profile("setupPackageCache")) {
+ env.setupPackageCache(request, DefaultsPackage.getDefaultsPackageContent(buildOptions));
+ }
ExecutionTool executionTool = null;
boolean catastrophe = false;
try {
- env.getEventBus().post(new BuildStartingEvent(env, request));
+ try (SilentCloseable c = Profiler.instance().profile("BuildStartingEvent")) {
+ env.getEventBus().post(new BuildStartingEvent(env, request));
+ }
logger.info("Build identifier: " + request.getId());
// Error out early if multi_cpus is set, but we're not in build or test command.
@@ -162,11 +172,17 @@ public class BuildTool {
env.throwPendingException();
// Target pattern evaluation.
- LoadingResult loadingResult = evaluateTargetPatterns(request, validator);
+ LoadingResult loadingResult;
+ Profiler.instance().markPhase(ProfilePhase.LOAD);
+ try (SilentCloseable c = Profiler.instance().profile("evaluateTargetPatterns")) {
+ loadingResult = evaluateTargetPatterns(request, validator);
+ }
env.setWorkspaceName(loadingResult.getWorkspaceName());
executionTool = new ExecutionTool(env, request);
if (needsExecutionPhase(request.getBuildOptions())) {
- executionTool.init();
+ try (SilentCloseable closeable = Profiler.instance().profile("ExecutionTool.init")) {
+ executionTool.init();
+ }
}
// Compute the heuristic instrumentation filter if needed.
@@ -191,14 +207,17 @@ public class BuildTool {
// Configuration creation.
// TODO(gregce): Consider dropping this phase and passing on-the-fly target / host configs as
// needed. This requires cleaning up the invalidation in SkyframeBuildView.setConfigurations.
- BuildConfigurationCollection configurations =
- env.getSkyframeExecutor()
- .createConfigurations(
- env.getReporter(),
- runtime.getConfigurationFragmentFactories(),
- buildOptions,
- request.getMultiCpus(),
- request.getKeepGoing());
+ BuildConfigurationCollection configurations;
+ try (SilentCloseable c = Profiler.instance().profile("createConfigurations")) {
+ configurations =
+ env.getSkyframeExecutor()
+ .createConfigurations(
+ env.getReporter(),
+ runtime.getConfigurationFragmentFactories(),
+ buildOptions,
+ request.getMultiCpus(),
+ request.getKeepGoing());
+ }
env.throwPendingException();
if (configurations.getTargetConfigurations().size() == 1) {
@@ -211,7 +230,24 @@ public class BuildTool {
logger.info("Configurations created");
if (request.getBuildOptions().performAnalysisPhase) {
- AnalysisResult analysisResult = runAnalysisPhase(request, loadingResult, configurations);
+ Profiler.instance().markPhase(ProfilePhase.ANALYZE);
+ AnalysisResult analysisResult;
+ try (SilentCloseable c = Profiler.instance().profile("runAnalysisPhase")) {
+ analysisResult = runAnalysisPhase(request, loadingResult, configurations);
+ }
+
+ // Check licenses.
+ // We check licenses if the first target configuration has license checking enabled. Right
+ // now, it is not possible to have multiple target configurations with different settings
+ // for this flag, which allows us to take this short cut.
+ boolean checkLicenses = configurations.getTargetConfigurations().get(0).checkLicenses();
+ if (checkLicenses) {
+ Profiler.instance().markPhase(ProfilePhase.LICENSE);
+ try (SilentCloseable c = Profiler.instance().profile("validateLicensingForTargets")) {
+ validateLicensingForTargets(analysisResult.getTargetsToBuild(), request.getKeepGoing());
+ }
+ }
+
result.setBuildConfigurationCollection(configurations);
result.setActualTargets(analysisResult.getTargetsToBuild());
result.setTestTargets(analysisResult.getTargetsToTest());
@@ -229,7 +265,9 @@ public class BuildTool {
AbortReason.SKIPPED,
String.format("Target %s build was skipped.", label), label));
}
- postProcessAnalysisResult(request, analysisResult);
+ try (SilentCloseable c = Profiler.instance().profile("postProcessAnalysisResult")) {
+ postProcessAnalysisResult(request, analysisResult);
+ }
// Execution phase.
if (needsExecutionPhase(request.getBuildOptions())) {
executionTool.executeBuild(
@@ -335,7 +373,6 @@ public class BuildTool {
public BuildResult processRequest(
BuildRequest request, TargetValidator validator) {
BuildResult result = new BuildResult(request.getStartTime());
- env.getEventBus().register(result);
maybeSetStopOnFirstFailure(request, result);
Throwable catastrophe = null;
ExitCode exitCode = ExitCode.BLAZE_INTERNAL_ERROR;
@@ -412,7 +449,6 @@ public class BuildTool {
private final LoadingResult evaluateTargetPatterns(
final BuildRequest request, final TargetValidator validator)
throws LoadingFailedException, TargetParsingException, InterruptedException {
- Profiler.instance().markPhase(ProfilePhase.LOAD);
initializeOutputFilter(request);
final boolean keepGoing = request.getKeepGoing();
@@ -465,7 +501,6 @@ public class BuildTool {
throws InterruptedException, ViewCreationFailedException {
Stopwatch timer = Stopwatch.createStarted();
getReporter().handle(Event.progress("Loading complete. Analyzing..."));
- Profiler.instance().markPhase(ProfilePhase.ANALYZE);
BuildView view = new BuildView(env.getDirectories(), runtime.getRuleClassProvider(),
env.getSkyframeExecutor(), runtime.getCoverageReportActionFactory(request));
@@ -510,17 +545,6 @@ public class BuildTool {
analysisResult.getTargetsToBuild(),
analysisResult.getTargetsToTest(),
configurationMap));
-
- // Check licenses.
- // We check licenses if the first target configuration has license checking enabled. Right now,
- // it is not possible to have multiple target configurations with different settings for this
- // flag, which allows us to take this short cut.
- boolean checkLicenses = configurations.getTargetConfigurations().get(0).checkLicenses();
- if (checkLicenses) {
- Profiler.instance().markPhase(ProfilePhase.LICENSE);
- validateLicensingForTargets(analysisResult.getTargetsToBuild(), request.getKeepGoing());
- }
-
return analysisResult;
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index 58afd6b430..78b350b9d7 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -128,11 +128,15 @@ public class ExecutionTool {
// Create tools before getting the strategies from the modules as some of them need tools to
// determine whether the host actually supports certain strategies (e.g. sandboxing).
- createToolsSymlinks();
+ try (SilentCloseable closeable = Profiler.instance().profile("createToolsSymlinks")) {
+ createToolsSymlinks();
+ }
ExecutorBuilder builder = new ExecutorBuilder();
for (BlazeModule module : runtime.getBlazeModules()) {
- module.executorInit(env, request, builder);
+ try (SilentCloseable closeable = Profiler.instance().profile(module + ".executorInit")) {
+ module.executorInit(env, request, builder);
+ }
}
builder.addActionContext(new SymlinkTreeStrategy(
env.getOutputService(), env.getBlazeWorkspace().getBinTools()));
@@ -151,7 +155,9 @@ public class ExecutionTool {
this.actionContextProviders = builder.getActionContextProviders();
for (ActionContextProvider provider : actionContextProviders) {
- provider.init(fileCache);
+ try (SilentCloseable closeable = Profiler.instance().profile(provider + ".init")) {
+ provider.init(fileCache);
+ }
}
// There are many different SpawnActions, and we want to control the action context they use
@@ -226,12 +232,16 @@ public class ExecutionTool {
OutputService outputService = env.getOutputService();
ModifiedFileSet modifiedOutputFiles = ModifiedFileSet.EVERYTHING_MODIFIED;
if (outputService != null) {
- modifiedOutputFiles =
- outputService.startBuild(
- env.getReporter(), buildId, request.getBuildOptions().finalizeActions);
+ try (SilentCloseable c = Profiler.instance().profile("outputService.startBuild")) {
+ modifiedOutputFiles =
+ outputService.startBuild(
+ env.getReporter(), buildId, request.getBuildOptions().finalizeActions);
+ }
} else {
// TODO(bazel-team): this could be just another OutputService
- startLocalOutputBuild();
+ try (SilentCloseable c = Profiler.instance().profile("startLocalOutputBuild")) {
+ startLocalOutputBuild();
+ }
}
// Must be created after the output path is created above.
@@ -255,16 +265,22 @@ public class ExecutionTool {
analysisResult.getConfigurationCollection().getTargetConfigurations());
String productName = runtime.getProductName();
String workspaceName = env.getWorkspaceName();
- OutputDirectoryLinksUtils.createOutputDirectoryLinks(
- workspaceName, env.getWorkspace(), env.getDirectories().getExecRoot(workspaceName),
- env.getDirectories().getOutputPath(workspaceName), getReporter(), targetConfigurations,
- request.getBuildOptions().getSymlinkPrefix(productName), productName);
+ try (SilentCloseable c =
+ Profiler.instance().profile("OutputDirectoryLinksUtils.createOutputDirectoryLinks")) {
+ OutputDirectoryLinksUtils.createOutputDirectoryLinks(
+ workspaceName, env.getWorkspace(), env.getDirectories().getExecRoot(workspaceName),
+ env.getDirectories().getOutputPath(workspaceName), getReporter(), targetConfigurations,
+ request.getBuildOptions().getSymlinkPrefix(productName), productName);
+ }
ActionCache actionCache = getActionCache();
actionCache.resetStatistics();
SkyframeExecutor skyframeExecutor = env.getSkyframeExecutor();
- Builder builder = createBuilder(
- request, actionCache, skyframeExecutor, modifiedOutputFiles);
+ Builder builder;
+ try (SilentCloseable c = Profiler.instance().profile("createBuilder")) {
+ builder = createBuilder(
+ request, actionCache, skyframeExecutor, modifiedOutputFiles);
+ }
//
// Execution proper. All statements below are logically nested in
@@ -272,7 +288,9 @@ public class ExecutionTool {
//
Collection<ConfiguredTarget> configuredTargets = buildResult.getActualTargets();
- env.getEventBus().post(new ExecutionStartingEvent(configuredTargets));
+ try (SilentCloseable c = Profiler.instance().profile("ExecutionStartingEvent")) {
+ env.getEventBus().post(new ExecutionStartingEvent(configuredTargets));
+ }
getReporter().handle(Event.progress("Building..."));
@@ -307,7 +325,10 @@ public class ExecutionTool {
boolean buildCompleted = false;
try {
for (ActionContextProvider actionContextProvider : actionContextProviders) {
- actionContextProvider.executionPhaseStarting(actionGraph, allArtifactsForProviders);
+ try (SilentCloseable c =
+ Profiler.instance().profile(actionContextProvider + ".executionPhaseStarting")) {
+ actionContextProvider.executionPhaseStarting(actionGraph, allArtifactsForProviders);
+ }
}
executor.executionPhaseStarting();
skyframeExecutor.drainChangedFiles();
@@ -315,11 +336,15 @@ public class ExecutionTool {
if (request.getViewOptions().discardAnalysisCache
|| !skyframeExecutor.tracksStateForIncrementality()) {
// Free memory by removing cache entries that aren't going to be needed.
- env.getSkyframeBuildView()
- .clearAnalysisCache(analysisResult.getTargetsToBuild(), analysisResult.getAspects());
+ try (SilentCloseable c = Profiler.instance().profile("clearAnalysisCache")) {
+ env.getSkyframeBuildView()
+ .clearAnalysisCache(analysisResult.getTargetsToBuild(), analysisResult.getAspects());
+ }
}
- configureResourceManager(request);
+ try (SilentCloseable c = Profiler.instance().profile("configureResourceManager")) {
+ configureResourceManager(request);
+ }
Profiler.instance().markPhase(ProfilePhase.EXECUTE);
@@ -411,7 +436,7 @@ public class ExecutionTool {
Profiler.instance().markPhase(ProfilePhase.PREPARE);
// Plant the symlink forest.
- try {
+ try (SilentCloseable c = Profiler.instance().profile("plantSymlinkForest")) {
new SymlinkForest(
packageRootMap.get(), getExecRoot(), runtime.getProductName(), env.getWorkspaceName())
.plantSymlinkForest();
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java
index 797f3370b5..b49aae9ed1 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java
@@ -37,6 +37,8 @@ import com.google.devtools.build.lib.buildtool.buildevent.ExecutionProgressRecei
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
+import com.google.devtools.build.lib.profiler.Profiler;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.skyframe.ActionExecutionInactivityWatchdog;
import com.google.devtools.build.lib.skyframe.AspectValue;
import com.google.devtools.build.lib.skyframe.AspectValue.AspectKey;
@@ -116,8 +118,12 @@ public class SkyframeBuilder implements Builder {
@Nullable Range<Long> lastExecutionTimeRange,
TopLevelArtifactContext topLevelArtifactContext)
throws BuildFailedException, AbruptExitException, TestExecException, InterruptedException {
- skyframeExecutor.detectModifiedOutputFiles(modifiedOutputFiles, lastExecutionTimeRange);
- skyframeExecutor.configureActionExecutor(fileCache, actionInputPrefetcher);
+ try (SilentCloseable c = Profiler.instance().profile("detectModifiedOutputFiles")) {
+ skyframeExecutor.detectModifiedOutputFiles(modifiedOutputFiles, lastExecutionTimeRange);
+ }
+ try (SilentCloseable c = Profiler.instance().profile("configureActionExecutor")) {
+ skyframeExecutor.configureActionExecutor(fileCache, actionInputPrefetcher);
+ }
// Note that executionProgressReceiver accesses builtTargets concurrently (after wrapping in a
// synchronized collection), so unsynchronized access to this variable is unsafe while it runs.
ExecutionProgressReceiver executionProgressReceiver =
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
index 5c55d8309f..75c8d4bff5 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
@@ -32,6 +32,8 @@ import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
import com.google.devtools.build.lib.events.PrintingEventHandler;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.events.StoredEventHandler;
+import com.google.devtools.build.lib.profiler.Profiler;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.AnsiStrippingOutputStream;
@@ -466,7 +468,10 @@ public class BlazeCommandDispatcher {
env.getEventBus().post(commonOptions.toolCommandLine);
for (BlazeModule module : runtime.getBlazeModules()) {
- env.getSkyframeExecutor().injectExtraPrecomputedValues(module.getPrecomputedValues());
+ try (SilentCloseable closeable =
+ Profiler.instance().profile(module + ".injectExtraPrecomputedValues")) {
+ env.getSkyframeExecutor().injectExtraPrecomputedValues(module.getPrecomputedValues());
+ }
}
result = command.exec(env, options);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index 12276f4547..f073fda405 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -47,6 +47,7 @@ import com.google.devtools.build.lib.profiler.ProfilePhase;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.profiler.Profiler.ProfiledTaskKinds;
import com.google.devtools.build.lib.profiler.ProfilerTask;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.query2.AbstractBlazeQueryEnvironment;
import com.google.devtools.build.lib.query2.QueryEnvironmentFactory;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
@@ -481,7 +482,9 @@ public final class BlazeRuntime {
notifyCommandComplete(exitCode);
for (BlazeModule module : blazeModules) {
- module.afterCommand();
+ try (SilentCloseable c = Profiler.instance().profile(module + ".afterCommand")) {
+ module.afterCommand();
+ }
}
// Wipe the dependency graph if requested. Note that this method always runs at the end of
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
index 14b6c19c01..b217e93e58 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
@@ -21,6 +21,8 @@ import com.google.devtools.build.lib.exec.ExecutionOptions;
import com.google.devtools.build.lib.exec.local.LocalExecutionOptions;
import com.google.devtools.build.lib.pkgcache.LoadingOptions;
import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
+import com.google.devtools.build.lib.profiler.Profiler;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.runtime.BlazeCommand;
import com.google.devtools.build.lib.runtime.BlazeCommandResult;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
@@ -65,13 +67,19 @@ public final class BuildCommand implements BlazeCommand {
@Override
public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
BlazeRuntime runtime = env.getRuntime();
- List<String> targets = ProjectFileSupport.getTargets(runtime.getProjectFileProvider(), options);
+ List<String> targets;
+ try (SilentCloseable closeable = Profiler.instance().profile("ProjectFileSupport.getTargets")) {
+ targets = ProjectFileSupport.getTargets(runtime.getProjectFileProvider(), options);
+ }
- BuildRequest request = BuildRequest.create(
- getClass().getAnnotation(Command.class).name(), options,
- runtime.getStartupOptionsProvider(),
- targets,
- env.getReporter().getOutErr(), env.getCommandId(), env.getCommandStartTime());
+ BuildRequest request;
+ try (SilentCloseable closeable = Profiler.instance().profile("BuildRequest.create")) {
+ request = BuildRequest.create(
+ getClass().getAnnotation(Command.class).name(), options,
+ runtime.getStartupOptionsProvider(),
+ targets,
+ env.getReporter().getOutErr(), env.getCommandId(), env.getCommandStartTime());
+ }
ExitCode exitCode = new BuildTool(env).processRequest(request, null).getExitCondition();
return BlazeCommandResult.exitCode(exitCode);
}
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
index ae11fa47c3..49dfba69f4 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/BUILD
@@ -28,6 +28,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/exec/apple",
"//src/main/java/com/google/devtools/build/lib/exec/local",
"//src/main/java/com/google/devtools/build/lib/exec/local:options",
+ "//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/shell",
"//src/main/java/com/google/devtools/build/lib/standalone",
"//src/main/java/com/google/devtools/build/lib/vfs",
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java
index ce3c8a39c3..b0a7ed652a 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java
@@ -28,6 +28,8 @@ import com.google.devtools.build.lib.actions.UserExecException;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
+import com.google.devtools.build.lib.profiler.Profiler;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.shell.Command;
import com.google.devtools.build.lib.shell.CommandException;
@@ -67,7 +69,7 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
File cwd = execRoot.getPathFile();
Command cmd = new Command(linuxSandboxArgv.toArray(new String[0]), env, cwd);
- try {
+ try (SilentCloseable c = Profiler.instance().profile("LinuxSandboxedSpawnRunner.isSupported")) {
cmd.execute(ByteStreams.nullOutputStream(), ByteStreams.nullOutputStream());
} catch (CommandException e) {
return false;
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 b7c9386bc3..ac6e8d1496 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
@@ -119,6 +119,8 @@ import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator;
import com.google.devtools.build.lib.pkgcache.TestFilter;
import com.google.devtools.build.lib.pkgcache.TransitivePackageLoader;
import com.google.devtools.build.lib.profiler.AutoProfiler;
+import com.google.devtools.build.lib.profiler.Profiler;
+import com.google.devtools.build.lib.profiler.SilentCloseable;
import com.google.devtools.build.lib.skyframe.AspectValue.AspectValueKey;
import com.google.devtools.build.lib.skyframe.DirtinessCheckerUtils.FileDirtinessChecker;
import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction;
@@ -1309,9 +1311,12 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
checkActive();
Preconditions.checkState(actionLogBufferPathGenerator != null);
- skyframeActionExecutor.prepareForExecution(
- reporter, executor, keepGoing, explain, actionCacheChecker,
- finalizeActionsToOutputService ? outputService : null);
+ try (SilentCloseable c =
+ Profiler.instance().profile("skyframeActionExecutor.prepareForExecution")) {
+ skyframeActionExecutor.prepareForExecution(
+ reporter, executor, keepGoing, explain, actionCacheChecker,
+ finalizeActionsToOutputService ? outputService : null);
+ }
resourceManager.resetResourceUsage();
try {