CI: Use nproc to count only on-line CPUs for GNUMAKEFLAGS

Use `nproc` rather than `nproc --all`. Because the number by the `nproc` is
different from the number by the `nproc --all` on GitHub Actions ppc64le/s390x.
This caused the `make` command runs much more jobs than the number of on-line
CPUs on these environments.
The make command ran 193 jobs in parallel for 4 on-line CPUs in GitHub Actions
ppc64le, and ran 9 jobs in parallel for 4 on-line CPUs in GitHub Actions s390x.

And this caused the high load average 34.58 on ppc64le, and 6.69 on s390x.
These values should be less than 4.0. I believe we should use the `nproc`
rather than `nproc --all`.

```
+ nproc
4
+ nproc --all
192
```

```
+ nproc
4
+ nproc --all
8
```

See https://github.com/IBM/actionspz/issues/38 for details.

Note the `--all` option in the `nproc --all` was originally added to boost CPU
in a hyper threading environment where one physical core works like two logical
cores.

https://www.intel.com/content/www/us/en/gaming/resources/hyper-threading.html
This commit is contained in:
Jun Aruga 2025-08-26 15:38:16 +01:00 committed by Jun Aruga
parent 8935cf98e5
commit 47d4cceeff
2 changed files with 2 additions and 2 deletions

View File

@ -26,7 +26,7 @@ export CONFIGURE_TTY='never'
export RUBY_DEBUG='ci rgengc'
export RUBY_TESTOPTS='-q --color=always --tty=no'
export RUBY_DEBUG_COUNTER_DISABLE='1'
export GNUMAKEFLAGS="-j$((1 + $(nproc --all)))"
export GNUMAKEFLAGS="-j$((1 + $(nproc)))"
case "x${INPUT_ENABLE_SHARED}" in
x | xno | xfalse )

View File

@ -110,7 +110,7 @@ runs:
- if: runner.os == 'Linux'
shell: bash
run: echo "GNUMAKEFLAGS=-sj$((1 + $(nproc --all)))" >> "$GITHUB_ENV"
run: echo "GNUMAKEFLAGS=-sj$((1 + $(nproc)))" >> "$GITHUB_ENV"
# macOS' GNU make is so old that they doesn't understand `GNUMAKEFLAGS`.
- if: runner.os == 'macOS'