Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.8. 프로세스를 컨트롤 그룹으로 옮기기

cgclassify 명령을 실행하여 프로세스를 cgroup으로 옮길 수 있습니다:
~]# cgclassify -g cpu,memory:group1 1701
cgclassify의 구문은 cgclassify -g subsystems:path_to_cgroup pidlist입니다. 여기서:
  • subsystems은 콤마로 구분된 서브시스템 목록이거나 또는 사용 가능한 모든 서브시스템과 연결된 계층에 있는 프로세스를 시작하는 *입니다. 동일한 이름의 cgroup이 여러 계층에 존재할 경우, -g 옵션을 지정하면 각 그룹에 프로세스가 생성되는 점에 유의하십시오. 여기서 지정된 서브시스템의 각 계층에 cgroup이 있는지 확인합니다.
  • path_to_cgroup은 계층 구조내에서 cgroup으로의 경로입니다.
  • pidlist프로세스 식별자 (process identifier) (PID)의 공백으로 구분된 목록입니다.
--sticky 옵션을 pid 앞에 추가하여 모든 자식 프로세스를 동일한 cgroup에 속하게 할 수 있습니다. 이 옵션을 설정하지 않고 cgred 데몬이 실행 중인 경우, 자식 프로세스는 /etc/cgrules.conf에 있는 설정에 따라 cgroup을 할당하게 됩니다. 하지만, 프로세스 자체는 시작한 cgroup에 남아있게 됩니다.
cgclassify를 사용하면 동시에 여러 프로세스를 옮길 수 있습니다. 예를 들어, 이 명령은 PID가 17011138인 프로세스를 cgroup group1/로 옮깁니다:
~]# cgclassify -g cpu,memory:group1 1701 1138
옮겨야 할 PID가 공백으로 구분되어 있으며 지정된 그룹은 다른 계층에 있어야 함에 유의하십시오.

다른 방법

프로세스를 cgroup으로 옮기기 위해서는 PID를 cgroup의 tasks 파일에 기록합니다. 예를 들어, PID 1701로 프로세스를 /cgroup/lab1/group1/에 있는 cgroup으로 옮기려면 다음을 실행합니다:
~]# echo 1701 > /cgroup/lab1/group1/tasks

2.8.1. cgred 데몬

Cgred/etc/cgrules.conf 파일에 설정된 매개변수에 따라 작업을 cgroup으로 옮기는 데몬입니다. /etc/cgrules.conf 파일의 항목은 다음 두 형태중 하나입니다:
  • user hierarchies control_group
  • user:command hierarchies control_group
예를 들어:
maria			devices		/usergroup/staff
이 항목은 maria라는 사용자의 프로세스를 /usergroup/staff cgroup에 지정된 매개 변수에 따라 devices 서브시스템을 액세스하도록 지정합니다. 특정 명령을 특정 cgroup에 연결시키려면, 다음과 같이 command 매개 변수를 추가합니다:
maria:ftp		devices		/usergroup/staff/ftp
이 항목은 maria라는 사용자가 ftp 명령을 사용할 때는 devices 서브시스템이 들어있는 계층의 /usergroup/staff/ftp cgroup에 프로세스가 자동으로 이동하도록 지정합니다. 하지만 이 데몬은 해당 조건이 충족될 경우에만 프로세스를 cgroup로 이동한다는 점에 유의하십시오. 따라서 ftp 프로세스가 잘못된 그룹에서 짧은 시간 동안 실행될 수 있습니다. 또한 프로세스가 잘못된 그룹에 있는 동안 자식 프로세스가 발생한 경우, 이는 이동되지 않을 수 있습니다.
/etc/cgrules.conf 파일에 있는 항목에 다음과 같은 표기법을 추가할 수 있습니다:
  • @문자가 사용자의 앞에 있으면, 개별 사용자가 아니라 그룹을 의미합니다. 예를 들어 @adminsadmins 그룹내에 있는 모든 사용자를 의미합니다.
  • *는 "전부"을 의미합니다. 예를 들어 subsystem 필드 안의 *는 모든 서브시스템을 의미합니다.
  • %는 한줄 위의 항목과 동일한 항목을 의미합니다. 예를 들어서:
    @adminstaff		devices		/admingroup
    @labstaff		%		%