Product SiteDocumentation Site

Capitolo 2. Utilizzo dei Control Groups

2.1. Il servizio cgconfig
2.1.1. Il file /etc/cgconfig.conf
2.2. Creazione di una gerarchia e collegamento dei sottosistemi
2.3. Collegare e scollegare i sottosistemi da una gerarchia esistente
2.4. Smontare una gerarchia
2.5. Creare control group
2.6. Rimuovere Control Group
2.7. Impostare parametri
2.8. Spostare un processo su di un Control Group
2.8.1. Il demone cgred
2.9. Avviare un proceso in un Control Group
2.9.1. Avviare un servizio in un Control Group
2.9.2. Comportamento di processo nel Control Group di Root
2.10. Generare il file /etc/gconfig.conf
2.10.1. Parametri di blacklist
2.10.2. Parametri di whitelist
2.11. Acquisire informazioni sui Control Group
2.11.1. Ricerca di un processo
2.11.2. Ricerca di un sottosistema
2.11.3. Ricerca di una gerarchia
2.11.4. Ricerca di un Control Group
2.11.5. Visualizzare i parametri di un Control Group
2.12. Scaricare i Control Groups
2.13. Risorse aggiuntive
Il modo più semplice per lavorare con cgroup è di installare il pacchetto libcgroup-tools, il quale contiene un numero di utilità da linea di comando, relative al cgroup ed alle pagine man correlate. Sarà possibile montare gerarchie ed impostare i parametri di cgroup (in modo non persistente), tramite i comandi di shell e le utilità disponibili, su qualsiasi sistema. Comunque, l'uso delle utilità fornite da libcgroup-tools semplifica il processo estendendone le capacità. Perciò, questa guida si concentra sui comandi di libcgroup-tools. In molti casi sono stati inclusi i comandi di shell equivalenti per una descrizione del meccanismo sottostante. È consigliato l'uso dei comandi di libcgroup-tools quando possibile.

Installare il pacchetto libcgroup-tools

Per utilizzare cgroup, assicurarsi prima che il pacchetto libcgroup-tools sia stato installato sul sistema eseguendo come utente root:
~]# yum install libcgroup-tools

2.1. Il servizio cgconfig

Il servizio cgconfig installato con il pacchetto libcgroup-tools, fornisce un modo conveniente per creare gerarchie, allegare alle stesse i sottosistemi e gestire i cgroup al loro interno. Si raccomanda di usare cgconfig per gestire gerarchie e cgroup nel sistema.
Il servizio cgconfig non è avviato, per impostazione predefinita, su Fedora 16. All'avvio del servizio con chkconfig, esso legge il file di configurazione di cgroup — /etc/cgconfig.conf. Quindi i cgroup vengono ricreati ad ogni sessione diventando così persistenti. A seconda del contenuto del file di configurazione, cgconfig è in grado di creare gerarchie, montare i file system necessari, creare cgroup ed impostare i parametri di sottosistemi per ogni gruppo.
Il file predefinito /etc/cgconfig.conf installato con il pacchetto libcgroup-tools, crea e monta una gerarchia individuale per ogni sottosistema, e collega i sottosistemi alle sudddette gerarchie.
Se si interrompe il servizio cgconfig (con il comando systemctl stop cgconfig.service ), allora si smontano tutte le gerarchie montate.

2.1.1. Il file /etc/cgconfig.conf

Il file /etc/cgconfig.conf contiene due voci principali — mount e group. Le voci di mount creano e montano le gerarchie come file system virtuali, collegando i sottosistemi a queste gerarchie. Per definire le voci di mount usare la seguente sintassi:
mount {
    <controller> = <path>;
    …
}
Per un esempio di utilizzo consultare l'Esempio 2.1, «Creare una voce di mount».
Esempio 2.1. Creare una voce di mount
Il seguente esempio crea una gerarchia per il sottosistema cpuset:
mount {
    cpuset = /cgroup/red;
}
l'equivalente dei comandi di shell:
~]# mkdir /cgroup/red
~]# mount -t cgroup -o cpuset red /cgroup/red

Le voci di group creano i cgroup ed impostano i parametri di sottosistema. Esse vengono definite usando la seguente sintassi:
group <nome> {
    [<permessi>]
    <controller> {
        <nome param> = <valore param>;
        …
    }
    …
}
Da notare che la sezione permessi è facoltativa. Per definire i permessi per una voce del gruppo, usare la seguente sintassi:
perm {
    task {
        uid = <task user>;
        gid = <task group>;
    }
    admin {
       uid = <nome admin>;
       gid = <gruppo admin>;
    }
}
Per un esempio sull'uso consultare l'Esempio 2.2, «Creare una voce di group»:
Esempio 2.2. Creare una voce di group
Il seguente esempio crea un cgroup per i demoni SQL, con permessi per gli utenti nel gruppo sqladmin, per aggiungere task al gruppo cgroup e l'utente root per modificare i parametri di sottosistema:
group daemons/sql {
    perm {
        task {
            uid = root;
            gid = sqladmin;
        } admin {
            uid = root;
            gid = root;
        }
    } cpu {
        cpu.shares = 100;
    }
}
Quando combinato con l'esempio della voce di mount nell'Esempio 2.1, «Creare una voce di mount», i comandi di shell equivalenti sono:
~]# mkdir -p /cgroup/cpu/daemons/sql
~]# chown root:root /cgroup/cpu/daemons/sql/*
~]# chown root:sqladmin /cgroup/cpu/daemons/sql/tasks
~]# echo 100 > /cgroup/cpu/daemons/sql/cpu.shares

Riavviare il servizio cgconfig per rendere effettivi i cambiamenti.

È necessario riavviare il servizio cgconfig per rendere effettive le modifiche implementate in /etc/cgconfig.conf:
~]# systemctl restart cgconfig.service 
Durante l'installazione del pacchetto libcgroup-tools, un file di configurazione campione viene scritto su /etc/cgconfig.conf. I caratteri cancelletto (#), all'inizio di ogni riga commentano la riga stessa e la rendono invisibile al servizio cgconfig.