Linux 에서 cgroup 이 구성되었는지 확인하는 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 시스템에서 cgroup 이 구성되었는지 확인하는 방법을 배우게 됩니다. Cgroup 은 프로세스의 리소스 사용을 관리하고 제어하기 위한 강력한 커널 기능입니다.

cat /proc/cgroups를 사용하여 사용 가능한 cgroup 서브시스템을 나열하고, /sys/fs/cgroup에서 cgroup 마운트 포인트를 검사하며, cgroup 구성 파일 /etc/cgconfig.conf를 확인하여 이를 수행할 것입니다. 이러한 단계는 시스템의 cgroup 설정에 대한 포괄적인 개요를 제공합니다.

cat /proc/cgroups로 cgroup 목록 확인

이 단계에서는 Linux 시스템에서 사용 가능한 cgroup 서브시스템을 나열하는 방법을 배우게 됩니다. Cgroup (제어 그룹) 은 프로세스를 계층적 그룹으로 구성하고 리소스 사용량 (CPU, 메모리, 디스크 I/O, 네트워크 등) 을 제어할 수 있도록 하는 Linux 커널 기능입니다.

cgroup 을 특정 애플리케이션 또는 사용자에게 제한을 두거나 리소스를 할당하는 방법이라고 생각하십시오. 이는 특히 컨테이너 또는 클라우드 컴퓨팅과 같은 환경에서 시스템 리소스를 효과적으로 관리하는 데 중요합니다.

/proc 파일 시스템은 프로세스 및 기타 시스템 정보에 대한 정보를 제공하는 가상 파일 시스템입니다. /proc/cgroups 파일에는 커널에서 지원하는 cgroup 서브시스템에 대한 세부 정보가 포함되어 있습니다.

사용 가능한 cgroup 서브시스템을 보려면 cat 명령을 사용합니다. cat 명령은 파일의 내용을 표시하는 데 사용되는 기본적인 Linux 유틸리티입니다.

아직 열려 있지 않은 경우 터미널을 엽니다. 데스크탑 왼쪽의 Xfce 터미널 아이콘을 클릭하여 이 작업을 수행할 수 있습니다.

이제 터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

cat /proc/cgroups

다음과 유사한 출력이 표시되어야 합니다.

#subsys_name    hierarchy       num_cgroups     enabled
cpuset  0       1       1
cpu     0       1       1
cpuacct 0       1       1
blkio   0       1       1
memory  0       1       1
devices 0       1       1
freezer 0       1       1
net_cls 0       1       1
perf_event      0       1       1
net_prio        0       1       1
hugetlb 0       1       1
pids    0       1       1
rdma    0       1       1

출력을 자세히 살펴보겠습니다.

  • #subsys_name: cgroup 서브시스템의 이름 (예: cpu, memory, blkio). 각 서브시스템은 특정 유형의 리소스를 제어합니다.
  • hierarchy: 서브시스템이 연결된 계층의 ID 입니다. 이 출력에서 모든 서브시스템은 최신 Linux 배포판의 기본 통합 계층인 계층 0 에 연결됩니다.
  • num_cgroups: 현재 이 서브시스템의 계층 내에서 생성된 cgroup 의 수입니다.
  • enabled: 커널에서 서브시스템이 활성화 (1) 또는 비활성화 (0) 되었는지 여부를 나타냅니다.

이 출력은 시스템에서 어떤 리소스 제어 기능이 사용 가능하고 활성화되어 있는지 보여줍니다. 이러한 서브시스템을 이해하는 것은 cgroup 으로 리소스를 관리하는 방법을 배우는 첫 번째 단계입니다.

다음 단계로 진행하려면 계속을 클릭하십시오.

/sys/fs/cgroup 에서 cgroup 마운트 확인

이전 단계에서 사용 가능한 cgroup 서브시스템을 확인했습니다. 이제 이러한 cgroup 이 파일 시스템에서 어디에 마운트되어 있는지 살펴보겠습니다. Linux 에서 cgroup 은 일반적으로 /sys/fs/cgroup 아래에 마운트되는 가상 파일 시스템을 통해 노출됩니다.

/sys 파일 시스템은 커널 데이터 구조에 대한 인터페이스를 제공하는 또 다른 가상 파일 시스템입니다. 하드웨어 및 커널 기능을 구성하고 모니터링하는 데 자주 사용됩니다. /sys/fs/cgroup 디렉토리는 cgroup 파일 시스템의 표준 마운트 지점입니다.

이 디렉토리의 내용을 확인하고 cgroup 계층 구조가 어떻게 구성되어 있는지 이해하려면 ls 명령을 사용합니다. ls 명령은 디렉토리의 내용을 나열합니다.

아직 열려 있지 않은 경우 터미널을 엽니다.

터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

ls /sys/fs/cgroup

다음과 유사한 출력이 표시되어야 합니다.

cgroup.controllers  cgroup.max.depth  cgroup.max.descendants  cgroup.stat  cgroup.subtree_control  cgroup.threads  cpu  cpu.stat  cpu.pressure  cpuset  cpuset.cpus  cpuset.mems  cpuset.stat  io  io.stat  io.pressure  memory  memory.stat  memory.pressure  memory.swap.max  memory.high  memory.low  memory.min  memory.swap.current  memory.current  memory.events  memory.events.local  pids  pids.current  pids.max  systemd  user.slice

이 출력은 /sys/fs/cgroup 디렉토리 내의 디렉토리와 파일을 보여줍니다. 통합 cgroup 계층 구조 (cgroup v2) 를 사용하는 시스템에서는 cgroup.controllers, cgroup.stat과 같은 파일과 마운트된 컨트롤러 (예: cpu, memory, io, pids) 에 해당하는 디렉토리를 볼 수 있습니다.

이러한 각 디렉토리 (예: cpu, memory 등) 는 cgroup 컨트롤러를 나타냅니다. 이러한 디렉토리 내에서 해당 cgroup 내의 프로세스에 대한 리소스 제한을 구성하고 모니터링할 수 있는 파일을 찾을 수 있습니다.

예를 들어, cpu 디렉토리로 이동하면 CPU 리소스 제어와 관련된 파일을 찾을 수 있습니다.

ls를 사용하여 cpu 디렉토리 내부를 빠르게 살펴보겠습니다.

ls /sys/fs/cgroup/cpu

다음과 같은 출력이 표시될 수 있습니다.

cgroup.controllers  cgroup.events  cgroup.freeze  cgroup.max.depth  cgroup.max.descendants  cgroup.stat  cgroup.subtree_control  cgroup.threads  cpu.max  cpu.stat  cpu.weight  cpu.pressure

이러한 파일 (예: cpu.max, cpu.weight) 은 cgroup 에 대한 CPU 제한 및 우선 순위를 설정하는 데 사용됩니다.

/sys/fs/cgroup의 구조를 이해하는 것은 cgroup 과 직접 상호 작용하는 곳이므로 cgroup 작업을 하는 데 중요합니다.

다음 단계로 이동하려면 계속을 클릭하십시오.

cat /etc/cgconfig.conf로 cgroup 설정 확인

이전 단계에서 사용 가능한 cgroup 서브시스템과 파일 시스템에서 마운트되는 위치에 대해 배웠습니다. 이제 cgroup 의 일반적인 구성 파일인 /etc/cgconfig.conf를 살펴보겠습니다.

cgroup 은 /sys/fs/cgroup 파일 시스템을 통해 직접 관리할 수 있지만, /etc/cgconfig.conf와 같은 구성 파일은 시스템이 시작될 때 cgroup 계층 구조와 초기 설정을 정의하는 데 자주 사용됩니다. 이 파일은 cgroup 을 관리하기 위한 유틸리티를 제공하는 cgroup-tools 패키지의 일부입니다.

/etc/cgconfig.conf 파일은 cgconfig 서비스 (설치 및 활성화된 경우) 에서 읽어 부팅 시 cgroup 계층 구조를 설정하고 컨트롤러를 연결합니다. 이 파일을 검사하면 시스템에서 cgroup 이 어떻게 구성되어 있는지 알 수 있습니다.

이 구성 파일의 내용을 표시하기 위해 다시 cat 명령을 사용합니다.

아직 열려 있지 않은 경우 터미널을 엽니다.

터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

cat /etc/cgconfig.conf

다음과 유사한 출력이 표시되어야 합니다 (정확한 내용은 시스템 구성에 따라 다를 수 있습니다).

#
## A sample configuration file for cgconfig.
#
## The file contains two sections:
##   mount: defines the hierarchy and where to mount it.
##   group: defines the cgroup and its parameters.
#
## Example:
#
#mount {
##       cpuset = /cgroup/cpuset;
##       cpu = /cgroup/cpu;
##       cpuacct = /cgroup/cpuacct;
##       memory = /cgroup/memory;
##       devices = /cgroup/devices;
##       freezer = /cgroup/freezer;
##       net_cls = /cgroup/net_cls;
##       blkio = /cgroup/blkio;
#}
#
#group staff {
##       perm {
##               task {
##                       uid = staff;
##                       gid = staff;
##               }
##               admin {
##                       uid = staff;
##                       gid = staff;
##               }
##       }
##       cpu {
##               cpu.shares = 1000;
##       }
##       memory {
##               memory.limit_in_bytes = 256M;
##       }
#}
#
#group / {
##       cpu {
##               cpu.shares = 1024;
##       }
#}

이 예제 출력에서 주석 처리된 섹션 (#) 을 볼 수 있습니다. 이 섹션은 다양한 컨트롤러에 대한 마운트 지점을 정의하고 특정 리소스 제한 (예: cpu.shares, memory.limit_in_bytes) 이 있는 cgroup 그룹 (예: staff) 을 만드는 방법을 보여줍니다.

파일이 비어 있거나 주석만 포함되어 있는 경우, 이 특정 파일을 통해 cgroup 계층 구조와 초기 그룹이 구성되지 않음을 의미합니다. 최신 시스템에서는 systemd가 종종 /sys/fs/cgroup에 마운트된 통합 계층 구조를 사용하여 cgroup 관리를 처리합니다.

이 파일이 시스템에서 구성에 적극적으로 사용되지 않더라도, 이 파일의 존재와 목적을 아는 것은 cgroup 을 관리하는 방법을 이해하는 데 중요합니다.

이제 사용 가능한 cgroup 서브시스템, 파일 시스템의 마운트 지점 및 일반적인 구성 파일을 살펴보았습니다. 이를 통해 Linux 시스템에서 cgroup 이 어떻게 구성되고 잠재적으로 구성되는지에 대한 기본적인 이해를 얻을 수 있습니다.

이 랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 Linux 시스템에서 cgroup 이 구성되어 있는지 확인하는 방법을 배웠습니다. 먼저 cat /proc/cgroups 명령을 사용하여 커널에서 지원하는 사용 가능한 cgroup 서브시스템을 나열하고, subsys_name, hierarchy, num_cgroups, enabled와 같은 출력 열을 이해했습니다. 이 단계는 어떤 리소스 제어 메커니즘이 활성화되어 있는지에 대한 통찰력을 제공했습니다.

다음으로, cgroup 계층 구조가 마운트되는 표준 위치인 /sys/fs/cgroup 디렉토리를 검사하여 cgroup 마운트 지점을 확인했습니다. 마지막으로, /etc/cgconfig.conf 파일을 확인하여 영구적인 cgroup 구성이 정의되어 있는지 확인했습니다. 이 파일은 모든 시스템, 특히 cgroup 관리를 위해 systemd 에 의존하는 시스템에서는 존재하지 않거나 사용되지 않을 수 있습니다. 이러한 단계는 Linux 시스템에서 cgroup 의 존재 및 기본 구성을 확인하는 방법을 종합적으로 보여줍니다.