[Linux] Cgroup과 Namespace 정리

이주원·2023년 6월 8일
0

Linux

목록 보기
1/1

Cgroup (Control group)

Cgroup은 프로세스가 사용하는 시스템 리소스의 정보를 수집, 제한, 격리시키는 리눅스 커널의 기능이다.

제한 가능한 자원에는

  • CPU : 스케쥴러를 사용해 cgroup에 속한 프로세스의 CPU 사용 시간 제어
  • 메모리 : cgroup에 속한 프로세스의 메모리 사용량 제어
  • freezer : cgroup의 작업을 일시중지하거나 시작
  • blkio(block io) : cgroup의 Block/IO(SSD, HDD 등)에 대한 제한을 설정
  • net_cls : 네트워크 패킷을 classid로 태그해 리눅스 트래픽 컨트롤러(tc)가 특정 cgroup에서 발생하는 패킷을 식별할 수 있게 함
  • cpuset : 개별 CPU를 cgroup에 바인딩 하는 서브시스템
  • cpuacct : cgroup이 사용한 CPU 리소스에 대한 보고서를 생성
  • devices : cgroup 작업 단위로 장치에 대한 액세스를 허용하거나 거부

등이 있다.

Namespace

Namespace는 프로세스별 별도의 커널 자원을 분할하는 리눅스 커널의 기능이다. 프로세스 간에 격리된 환경을 제공하여, 각각의 프로세스가 자신만의 독립적인 시스템 리소스를 가지고 있는 것처럼 보이게 한다. 이를 통해 한 시스템에서 여러 개의 독립적인 가상 시스템이 동작할 수 있다.

Namespace의 종류에는

  • Process ID(pid) : pid 정보를 격리한다. Namespace외 다른 프로세스의 접근이 불가능하다.
  • Network(net) : 네트워크 디바이스, IP 주소, 포트, 라우팅 테이블 등 네트워크 리소스를 격리하고 가상 네트워크 장치를 할당한다.
  • Filesystem/mount : 프로세스 별로 마운트되는 파일시스템을 격리한다.
  • inter-proc comms(ipc) : 다른 프로세스의 접근이나 제어를 방지한다.
  • UTS : 호스트명, 도메인명을 격리한다.
  • User : 프로세스 별로 UID, GID 정보를 격리한다.

등이 있다.

Cgroup과의 차이점은 Cgroup이 특정 프로세스가 쓸 수 있는 리소스의 사용량을 제한한다면, Namespace는 특정 프로세스가 볼 수 있는 범위를 제한한다.

0개의 댓글