La documentazione del kernel fornisce una copertura generale dei cgroup con esempi.
Il cgroups-bin
pacchetto (che dipende da libcgroup1
) già fornito dalla distribuzione dovrebbe andare bene.
La configurazione viene eseguita modificando i seguenti due file:
/etc/cgconfig.conf
Utilizzato da libcgroup per definire i gruppi di controllo, i loro parametri e punti di montaggio.
/etc/cgrules.conf
Usato da libcgroup per definire i gruppi di controllo a cui appartiene il processo.
Questi file di configurazione contengono già degli esempi, quindi prova ad adattarli alle tue esigenze. Le pagine man coprono abbastanza bene la loro configurazione.
Successivamente, avvia il gestore del carico di lavoro e il demone delle regole:
service cgconfig restart
service cgred restart
Il gestore del carico di lavoro (cgconfig) è responsabile per l'allocazione delle risorse.
Aggiunta di un nuovo processo al gestore:
cgexec [-g <controllers>:<path>] command [args]
Aggiunta di un processo già in esecuzione al gestore:
cgclassify [-g <controllers>:<path>] <pidlist>
O automaticamente sul file cgrules.conf e sul demone delle regole del CGroup (cgred), che forza ogni processo appena generato nel gruppo specificato.
Esempio /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;
}
Esempio /etc/cgrules.conf:
alice cpu group1/
bob cpu group2/
Ciò condividerà le risorse della CPU circa 50-50 tra l'utente "alice" e "bob"