November 11, 2023
https://issues.dlang.org/show_bug.cgi?id=24239

          Issue ID: 24239
           Summary: dlang.org tests on CircleCI run out of memory
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dlang.org
          Assignee: nobody@puremagic.com
          Reporter: tim.dlang@t-online.de

The tests for dlang.org running on CircleCI can randomly fail with the
following message:
Last command failed with exit code -9

In https://github.com/dlang/dmd/pull/15504 I found out, that build.d tries to run DMD in parallel with 36 instances. This number was automatically detected as the number of CPU cores by the function totalCPUs in build.d. The CircleCI documentation (https://circleci.com/docs/configuration-reference/#resourceclass) mentions this problem:

"Java, Erlang and any other languages that introspect the /proc directory for information about CPU count may require additional configuration to prevent them from slowing down when using the CircleCI resource class feature. Programs with this issue may request 32 CPU cores and run slower than they would when requesting one core. Users of languages with this issue should pin their CPU count to their guaranteed CPU resources."

Pull Request https://github.com/dlang/dmd/pull/15504 tried to better calculate the number of CPU cores, but that could result in a wrong value in other environments. An alternative is to manually set the number of jobs, which needs changes to the makefiles of dmd and dlang.org.

--