25장. systemd에서 제어 그룹 버전 1 사용
systemd
시스템 및 서비스 관리자와 제공하는 유틸리티를 사용하여 cgroup
을 관리할 수 있습니다. 이 방법은 cgroups
관리의 기본 방법입니다.
25.1. 제어 그룹 버전 1에서 systemd 역할
RHEL 8은 cgroup
계층 구조의 시스템에 systemd
장치 트리를 바인딩하여 리소스 관리 설정을 프로세스 수준에서 애플리케이션 수준으로 이동합니다. 따라서 systemctl
명령을 사용하거나 systemd
유닛 파일을 수정하여 시스템 리소스를 관리할 수 있습니다.
기본적으로 systemd
시스템 및 서비스 관리자는 슬라이스
, 범위
및 서비스
유닛을 사용하여 제어 그룹에서 프로세스를 구성하고 구조화합니다. systemctl
명령을 사용하면 사용자 지정 슬라이스
를 생성하여 이 구조를 추가로 수정할 수 있습니다. 또한 systemd
는 중요한 커널 리소스 컨트롤러의 계층 구조를 /sys/fs/cgroup/
디렉터리에 자동으로 마운트합니다.
리소스 제어에는 세 가지 systemd
장치 유형이 사용됩니다.
service - 장치 구성 파일에 따라
systemd
가 시작된 프로세스 또는 프로세스 그룹입니다. 서비스는 지정된 프로세스를 캡슐화하여 하나의 집합으로 시작하고 중지할 수 있도록 합니다. 서비스의 이름은 다음과 같은 방식으로 지정됩니다.<name>.service
범위 - 외부에서 생성된 프로세스 그룹입니다. 범위는
fork()
함수를 통해 임의의 프로세스에 의해 시작 및 중지된 다음 런타임 시systemd
에 의해 등록된 프로세스를 캡슐화합니다. 예를 들어 사용자 세션, 컨테이너 및 가상 시스템은 범위로 처리됩니다. 범위는 다음과 같이 이름이 지정됩니다.<name>.scope
슬라이스 - 계층적으로 구성된 유닛 그룹입니다. 슬라이스에서는 범위 및 서비스가 배치되는 계층 구조를 구성합니다. 실제 프로세스는 범위 또는 서비스에 포함되어 있습니다. 슬라이스 유닛의 모든 이름은 계층 구조의 위치에 대한 경로에 해당합니다. 대시("-") 문자는
-.slice
루트 슬라이스에서 슬라이스에 대한 경로 구성 요소의 구분 기호 역할을 합니다. 다음 예에서 다음을 수행합니다.<parent-name>.slice
parent-name.slice
는parent.slice
의 하위 슬라이스로,-.slice
루트 슬라이스의 하위 슬라이스입니다.parent-name.slice
는parent-name-name2.slice
라는 고유한 하위 슬라이스를 가질 수 있습니다.
서비스
, 범위
및 슬라이스
유닛은 제어 그룹 계층 구조의 오브젝트에 직접 매핑됩니다. 이러한 유닛이 활성화되면 유닛 이름에서 빌드된 그룹 경로를 제어하기 위해 직접 매핑됩니다.
다음은 제어 그룹 계층 구조의 축약된 예입니다.
Control group /: -.slice ├─user.slice │ ├─user-42.slice │ │ ├─session-c1.scope │ │ │ ├─ 967 gdm-session-worker [pam/gdm-launch-environment] │ │ │ ├─1035 /usr/libexec/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart │ │ │ ├─1054 /usr/libexec/Xorg vt1 -displayfd 3 -auth /run/user/42/gdm/Xauthority -background none -noreset -keeptty -verbose 3 │ │ │ ├─1212 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart │ │ │ ├─1369 /usr/bin/gnome-shell │ │ │ ├─1732 ibus-daemon --xim --panel disable │ │ │ ├─1752 /usr/libexec/ibus-dconf │ │ │ ├─1762 /usr/libexec/ibus-x11 --kill-daemon │ │ │ ├─1912 /usr/libexec/gsd-xsettings │ │ │ ├─1917 /usr/libexec/gsd-a11y-settings │ │ │ ├─1920 /usr/libexec/gsd-clipboard … ├─init.scope │ └─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 18 └─system.slice ├─rngd.service │ └─800 /sbin/rngd -f ├─systemd-udevd.service │ └─659 /usr/lib/systemd/systemd-udevd ├─chronyd.service │ └─823 /usr/sbin/chronyd ├─auditd.service │ ├─761 /sbin/auditd │ └─763 /usr/sbin/sedispatch ├─accounts-daemon.service │ └─876 /usr/libexec/accounts-daemon ├─example.service │ ├─ 929 /bin/bash /home/jdoe/example.sh │ └─4902 sleep 1 …
위의 예제에서는 서비스와 범위에 프로세스가 포함되어 있으며 자체 프로세스가 포함되지 않은 슬라이스에 배치됩니다.
추가 리소스
- 커널 리소스 컨트롤러란
-
systemd.resource-control(5)
,cgroups(7)
,fork
(),fork(2)
매뉴얼 페이지