Product SiteDocumentation Site

2.8. Spostare un processo su di un Control Group

È possibile spostare un processo in un cgroup, eseguendo il comando cgclassify:
~]# cgclassify -g cpu,memory:group1 1701
La sintassi per cgclassify è:
cgclassify -g sottosistemi:percorso_a_cgroup pidlist
dove:
È possibile anche aggiungere l'opzione -- sticky prima del pid per mantenere ogni processo figlio nello stesso cgroup. Se tale opzione non viene impostata ed il demone cgred è in esecuzione, i processi figlio verranno assegnati ai cgroup in base alle impostazioni presenti in /etc/cgrules.conf. Il processo tuttavia resterà nel cgroup nel quale è stato avviato.
Usando cgclassify è possibile spostare simultaneamente numerosi processi. Per esempio questo comando sposta i processi con PID 1701 e 1138 nel cgroup group1/:
~]# cgclassify -g cpu,memory:group1 1701 1138
Da notare che i PID da spostare sono separati da spazi ed i gruppi specificati devono essere in gerarchie diverse.

Metodo alternativo

Per spostare un processo in un cgroup scrivere il rispettivo (PID) sul file tasks del cgroup. Per esempio per spostare un processo con PID 1701 in un cgroup su /cgroup/lab1/group1/:
~]# echo 1701 > /cgroup/lab1/group1/tasks

2.8.1. Il demone cgred

Cgred è un demone usato per spostare i task all'interno dei cgroup in base ai parametri impostati nel file /etc/cgrules.conf. Le voci nel file /etc/cgrules.conf possono avere una delle seguenti forme:
  • utente gerarchie control_group
  • utente:comando gerarchie control_group
Per esempio:
maria			devices		/usergroup/staff
Questa voce specifica che qualsiasi processo appartenente all'utente maria è in grado di accedere al sottosistema devices in base ai parametri specificati nel cgroup /usergroup/staff. Per associare comandi specifici con cgroup particolari aggiungere il parametro comando nel modo seguente:
maria:ftp		devices		/usergroup/staff/ftp
La voce ora specifica che quando un utente chiamato maria utilizza il comando ftp, il processo viene spostato automaticamente sul cgroup /usergroup/staff/ftp nella gerarchia che contiene il sottosistema devices. Da notare tuttavia che il demone sposta il processo sul cgroup solo dopo aver soddisfatto la condizione corretta. Per questo motivo il processo ftp potrebbe essere eseguito per un breve periodo di tempo nel gruppo incorretto. Altresì se il processo genera processi figlio nel gruppo incorretto, i suddetti processi non potranno essere spostati.
Le voci presenti all'interno del file /etc/cgrules.conf possono includere quanto di seguito riportato:
  • @ — quando prefisso a utente, indica un gruppo invece di un utente singolo. Per esempio, @admins sono tutti utenti nel gruppo admins.
  • * — rappresenta "tutti". Per esempio, * nel campo subsystem rappresenta tutti i sottosistemi.
  • % — rappresenta un oggetto uguale a quello riportato nella riga superiore. Per esempio:
    @adminstaff		devices		/admingroup
    @labstaff		%		%