Browse Source

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
pull/4033/head
Christoph Wille 1 month ago
parent
commit
1ddd5986ae
  1. 7
      .github/workflows/build-ilspy.yml

7
.github/workflows/build-ilspy.yml

@ -99,6 +99,13 @@ jobs: @@ -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 }}

Loading…
Cancel
Save