0

Introduzione a Cgroups, Linux Control Group

Cgroups è presente dal kernel Linux ufficiale 2.6.24 (fine 2007), ma ancora non è molto conosciuto o usato (almeno per quello che so). /> In questo articolo vi darò una panoramica di questo potente strumento Linux per controllare la quantità di CPU, memoria, I/O disco o I/O di rete che ogni processo o utente può utilizzare nel vostro server.

Quindi, in breve class="pullquote"> cgroups è una funzionalità che consente di limitare, registrare ed isolare l’utilizzo delle risorse (CPU, memoria, disco I/O, ecc) di gruppi di processi. /> Vediamo come. id="more-3121"> /> />

Teoria

Un control group è un insieme di processi che sono legati dagli stessi criteri. Questi gruppi possono essere gerarchici, in cui ogni gruppo eredita dei limiti dal proprio gruppo di appartenenza. Il kernel fornisce l’accesso a più controllori (sottosistemi) attraverso l’interfaccia di cgroups.

L’infrastruttura di cgroups fornisce solo le funzionalità di raggruppamento dei processi, mentre i vari sottosistemi di cgroups attuano le politiche di controllo specifico per ogni risorsa. Questo framework è molto potente e permette di impostare le regole di risorse non solo sulla base di utenti e gruppi.

Per esempio si potrebbe:

Prevenire che un server Web utilizzi tutta la memoria su un sistema che ha anche in esecuzione un database. /> Allocare le risorse di sistema tra gruppi di utenti con priorità diverse (ad esempio, gli ospiti il 10% della CPU, gli utenti il 40% della CPU, i powerusers il 50% della CPU)

Ma cgroup può essere usato anche per isolare e dare comandi speciali a gruppi di processi, per cui possiamo dire che ci sono 2 tipi di sottosistemi

  1. I sottosistemi per l’isolamento e controlli speciali
  2. I sottosistemi per il controllo delle risorse

Mi concentrerò sul controllo delle risorse quindi questa è una piccola panoramica dei sottosistemi per l’isolamento e controlli speciali:

  • CPUset: assegna singole CPU e nodi di memoria a cgroups.
  • Namespace : fornisce una visione privata del sistema per i processi in in cgroup, ed è usato principalmente per realizzare a livello di sistema operativo la virtualizzazione.
  • Freezer: ferma tutti i processi in esecuzione in un cgroup, rimuovendoli dal task scheduler del kernel .
  • Device: consente o nega l’accesso ai dispositivi ai processi in un cgroup.
  • Checkpoint/Restart: Salva lo stato di tutti i processi in un cgroup in un file di dump. E’ possibile riavviarli in un secondo momento (o solo salvare lo stato e continuare).

L’amministrazione dei cgroup viene effettuata per mezzo di uno special virtual filesystem (una sorta di procfs o sysfs), denominato banalmente cgroupfs.

Cgropus in pratica

A meno che abbiate una versione del server di qualche anno fa (Red Hat e CentOS 5.x per esempio), si dovrebbe avere un kernel in grado di utilizzare cgroup, in generale, controllate se il vostro kernel è >= 2.6.24 di con il comando uname -a questo è il requisito per utilizzare cgroups.

A questo punto vi servono gli strumenti in user-space, io sto facendo i test sulla mia Ubuntu, su questo sistema i file da installare sono cgroup-bin e libcgroup1:

class="wp_syntax"> class="code">
sudo aptitude install cgroup-bin libcgroup1

Una volta installato avrete un nuovo filesystem montato:

class="wp_syntax"> class="code">
# ls /sys/fs/cgroup
cpu  cpuacct  devices  memory