33.4. cgroups의 systemd 계층 구조 개요
백엔드에서 systemd
시스템 및 서비스 관리자는 슬라이스
, 범위
및 서비스
단위를 사용하여 제어 그룹의 프로세스를 구성하고 구성합니다. 사용자 지정 유닛 파일을 생성하거나 systemctl
명령을 사용하여 이 계층을 추가로 수정할 수 있습니다. 또한 systemd
는 /sys/fs/cgroup/
디렉터리에 중요한 커널 리소스 컨트롤러에 대한 계층을 자동으로 마운트합니다.
리소스 제어의 경우 다음 세 가지 systemd
장치 유형을 사용할 수 있습니다.
- Service
systemd
가 장치 구성 파일에 따라 시작된 프로세스 또는 프로세스 그룹입니다.서비스는 지정된 프로세스를 캡슐화하여 하나의 세트로 시작 및 중지할 수 있습니다. 서비스의 이름은 다음과 같이 지정됩니다.
<name>.service
- 범위
외부에서 생성된 프로세스 그룹입니다. 범위는
fork()
함수를 통해 임의의 프로세스에서 시작 및 중지된 프로세스를 캡슐화한 다음 런타임 시systemd
에 의해 등록됩니다. 예를 들어 사용자 세션, 컨테이너 및 가상 머신은 범위로 처리됩니다. 범위는 다음과 같이 이름이 지정됩니다.<name>.scope
- slice
계층적으로 구성된 단위 그룹입니다. 슬라이스는 범위가 배치되는 계층 구조를 구성합니다.
실제 프로세스는 범위 또는 서비스에 포함됩니다. 슬라이스 단위의 모든 이름은 계층 구조의 위치 경로에 해당합니다.
대시(
-
) 문자는-.slice
루트 슬라이스에서 슬라이스에 대한 경로 구성 요소의 구분 기호 역할을 합니다. 다음 예에서:<parent-name>.slice
parent-name.slice
는-.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 …
위의 예제에서는 서비스 및 범위에 프로세스가 포함되어 있지 않은 슬라이스에 배치되어 있음을 보여줍니다.
추가 리소스
- Red Hat Enterprise Linux에서 systemctl을 사용하여 시스템 서비스 관리
- 커널 리소스 컨트롤러란?
-
systemd.resource-control(5)
,systemd.exec(5)
,cgroups(7)
,fork()
,fork(2)
매뉴얼 페이지 - cgroups 이해