Gruppi di controllo (strong>cgroups ) consentono di allocare risorse informatiche a processi o attività specifici. È possibile assegnare un insieme di CPU e memoria a un gruppo specifico di attività o anche a un utente specifico. Il post qui descrive in dettaglio i passaggi per allocare una risorsa di memoria definita per un uso specifico. Ulimit non sarà in grado di raggiungere questo obiettivo poiché ulimit limita il consumo di memoria dell'utente per processo. La migliore opzione possibile è usare cgroups. Con cgroups gli utenti possono essere limitati non solo alle risorse di memoria ma anche alla CPU/IO. Vediamo un esempio per limitare la memoria utilizzata dall'utente "john" a 100 MB.
Limitazione della memoria per un utente specifico
1. Modifica il file di configurazione di cgroups /etc/cgconfig.conf e aggiungi le righe seguenti
# vi /etc/cgconfig.conf group memlimit { memory { memory.limit_in_bytes = 104857600; #### limit memory to 100MB } }
Sopra una parte di codice verrà creato un cgroup chiamato memlimit dove il limite è 100 MB .
2. Ora modifica un altro file /etc/cgrules.conf e aggiungi sotto la riga:
# vi /etc/cgrules.conf john memory memlimit
Questo dirà a cgroups che l'utente john sarà aggiunto a memlimit cgroup e sarà in grado di prendere solo 100 MB dal sistema.
3. Una volta terminata la modifica dei file di configurazione, riavviare i servizi cgred e cgconfig .
# service cgred restart # service cgconfig restartservizio cgconfig (configurazione gruppo di controllo) – utilizzato per creare cgroup e gestire sottosistemi
servizio cgred (control group rules engine daemon) – utilizzato per spostare le attività in cgroup in base ai parametri impostati nel file /etc/cgrules.conf.
4. Abilitare entrambi i servizi per l'avvio all'avvio del sistema. Con questo ci assicuriamo che i file di configurazione /etc/cgconfig.conf e /etc/cgrules.conf vengano letti all'avvio e vengano creati i cgroup.
# chkconfig cgred on # chkconfig cgconfig on