다른 cgroupv2에서 분기된 프로세스를 자동으로 이동합니다.

다른 cgroupv2에서 분기된 프로세스를 자동으로 이동합니다.

나는 약 3년 동안 cgroupv1에서 이것을 사용하여 다른 가상 호스트에 대한 웹 요청을 서비스할 때 생성된 하위 프로세스를 자동으로 분류했습니다 apache2-mpm-itk. 그것은 잘 작동했습니다. 특정 가상 호스트가 CPU/RAM을 너무 많이 차지하기 시작하면 굉장한 문제가 발생합니다. 처리되고 나머지는 무시됩니다.cgrulesengdapache2-mpm-itk

저는 현재 새로운 Debian 11 서버를 준비하고 있는데 이제 cgroup v2를 사용해야 한다는 것을 알게 되었습니다. 그래서 저는 저의 리소스 제어 솔루션을 새로운 세계로 가져오려고 합니다.

해당 사용자의 리소스 제어를 사용하여 예제를 생성하면 에서 확인한 것처럼 /etc/systemd/system/user-UID.slice.d/override.conf포크된 프로세스에서는 작동하지 않습니다 . 대신, 상위와 모든 하위는 여전히 동일한 apache2.service 슬라이스에 속합니다.cgrulesengdsystemd-cgls

시스템에서 생성된 프로세스가 아닌 다른 cgroup에 있는 프로세스의 하위 프로세스를 자동으로 분류하는 방법이 있습니까?

답변1

메일링 리스트에 다음 질문을 게시했습니다 systemd-devel.

https://lists.freedesktop.org/archives/systemd-devel/2022-January/047257.html

Benjamin Berg의 답변은 다음과 같습니다.

https://lists.freedesktop.org/archives/systemd-devel/2022-January/047260.html

Benjamin의 답변은 매우 도움이 되었습니다. 다음은 두 가지 발췌문입니다.

systemd will not help you with managing the cgroup sub-hierarchy
underneath the daemon. I suppose the most generic solution would be
something like cgrulesengd for cgroup v2. No idea if something like
that exists.

그리고:

Managing the cgroup hierarchy is quite simple in principle (mkdir and
then a write to cgroup.procs). Or, even better by using
CLONE_INTO_CGROUP when creating the processes. It is not that hard to
write small daemon that does this.

편집하다:

cgconfigparser 및 cgrulesengd가 cgroupv2를 지원하도록 업데이트된 것으로 보입니다.

이 글을 쓰는 시점에서는 소스에서 빌드해야 합니다.

패키지는 다음 위치에서 다운로드할 수 있습니다.

https://github.com/libcgroup/libcgroup/releases/tag/v2.0

그런 다음 다음 단계를 따르세요. 예를 들면 다음과 같습니다.

./configure
make

cgconfig.conf의 컨트롤러 매개변수 이름은 다를 수 있으므로 새로운 환경에서는 cgroupv2 매개변수 이름을 사용해야 합니다.

관련 정보