cgroups에는 sched_user 또는 이와 유사한 커널 구성 옵션이있었습니다. 이를 통해 모든 사용자는 시스템 리소스를 공정하게 공유 할 수있었습니다. 2.6.35에서는 사용할 수 없습니다. 모든 사용자 (루트 포함)간에 io / cpu / 메모리 리소스를 자동으로 공유하도록 시스템을 구성 할 수있는 방법이 있습니까? 나는 전에 cgroup을 설정 한 적이 없다. 그렇게하기위한 좋은 튜토리얼이 있는가? 대단히 감사합니다.
답변
커널 문서 는 예제와 함께 cgroup에 대한 일반적인 내용을 제공합니다.
cgroups-bin
(패키지에 따라 libcgroup1
이미 분포에 의해 제공)은 잘해야한다.
다음 두 파일을 편집하여 구성합니다.
/etc/cgconfig.conf
제어 그룹, 해당 매개 변수 및 마운트 지점을 정의하기 위해 libcgroup에서 사용합니다.
/etc/cgrules.conf
프로세스가 속하는 제어 그룹을 정의하기 위해 libcgroup에서 사용합니다.
이러한 구성 파일에는 이미 예제가 있으므로 요구 사항에 맞게 조정하십시오. 매뉴얼 페이지는 그들의 구성을 잘 다루고 있습니다.
그런 다음 워크로드 관리자 및 규칙 디먼을 시작하십시오.
service cgconfig restart
service cgred restart
워크로드 관리자 (cgconfig)는 자원을 할당합니다.
관리자에게 새로운 프로세스 추가하기 :
cgexec [-g <controllers>:<path>] command [args]
이미 실행중인 프로세스를 관리자에 추가 :
cgclassify [-g <controllers>:<path>] <pidlist>
또는 cgrules.conf 파일과 CGroup Rules Daemon (cgred)을 자동으로 덮어서 새로 생성 된 모든 프로세스를 지정된 그룹으로 강제합니다.
예 /etc/cgconfig.conf :
group group1 {
perm {
task {
uid = alice;
gid = alice;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.shares = 500;
}
}
group group2 {
perm {
task {
uid = bob;
gid = bob;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.shares = 500;
}
}
mount {
cpu = /dev/cgroups/cpu;
cpuacct = /dev/cgroups/cpuacct;
}
예 /etc/cgrules.conf :
alice cpu group1/
bob cpu group2/
이것은 사용자 ‘alice’와 ‘bob’사이의 CPU 리소스를 약 50-50으로 공유합니다.