Skip to content

Free disk space on Windows 2025 runners #144305

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 30, 2025

Conversation

ChrisDenton
Copy link
Member

@ChrisDenton ChrisDenton commented Jul 22, 2025

I've managed to reduce the time deletion takes by:

  • Using powershell, which is generally faster for filesystem operations than msys2
  • Disabling defender's realtime protection
  • Performing deletions concurrently then waiting for them all to complete

It still takes 2-10 mins but that's not too bad.

@rustbot
Copy link
Collaborator

rustbot commented Jul 22, 2025

r? @jdno

rustbot has assigned @jdno.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Jul 22, 2025
@ChrisDenton
Copy link
Member Author

@bors try jobs=x86_64-msvc-1

rust-bors bot added a commit that referenced this pull request Jul 22, 2025
Free disk space on Windows 2025 runners

try-job: x86_64-msvc-1
@rust-bors
Copy link

rust-bors bot commented Jul 22, 2025

⌛ Trying commit e635015 with merge 0c11125

To cancel the try build, run the command @bors try cancel.

@ChrisDenton ChrisDenton force-pushed the win-free-disk-space branch from e635015 to 9e95a28 Compare July 22, 2025 13:35
@marcoieni
Copy link
Member

I'll review this since I have a lot of context.

r? marcoieni

@rustbot rustbot assigned marcoieni and unassigned jdno Jul 22, 2025
@ChrisDenton
Copy link
Member Author

@bors try jobs=msvc,mingw

@rust-bors
Copy link

rust-bors bot commented Jul 22, 2025

⌛ Trying commit 96ed33f with merge 8d49646

(The previously running try build was automatically cancelled.)

To cancel the try build, run the command @bors try cancel.

rust-bors bot added a commit that referenced this pull request Jul 22, 2025
Free disk space on Windows 2025 runners

try-job: *msvc*
try-job: *mingw*
@ChrisDenton ChrisDenton force-pushed the win-free-disk-space branch from 96ed33f to 7685c91 Compare July 22, 2025 14:04
@rust-bors
Copy link

rust-bors bot commented Jul 22, 2025

☀️ Try build successful (CI)
Build commit: 8d49646 (8d496467c43f870fb6ca9724ba0cb278e746927d, parent: c0b282f0ccdab7523cdb8dfa41b23bed5573da76)

@ChrisDenton ChrisDenton force-pushed the win-free-disk-space branch from 7685c91 to 5f662d5 Compare July 22, 2025 19:17
@ChrisDenton
Copy link
Member Author

@bors try jobs=x86_64-msvc-1

@rust-bors
Copy link

rust-bors bot commented Jul 22, 2025

⌛ Trying commit 5f662d5 with merge 9937cf4

To cancel the try build, run the command @bors try cancel.

rust-bors bot added a commit that referenced this pull request Jul 22, 2025
Free disk space on Windows 2025 runners

try-job: x86_64-msvc-1
@rust-bors
Copy link

rust-bors bot commented Jul 22, 2025

💔 Test failed (CI). Failed job:

@rust-log-analyzer

This comment has been minimized.

@marcoieni
Copy link
Member

The commit history doesn't look clean:
image

@marcoieni
Copy link
Member

try - dist-x86_64-mingw is the job with the lowest available disk space at 18G. So I think the script is removing enough disk space 🥳

Unfortunately in some jobs freeing the disk space takes up to 10 minutes. I think it's fine for now, but in the future we might want to try to make this step faster somehow 🤔

You can r=me once you clean the commit history 👍

@ChrisDenton ChrisDenton force-pushed the win-free-disk-space branch from cc46ba4 to 61e6e35 Compare July 29, 2025 04:12
@ChrisDenton
Copy link
Member Author

Oh weird, I have a single commit on my local branch, I guess I must have force pushed too early or something. Anyway I verified that it's definitely a single commit on github now.

The time it takes seems very variable in with the same job on different runs. Sometimes 3 minutes, sometimes 10 or so.

@bors r=marcoieni

@bors
Copy link
Collaborator

bors commented Jul 29, 2025

📌 Commit 61e6e35 has been approved by marcoieni

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 29, 2025
@RalfJung
Copy link
Member

Disabling defender's realtime protection

Where in the script does that happen?

@marcoieni
Copy link
Member

Chris, your force-push reverted this change:
image
It's not a big deal. Either you force-push another time or you submit another PR, as you prefer 👍

Where in the script does that happen?

We decided to remove that line. Defender is not disabled anymore.

@ChrisDenton
Copy link
Member Author

@bors r-

I'll fix that. It seems I'm struggling to keep my local branch properly sync'd ATM 🙂

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jul 29, 2025
@RalfJung
Copy link
Member

We decided to remove that line. Defender is not disabled anymore.

Please update the PR description to match the PR, then.

@marcoieni
Copy link
Member

I'll fix that. It seems I'm struggling to keep my local branch properly sync'd ATM 🙂

I feel you, I struggle with git as well 😂

@ChrisDenton ChrisDenton force-pushed the win-free-disk-space branch from 61e6e35 to 43018d3 Compare July 30, 2025 04:11
@ChrisDenton
Copy link
Member Author

Ok, let's try again 🙂

@bors r=marcoieni

@bors
Copy link
Collaborator

bors commented Jul 30, 2025

📌 Commit 43018d3 has been approved by marcoieni

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 30, 2025
@bors
Copy link
Collaborator

bors commented Jul 30, 2025

⌛ Testing commit 43018d3 with merge 72716b1...

@bors
Copy link
Collaborator

bors commented Jul 30, 2025

☀️ Test successful - checks-actions
Approved by: marcoieni
Pushing 72716b1 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jul 30, 2025
@bors bors merged commit 72716b1 into rust-lang:master Jul 30, 2025
11 checks passed
@rustbot rustbot added this to the 1.90.0 milestone Jul 30, 2025
Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing 919c409 (parent) -> 72716b1 (this PR)

Test differences

Show 173 test diffs

Stage 2

  • [debuginfo-cdb] tests/debuginfo/associated-types.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/basic-types-globals.rs#lto: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/basic-types-globals.rs#no-lto: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/basic-types-mut-globals.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/borrowed-c-style-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/borrowed-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/borrowed-unique-basic.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/box.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/boxed-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/by-value-self-argument-in-trait-impl.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/c-style-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/captured-fields-2.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/collapse-debuginfo-external-attr.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/collapse-debuginfo-external-flag.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/collapse-debuginfo-static-external.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/collapse-debuginfo-static.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/collapse-debuginfo-with-yes-flag.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/constant-debug-locs.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/constant-in-match-pattern.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/coroutine-closure.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/coroutine-objects.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/cross-crate-spans.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/cross-crate-type-uniquing.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/destructured-for-loop-variable.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/destructured-local.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/dummy_span.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/embedded-visualizer.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/empty-string.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/enum-thinlto.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/evec-in-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/extern-c-fn.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/fixed-sized-array.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/function-arg-initialization.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/function-arguments.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/function-call.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/function-prologue-stepping-regular.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/generic-enum-with-different-disr-sizes.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/generic-function.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/generic-static-method-on-struct-and-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/generic-struct-style-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/generic-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/generic-tuple-style-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/issue-12886.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/issue-13213.rs: ignore (ignored when the debugger is cdb (Fails with exit code 0xc0000135 ("the application failed to initialize properly"))) -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scope-in-for-loop.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scope-in-if.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scope-in-match.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scope-in-parameterless-closure.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scope-in-unconditional-loop.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scope-with-macro.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/lexical-scopes-in-block-expression.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/marker-types.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/method-on-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/method-on-generic-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/method-on-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/method-on-trait.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/method-on-tuple-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/msvc-pretty-enums.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/multi-byte-chars.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/multiline-calls.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/multiple-functions-equal-var-names.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/multiple-functions.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/mutable-locs.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/name-shadowing-and-scope-nesting.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/packed-struct-with-destructor.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/packed-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/path.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/pretty-huge-vec.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/pretty-slices.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/pretty-std-collections-hash.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/pretty-std-collections.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/pretty-std.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/pretty-uninitialized-vec.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/rc_arc.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/recursive-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/recursive-type-with-gat.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/reference-debuginfo.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/result-types.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/rwlock-read.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/rwlock-write.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/self-in-default-method.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/shadowed-argument.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/should-fail.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/simd.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/simple-lexical-scope.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/simple-struct.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/skip_second_statement.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/skip_second_statement_collapse.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/step-into-match.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/strings-and-strs.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/struct-in-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/struct-style-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/thread-names.rs#macos: ignore (only executed when the operating system is macos) -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/tuple-in-tuple.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/tuple-style-enum.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/union-smoke.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/vec-slices.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/vec.rs: pass -> [missing] (J0)
  • [debuginfo-cdb] tests/debuginfo/zst-interferes-with-prologue.rs: pass -> [missing] (J0)
  • cargo_init::simple_hg::case: pass -> ignore (hg not installed) (J1)

(and 70 additional test diffs)

Additionally, 3 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 72716b134ac26b837703e46cbda99a453ae92c42 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. dist-aarch64-linux: 5494.0s -> 8129.1s (48.0%)
  2. pr-check-2: 2689.4s -> 2102.2s (-21.8%)
  3. pr-check-1: 1768.1s -> 1530.3s (-13.5%)
  4. x86_64-gnu-tools: 3960.4s -> 3430.8s (-13.4%)
  5. x86_64-gnu-debug: 6290.6s -> 5458.2s (-13.2%)
  6. aarch64-gnu-debug: 4397.6s -> 3823.8s (-13.0%)
  7. i686-gnu-nopt-1: 8193.4s -> 7142.1s (-12.8%)
  8. x86_64-rust-for-linux: 2953.4s -> 2591.6s (-12.3%)
  9. aarch64-gnu-llvm-19-2: 2576.6s -> 2273.3s (-11.8%)
  10. x86_64-mingw-2: 7056.6s -> 7755.3s (9.9%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

This was referenced Jul 30, 2025
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (72716b1): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

Results (primary 1.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.1% [1.1%, 1.1%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.1% [1.1%, 1.1%] 1

Cycles

Results (primary 2.5%, secondary 15.7%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.5% [2.5%, 2.5%] 1
Regressions ❌
(secondary)
18.7% [17.8%, 19.8%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.6% [-2.6%, -2.6%] 1
All ❌✅ (primary) 2.5% [2.5%, 2.5%] 1

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 468.849s -> 468.451s (-0.08%)
Artifact size: 376.81 MiB -> 376.81 MiB (0.00%)

@ChrisDenton ChrisDenton deleted the win-free-disk-space branch July 30, 2025 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants