all: children: zuul_unreachable: hosts: {} hosts: {} vars: download_artifact_job: zuul-build-python-release download_artifact_type: - python_sdist - python_wheel ensure_tox_version: <4 node_version: 16 release_python: python3 zuul: _inheritance_path: - '' - '' - '' - '' ansible_version: '9' attempts: 1 branch: master build: e6b85a20ea53417c9038b8008f4029ba build_refs: - branch: master change: '945274' change_message: 'Add a process limit governor to the executor The zuul executor has a number of governors that check system limits which will result in the executor unregistering itself from performing future work when near to these limits. One such limit is the number of processes that is allowed by the runtime system. Add a governor that will unregister the executor when near to the process limit. To do this we rely on cgroups'' pids.max and pids.current values. There are two ways these manifest. The first is running within a container. In this case the values will be present in the root cgroup directory. When not running a container these values are not present. We could then attempt to rely on ulimits and process listings, but it appears that systemd creates a user.slice cgroup for each user and tracks the pids.max and pids.current (and on my system these match my ulimits) so we use this instead. Systemd is fairly ubiquitous and this prevents us from having two different implementations in place. This is important because running zuul jobs requires a number of processes. When we are near the process limit starting a new job will fork ansible and ansible forks ssh which also relies on control persistence processes and an ssh-agent. Rather than failing the job due to an inability to fork we should stop running new jobs until we have backed away from the limit. Change-Id: Ie24e386680087d7640fac13ceb34b1eb934d5146 ' change_url: https://review.opendev.org/945274 commit_id: 4901d4c0133f728a25d0bea431d2a6cff66a6a19 patchset: '3' project: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul name: zuul/zuul short_name: zuul src_dir: src/opendev.org/zuul/zuul topic: process-governor buildset: 7a8c2bbc994045e39a2183d22db83010 buildset_refs: - branch: master change: '945274' change_message: 'Add a process limit governor to the executor The zuul executor has a number of governors that check system limits which will result in the executor unregistering itself from performing future work when near to these limits. One such limit is the number of processes that is allowed by the runtime system. Add a governor that will unregister the executor when near to the process limit. To do this we rely on cgroups'' pids.max and pids.current values. There are two ways these manifest. The first is running within a container. In this case the values will be present in the root cgroup directory. When not running a container these values are not present. We could then attempt to rely on ulimits and process listings, but it appears that systemd creates a user.slice cgroup for each user and tracks the pids.max and pids.current (and on my system these match my ulimits) so we use this instead. Systemd is fairly ubiquitous and this prevents us from having two different implementations in place. This is important because running zuul jobs requires a number of processes. When we are near the process limit starting a new job will fork ansible and ansible forks ssh which also relies on control persistence processes and an ssh-agent. Rather than failing the job due to an inability to fork we should stop running new jobs until we have backed away from the limit. Change-Id: Ie24e386680087d7640fac13ceb34b1eb934d5146 ' change_url: https://review.opendev.org/945274 commit_id: 4901d4c0133f728a25d0bea431d2a6cff66a6a19 patchset: '3' project: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul name: zuul/zuul short_name: zuul src_dir: src/opendev.org/zuul/zuul topic: process-governor change: '945274' change_message: 'Add a process limit governor to the executor The zuul executor has a number of governors that check system limits which will result in the executor unregistering itself from performing future work when near to these limits. One such limit is the number of processes that is allowed by the runtime system. Add a governor that will unregister the executor when near to the process limit. To do this we rely on cgroups'' pids.max and pids.current values. There are two ways these manifest. The first is running within a container. In this case the values will be present in the root cgroup directory. When not running a container these values are not present. We could then attempt to rely on ulimits and process listings, but it appears that systemd creates a user.slice cgroup for each user and tracks the pids.max and pids.current (and on my system these match my ulimits) so we use this instead. Systemd is fairly ubiquitous and this prevents us from having two different implementations in place. This is important because running zuul jobs requires a number of processes. When we are near the process limit starting a new job will fork ansible and ansible forks ssh which also relies on control persistence processes and an ssh-agent. Rather than failing the job due to an inability to fork we should stop running new jobs until we have backed away from the limit. Change-Id: Ie24e386680087d7640fac13ceb34b1eb934d5146 ' change_url: https://review.opendev.org/945274 child_jobs: [] commit_id: 4901d4c0133f728a25d0bea431d2a6cff66a6a19 event_id: dcfc9d2b97f74dd8aba81c4cee7671df executor: hostname: ze09.opendev.org inventory_file: /var/lib/zuul/builds/e6b85a20ea53417c9038b8008f4029ba/ansible/inventory.yaml log_root: /var/lib/zuul/builds/e6b85a20ea53417c9038b8008f4029ba/work/logs result_data_file: /var/lib/zuul/builds/e6b85a20ea53417c9038b8008f4029ba/work/results.json src_root: /var/lib/zuul/builds/e6b85a20ea53417c9038b8008f4029ba/work/src work_root: /var/lib/zuul/builds/e6b85a20ea53417c9038b8008f4029ba/work include_vars: [] items: - branch: master change: '945274' change_message: 'Add a process limit governor to the executor The zuul executor has a number of governors that check system limits which will result in the executor unregistering itself from performing future work when near to these limits. One such limit is the number of processes that is allowed by the runtime system. Add a governor that will unregister the executor when near to the process limit. To do this we rely on cgroups'' pids.max and pids.current values. There are two ways these manifest. The first is running within a container. In this case the values will be present in the root cgroup directory. When not running a container these values are not present. We could then attempt to rely on ulimits and process listings, but it appears that systemd creates a user.slice cgroup for each user and tracks the pids.max and pids.current (and on my system these match my ulimits) so we use this instead. Systemd is fairly ubiquitous and this prevents us from having two different implementations in place. This is important because running zuul jobs requires a number of processes. When we are near the process limit starting a new job will fork ansible and ansible forks ssh which also relies on control persistence processes and an ssh-agent. Rather than failing the job due to an inability to fork we should stop running new jobs until we have backed away from the limit. Change-Id: Ie24e386680087d7640fac13ceb34b1eb934d5146 ' change_url: https://review.opendev.org/945274 commit_id: 4901d4c0133f728a25d0bea431d2a6cff66a6a19 patchset: '3' project: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul name: zuul/zuul short_name: zuul src_dir: src/opendev.org/zuul/zuul topic: process-governor job: opendev-promote-python jobtags: [] max_attempts: 3 message: QWRkIGEgcHJvY2VzcyBsaW1pdCBnb3Zlcm5vciB0byB0aGUgZXhlY3V0b3IKClRoZSB6dXVsIGV4ZWN1dG9yIGhhcyBhIG51bWJlciBvZiBnb3Zlcm5vcnMgdGhhdCBjaGVjayBzeXN0ZW0gbGltaXRzCndoaWNoIHdpbGwgcmVzdWx0IGluIHRoZSBleGVjdXRvciB1bnJlZ2lzdGVyaW5nIGl0c2VsZiBmcm9tIHBlcmZvcm1pbmcKZnV0dXJlIHdvcmsgd2hlbiBuZWFyIHRvIHRoZXNlIGxpbWl0cy4gT25lIHN1Y2ggbGltaXQgaXMgdGhlIG51bWJlciBvZgpwcm9jZXNzZXMgdGhhdCBpcyBhbGxvd2VkIGJ5IHRoZSBydW50aW1lIHN5c3RlbS4gQWRkIGEgZ292ZXJub3IgdGhhdAp3aWxsIHVucmVnaXN0ZXIgdGhlIGV4ZWN1dG9yIHdoZW4gbmVhciB0byB0aGUgcHJvY2VzcyBsaW1pdC4KClRvIGRvIHRoaXMgd2UgcmVseSBvbiBjZ3JvdXBzJyBwaWRzLm1heCBhbmQgcGlkcy5jdXJyZW50IHZhbHVlcy4gVGhlcmUKYXJlIHR3byB3YXlzIHRoZXNlIG1hbmlmZXN0LiBUaGUgZmlyc3QgaXMgcnVubmluZyB3aXRoaW4gYSBjb250YWluZXIuIEluCnRoaXMgY2FzZSB0aGUgdmFsdWVzIHdpbGwgYmUgcHJlc2VudCBpbiB0aGUgcm9vdCBjZ3JvdXAgZGlyZWN0b3J5LiBXaGVuCm5vdCBydW5uaW5nIGEgY29udGFpbmVyIHRoZXNlIHZhbHVlcyBhcmUgbm90IHByZXNlbnQuIFdlIGNvdWxkIHRoZW4KYXR0ZW1wdCB0byByZWx5IG9uIHVsaW1pdHMgYW5kIHByb2Nlc3MgbGlzdGluZ3MsIGJ1dCBpdCBhcHBlYXJzIHRoYXQKc3lzdGVtZCBjcmVhdGVzIGEgdXNlci5zbGljZSBjZ3JvdXAgZm9yIGVhY2ggdXNlciBhbmQgdHJhY2tzIHRoZQpwaWRzLm1heCBhbmQgcGlkcy5jdXJyZW50IChhbmQgb24gbXkgc3lzdGVtIHRoZXNlIG1hdGNoIG15IHVsaW1pdHMpIHNvCndlIHVzZSB0aGlzIGluc3RlYWQuIFN5c3RlbWQgaXMgZmFpcmx5IHViaXF1aXRvdXMgYW5kIHRoaXMgcHJldmVudHMgdXMKZnJvbSBoYXZpbmcgdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgaW4gcGxhY2UuCgpUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHJ1bm5pbmcgenV1bCBqb2JzIHJlcXVpcmVzIGEgbnVtYmVyIG9mCnByb2Nlc3Nlcy4gV2hlbiB3ZSBhcmUgbmVhciB0aGUgcHJvY2VzcyBsaW1pdCBzdGFydGluZyBhIG5ldyBqb2Igd2lsbApmb3JrIGFuc2libGUgYW5kIGFuc2libGUgZm9ya3Mgc3NoIHdoaWNoIGFsc28gcmVsaWVzIG9uIGNvbnRyb2wKcGVyc2lzdGVuY2UgcHJvY2Vzc2VzIGFuZCBhbiBzc2gtYWdlbnQuIFJhdGhlciB0aGFuIGZhaWxpbmcgdGhlIGpvYiBkdWUKdG8gYW4gaW5hYmlsaXR5IHRvIGZvcmsgd2Ugc2hvdWxkIHN0b3AgcnVubmluZyBuZXcgam9icyB1bnRpbCB3ZSBoYXZlCmJhY2tlZCBhd2F5IGZyb20gdGhlIGxpbWl0LgoKQ2hhbmdlLUlkOiBJZTI0ZTM4NjY4MDA4N2Q3NjQwZmFjMTNjZWIzNGIxZWI5MzRkNTE0Ngo= patchset: '3' pipeline: promote playbook_context: playbook_projects: trusted/project_0/opendev.org/opendev/base-jobs: canonical_name: opendev.org/opendev/base-jobs checkout: master commit: cc7f2d9c0de52f28b1ffb9804c457d94019d1eb4 trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: f4b6fd9a1705fe2891122bf2563527cfe56b40d1 playbooks: - path: trusted/project_0/opendev.org/opendev/base-jobs/playbooks/artifacts/promote.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/playbook_0/role_0/base-jobs link_target: trusted/project_0/opendev.org/opendev/base-jobs role_path: ansible/playbook_0/role_0/base-jobs/roles - checkout: master checkout_description: zuul branch link_name: ansible/playbook_0/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/playbook_0/role_1/zuul-jobs/roles post_review: true project: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul name: zuul/zuul short_name: zuul src_dir: src/opendev.org/zuul/zuul projects: opendev.org/zuul/zuul: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul checkout: master checkout_description: zuul branch commit: 30b20947a7c060e8d186b90631fc5fde2689ca41 name: zuul/zuul required: false short_name: zuul src_dir: src/opendev.org/zuul/zuul ref: refs/changes/74/945274/3 resources: {} tenant: zuul timeout: 1800 topic: process-governor voting: true