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가 1701
및 1138
인 프로세스를 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
파일에 있는 항목에 다음과 같은 표기법을 추가할 수 있습니다:
@
문자가 사용자의 앞에 있으면, 개별 사용자가 아니라 그룹을 의미합니다. 예를 들어@admins
은admins
그룹내에 있는 모든 사용자를 의미합니다.*
는 "전부"을 의미합니다. 예를 들어subsystem
필드 안의*
는 모든 서브시스템을 의미합니다.%
는 한줄 위의 항목과 동일한 항목을 의미합니다. 예를 들어서:@adminstaff devices /admingroup @labstaff % %