From 1ddd5986ae485121c212785b3e83ee60ac7290b4 Mon Sep 17 00:00:00 2001 From: Christoph Wille Date: Sat, 15 Aug 2026 16:20:32 +0200 Subject: [PATCH] Run the Windows CI test step under workstation GC The Windows job runs every test host of the solution concurrently on a 4-core runner. With ICSharpCode.Decompiler.Tests on server GC that host sits at 98-100% CPU for the whole test step, and the neighbours starve: the process-module walk in ILSpy.Tests.Windows exceeded its 60 s budget (OperationCanceledException in NetFrameworkProcessesTests, Release job), a background sampler measured its own walk over the ~170 runner processes at 40-170 s instead of a few seconds, and ILSpy.Tests took 685 s instead of 375 s (Release). Memory was not the constraint: never below 9 GB free, disk idle. The decompiler suite itself moved little on that box (Debug 1393 s -> 1226 s, Release 664 s -> 751 s). Server GC stays on for machines the suite has to itself; the Linux job runs the projects one at a time. Assisted-by: Claude:claude-fable-5:Claude Code --- .github/workflows/build-ilspy.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/build-ilspy.yml b/.github/workflows/build-ilspy.yml index 8b786ab0e..3249f3b65 100644 --- a/.github/workflows/build-ilspy.yml +++ b/.github/workflows/build-ilspy.yml @@ -99,6 +99,13 @@ jobs: - name: Execute unit tests id: unit-tests + # All test hosts of the solution run concurrently on a 4-core runner. Server GC (enabled by + # ICSharpCode.Decompiler.Tests for machines it has to itself) keeps that host at 100% CPU + # and starves the neighbours: the process-module walks in ILSpy.Tests.Windows blow their + # 60 s budget and ILSpy.Tests takes almost twice as long, while the decompiler suite itself + # gains little here. The environment variable overrides the runtimeconfig setting. + env: + DOTNET_gcServer: 0 run: > dotnet test --solution ilspy.sln --configuration ${{ matrix.configuration }}