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