fix(ibmcloud): remove PID limits to prevent EAGAIN during heavy builds#856
fix(ibmcloud): remove PID limits to prevent EAGAIN during heavy builds#856adrianriobo wants to merge 1 commit into
Conversation
On ppc64le (and s390x) runners, compiling Pillow's 60+ C extension files causes ccache->gcc->cc1->as process chains that exhaust the container's cgroup pids.max, producing EAGAIN on fork and posix_spawn failures. Three enforcement layers are now cleared on every GitLab runner setup: - snippet-linux.sh: sets pids_limit = -1 in /etc/containers/containers.conf so Podman does not apply a default ceiling to job containers. - snippet-linux.sh: passes --docker-pids-limit -1 to gitlab-runner register so the Docker executor explicitly removes the pids cgroup on each job container it spawns. - ibm-power/cloud-config, ibm-z/cloud-config: adds TasksMax=infinity to the gitlab-runner.service.d drop-in so the runner daemon's own systemd task limit does not cap its child process tree. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (3)
📝 WalkthroughSummary by CodeRabbit
WalkthroughConfiguration changes remove per-container PID limits and systemd task limits for GitLab runner infrastructure. The gitlab snippet script sets containers.conf pids_limit to -1 and adds a --docker-pids-limit flag to runner registration. IBM Power and IBM Z cloud-config templates add TasksMax=infinity to the runner's systemd service override. ChangesPID and Task Limit Removal
Estimated code review effort: 1 (Trivial) | ~5 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Problem
On ppc64le (and s390x) runners, building wheel packages fails with:
```
ccache: error: Failed to fork: Resource temporarily unavailable
gcc: error: posix_spawn: Operation not permitted
```
Root cause: Pillow compiles 60+ C extension files. Each file spawns a
`ccache → gcc → cc1 → as` process chain (4 processes per file). Running
two concurrent jobs exhausts the container's cgroup `pids.max`, which
Podman inherits from the system default (~2048 on RHEL 9).
Three enforcement layers were all unset, each independently capable of
triggering the failure:
Changes
block in `/etc/containers/containers.conf` (idempotent, covers all DNS
code-path branches); adds `--docker-pids-limit -1` to `gitlab-runner register`
so the Docker executor explicitly removes the pids cgroup on each job container.
`TasksMax=infinity` to the `gitlab-runner.service.d` drop-in.
IBM Z runners to prevent the same failure class on s390x.
Test plan
🤖 Generated with Claude Code