linux: handle cgroups cpu.max with limit < period

This apparently manifests when one passes `--cpu=.5` to docker because
then /sys/fs/cgroup/cpu.max looks like `50000 100000`, and 50000 divided
by 100000 is zero when using integer math.

Return 1 in that case, indicating there is at least one CPU available.
Returning 0 makes no sense because there is always at least one CPU
available, otherwise the program wouldn't be running.

Fixes: https://github.com/nodejs/node/issues/59200
This commit is contained in:
Ben Noordhuis 2025-07-31 11:08:12 +02:00
parent 33b192c845
commit 3ec8ded423

View File

@ -2363,6 +2363,8 @@ static int uv__get_cgroupv2_constrained_cpu(const char* cgroup,
goto next;
*quota = limit / period;
if (*quota == 0)
*quota = 1;
if (*quota < min_quota)
min_quota = *quota;