사용자 간에 리소스를 공정하게 공유하도록 cgroups v2 구성

사용자 간에 리소스를 공정하게 공유하도록 cgroups v2 구성

사용자의 시스템 리소스를 제한하는 방법이 있습니까? 여기에 설명된 대로 cgred 서비스와 /etc/cgconfig.conf 파일을 사용하여 사용자의 새로 생성된 각 프로세스를 지정된 cgroup에 강제로 적용하는 방법이 과거에 있었다는 것을 알고 있습니다.사용자 간에 리소스를 공평하게 공유하도록 cgroup을 어떻게 구성합니까?.

그러나 이 방법은 더 이상 사용되지 않는 것으로 보이며 내가 찾은 유일한 방법은 systemctl set-property 유틸리티를 사용하여 /sys/fs/cgroup/user.slice/user-${UID}.slice에서 cgroup 속성을 수정하는 것입니다. 문제는 systemd가 사용자가 로그인할 때만 이 cgroup을 생성하고, 사용자가 로그아웃하면 삭제된다는 것입니다. 로그아웃된 경우에도 사용자 리소스를 제한할 수 있는 방법을 찾고 있습니다.

답변1

나는 해결책을 발견했습니다.

  1. 각 사용자에 대한 슬라이스 프로필을 생성합니다.

    sudo mkdir /etc/systemd/system/user-<사용자 ID>. 일부분
    sudo 터치 /etc/systemd/system/user-<사용자 ID>.slice.d/override.conf

  2. 예를 들어 다음과 같이 리소스 제어를 구성합니다.

    echo "[Slice]
    Slice=user.slice
    MemoryHigh=2G
    CPUWeight=20" |  sudo tee /etc/systemd/system/user-<uid>.slice.d/override.conf
    
  1. 변경 승인:
    systemctl daemon-reload
    

적절한 사용자 슬라이스 cgroup 속성을 읽고 선택한 값과 일치하는지 확인하여 유효한지 확인할 수 있습니다. 예를 들면 다음과 같습니다.

cd /sys/fs/cgroup/user.slice/user-<uid>.slice
cat memory.low
cat cpu.weight

관련 정보