Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.5. Gruppi di controllo

Red Hat Enterprise Linux fornisce un certo numero di opzioni utili per l'ottimizzazione delle prestazioni. Sistemi molto grandi, con centinaia di processori, possono essere regolati in modo da avere una prestazione ottimale. Per regolare questi sistemi è necessario avere una conoscenza approfondita ed un carico di lavoro definito. In passato quando i suddetti sistemi erano costosi e non molto numerosi era normale avere un trattamento speciale nei loro confronti, col tempo, e con l'aumentare dei suddetti sistemi fino a diventare "normali", è aumentata la necessità di utilizzare strumenti più efficaci.
Al giorno d'oggi per la consolidazione dei servizi vengono utilizzati sistemi più potenti. Carichi di lavoro eseguiti da un minimo di quattro ad un massimo di otto server, vengono ora eseguiti su un singolo server. Come affrontato precedentemente in Sezione 1.2.1, «Elaborazione parallela», attualmente i sistemi di livello medio contengono un numero maggiore di core rispetto a sistemi passati ad elevate prestazioni.
Attualmente numerose applicazioni vengono create per una processazione parallela tramite thread multipli o processi di miglioramento delle prestazioni. Tuttavia solo poche applicazioni possono usare in modo più effettivo più di otto thread. Per questo motivo installare applicazioni multiple su sistemi a 32-CPU per massimizzare la capacità.
Considerate che sistemi mainstream poco costosi e più piccoli sono oggi ad un livello simile a quello di macchine ad elevate prestazioni e molto costose usate in passato. Macchine ad elevate prestazioni meno costose conferivano la possibilità agli architetti di sistema di consolidare più servizi con un numero più ristretto di macchine.
Tuttavia alcune risorse (come ad esempio I/O e comunicazioni di rete) sono condivise e non aumentano in modo simile al conteggio della CPU. Per questo motivo un sistema che presenta un certo numero di applicazioni può avere una diminuzione delle prestazioni quando una applicazione "monopolizza" per tempi molto estesi una singola risorsa.
Per risolvere questo problema Red Hat Enterprise Linux 6 supporta ora i control groups (cgroups). Cgroups permettono ad un amministratore di assegnare le risorse a compiti specifici. Ciò significa assegnare 80% di quattro CPU, 60GB di memoria e 40% di I/O del disco ad una applicazione del database. Una applicazione web in esecuzione sullo stesso ssistema può ricevere due CPU, 2 GB di memoria e 50% di larghezza di banda disponibile della rete.
Ne risulta una migliore prestazione poichè il sistema impedisce un consumo eccessivo di risorse sia da parte del database che delle applicazioni web. Altresì numerosi aspetti di cgroups sono self-tuning, e permettono al sistema di rispondere in modo adeguato al variare del carico di lavoro.
Un cgroup presenta due componenti principali:
  • Un elenco di compiti assegnati al cgroup
  • Risorse assegnate ai suddetti compiti
I compiti assegnati al cgroup vengono eseguiti all'interno del cgroup. Ciò permetterà ad un amministratore di gestire una intera applicazione come singola unità. L'amministratore sarà in grado di configurare le assegnazioni per le seguenti risorse:
  • CPUsets
  • Memoria
  • I/O
  • Rete (larghezza di banda)
All'interno dei CPUset i cgroup permettono agli amministratori di configurare il numero di CPU, l'affinità per specifiche CPU o nodi [3], e la quantità di tempo della CPU usata da un insieme di compiti. L'uso di cgroup per configurare i CPUset risulta essere vitale per assicurare un buon livello di prestazione, ed impedisce il consumo eccessivo di risorse da parte di una applicazione, assicurando al tempo stesso un livello accettabile di risorse per il tempo di CPU.
La larghezza di banda I/O e di rete sono gestite da altri controllori di risorse. I suddetti controllori permettono di determinare la quantità di larghezza di banda consumata dai compiti all'interno di un cgroup, e assicurano al tempo stesso che i compiti presenti al suo interno non consumino un livello eccessivo o che abbiano un livello troppo basso di risorse.
I Cgroup permettono ad un amministratore di definire e assegnare, con un livello molto alto, le risorse necessarie alle varie applicazioni. Il sistema gestisce automaticamente ed in modo equilibrato le varie applicazioni, rendendo disponibile un buon livello prevedibile di prestazioni e ottimizzando il sistema in generale.
Per maggiori informazioni su come usare i control groups consultare la Resource Management Guide disponibile su http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.


[3] Generalmente un nodo viene definito come set di CPU o core all'interno di un socket.