cgroups (control groups)은 프로세스 그룹의 리소스 (CPU, 메모리, 디스크 I / O 등)의 이용을 제한 · 격리하는 Linux 커널 의 기능. "process containers"라는 명칭으로 Rohit Seth 2006 년 9 월부터 개발을 시작 [1] , 2007 년 에 cgroups 및 명칭 변경되어 2008 년 1 월에 Linux 커널 2.6.24에 병합 된 [2] . 그 이후로 많은 기능과 컨트롤러가 추가되었다.

기능 편집 ]

설계 목표 중 하나는 nice처럼 하나의 프로세스를 컨트롤하는 것부터 OpenVZ 와 Linux-VServer 처럼 OS 레벨에서 가상화까지 다양한 사례를 통일 된 인터페이스에서 제공하는 있다.

cgroups는 다음과 같은 기능을 제공하고있다.

  • 자원 제한 : 그룹의 메모리 사용량을 제한 할 수있다. 이것은 파일 시스템 캐시를 포함 [3] . 원래의 논문은 Containers : Challenges with the memory resource controller and its performance라는 제목으로 Linux 심포지엄에서 발표 된 [4] .
  • 우선 순위 : 여러 그룹에 의해 큰 CPU [5] 와 디스크 I / O 처리량을 할당하고있다 [6] .
  • 기록 : 시스템이 얼마나 자원을 시험하고 있는지 측정한다. 결제 용 등 [7] .
  • 격리 : 다른 네임 스페이스에 그룹을 분리하고 다른 그룹의 프로세스 네트워크 연결 파일이 눈에 띄지 [2] .
  • 컨트롤 : 그룹을 멈추거나 검사 점하거나 재개 할 수있는 [7] .

이용법 편집 ]

cgroups은 동일한 기준으로 수집 된 프로세스의 집합이다. 그룹은 계층 구조가 각각의 그룹은 상위 그룹의 제한을 잇는다. 커널은 여러 컨트롤러 (서브 시스템)에 cgroup의 인터페이스를 통해 액세스 할 수있는 [2] . 예를 들어, 메모리 컨트롤러는 메모리의 사용을 제한하고 ns 컨트롤러는 프로세스를 별도의 네임 스페이스로 분리하고, cpuacct CPU의 사용량을 설명하는 등.

cgroups은 여러 가지 방법으로 사용 가능하다.

  • 가상 파일 시스템에 수동으로 cgroups에 액세스 할
  • libcgroup에서 제공되는 cgcreate, cgexec, cgclassify 등의 도구를 사용하여 작성 · 관리
  • 규칙 엔진 데몬을 사용하여 자동으로 특정 사용자 그룹을 이동 시키거나, 설정에 설명 된대로 cgroups 명령어를 내기도한다.
  • LXC [8] 와 libvirt 등 다른 cgroups를 이용하는 소프트웨어를 통해 간접적으로 이용한다.

네임 스페이스의 격리 편집 ]

기술적으로 cgroups의 일부는 아니지만 관련 기능으로 네임 스페이스의 격리가 다른 그룹의 자원을 그룹의 프로세스는 보이지 않게 할 수있다. 예를 들어, PID 네임 스페이스는 각 네임 스페이스마다 다른 프로세스 번호를 할당합니다. 마운트, UTS, 네트워크, SysV IPC 네임 스페이스 등이 이용 가능하다. 만약 "ns"cgroup이 탑재되어있는 경우 각각의 네임 스페이스는 cgroup 계층 구조에서 새로운 그룹을 만든다.

  • PID 네임 스페이스 - 프로세스 번호 (PID)를 할당 프로세스 목록과 상세 정보를 고립시킨다. 새 네임 스페이스는 형제 네임 스페이스에서 고립되어 있지만, 부모 네임 스페이스는 하위 네임 스페이스의 과정을 볼 수있다 [9] .
  • 네트워크 네임 스페이스 - 네트워크 인터페이스 (물리적 또는 가상), iptables 방화벽 규칙, 라우팅 테이블 등을 분리한다. 네트워크 네임 스페이스는 "veth"가상 이더넷 장치에 상호 연결할 수있다 [10] .
  • UTS 네임 스페이스 - 호스트 이름을 변경할 수
  • 마운트 네임 스페이스 - 다른 파일 시스템 레이아웃을 만들거나 특정 마운트 지점을 읽기 전용으로있다 [11] .
  • IPC 네임 스페이스 - System V 프로세스 간 통신을 격리 할 것.
  • 사용자 네임 스페이스

네임 스페이스는 unshare ()와 clone ()에서 플래그를 설정하여 만들 수있다 [12] .

관련 항목 편집 ]

참조 편집 ]

  1. Jonathan Corbet ( 2007 년 5 월 29 일 ). "Process containers" . LWN.net
  2. C Jonathan Corbet ( 2007 년 10 월 29 일 ). "Notes from a container" . LWN.net
  3. Jonathan Corbet ( 2007 년 7 월 31 일 ). "Controlling memory use in containers" . LWN
  4. Balbir Singh, Vaidynathan Srinivasan ( 2007 년 7 월 ). Ottawa Linux Symposium. http://www.kernel.org/doc/ols/2007/ols2007v2-pages-209-222.pdf
  5. Jonathan Corbet ( 2007 년 10 월 23 일 ). "Kernel space : Fair user scheduling for Linux" . Network World
  6. Kamkamezawa Hiroyu (2008-11-19). "Cgroup and Memory Resource Controller" (PDF presentation slides) Japan Linux Symposium
  7. B Dave Hansen. "Resource Management" (PDF presentation slides) Linux Foundation
  8. Matt Helsley ( 2009 년 2 월 3 일 ). "LXC : Linux container tools" . IBM developerWorks
  9. Pavel Emelyanov, Kir Kolyshkin ( 2007 년 11 월 19 일 ). "PID namespaces in the 2.6.24 kernel" . LWN.net
  10. Jonathan Corbet ( 2007 년 1 월 30 일 ). "Network namespaces" . LWN.net
  11. Serge E. Hallyn, Ram Pai ( 2007 년 9 월 17 일 ). "Applying mount namespaces" . IBM developerWorks
  12. Janak Desai ( 2006 년 1 월 11 일 ). " Linux kernel documentation on unshare " 2011 년 10 월 21 일 보기.

외부 링크 편집 ]



출처 - http://ja.wikipedia.org/wiki/Cgroups




'System > Linux' 카테고리의 다른 글

gnome - gconf  (0) 2014.03.07
linux - saslpasswd2  (0) 2014.03.03
linux - rc.local  (0) 2014.03.02
linux - sudo  (0) 2014.02.23
linux - /var  (0) 2014.02.23
Posted by linuxism
,