Skip to content

Commit

Permalink
Add profiling to remoteActionBuildingSemaphore.acquire()
Browse files Browse the repository at this point in the history
Without this there can be large gaps in the profile when using remote execution that are hard to reason about.

Closes bazelbuild#20474.

PiperOrigin-RevId: 590475989
Change-Id: Ic6e042c36f85e8098a468c73c62bd45cc367423e
  • Loading branch information
brentleyjones authored and bazel-io committed Dec 14, 2023
1 parent 17d05dc commit 4d248ea
Showing 1 changed file with 8 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,10 @@ private ToolSignature getToolSignature(Spawn spawn, SpawnExecutionContext contex
/** Creates a new {@link RemoteAction} instance from spawn. */
public RemoteAction buildRemoteAction(Spawn spawn, SpawnExecutionContext context)
throws IOException, ExecException, ForbiddenActionInputException, InterruptedException {
remoteActionBuildingSemaphore.acquire();
try (SilentCloseable c =
Profiler.instance().profile(ProfilerTask.REMOTE_SETUP, "acquiring semaphore")) {
remoteActionBuildingSemaphore.acquire();
}
try {
ToolSignature toolSignature = getToolSignature(spawn, context);
final MerkleTree merkleTree = buildInputMerkleTree(spawn, context, toolSignature);
Expand Down Expand Up @@ -1460,7 +1463,10 @@ public void uploadInputsIfNotPresent(RemoteAction action, boolean force)
// concurrency. This prevents memory exhaustion. We assume that
// ensureInputsPresent() provides enough parallelism to saturate the
// network connection.
remoteActionBuildingSemaphore.acquire();
try (SilentCloseable c =
Profiler.instance().profile(ProfilerTask.UPLOAD_TIME, "acquiring semaphore")) {
remoteActionBuildingSemaphore.acquire();
}
try {
MerkleTree merkleTree = action.getMerkleTree();
if (merkleTree == null) {
Expand Down

0 comments on commit 4d248ea

Please sign in to comment.