Red Hat Training

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

Capitolo 4. Gestione delle risorse

Imposizione limite Cgroups CPU

Nel kernel di Linux il Completely Fair Scheduler (CFS) è uno scheduler di condivisione proporzionale il quale divide il tempo della CPU equamente tra i gruppi di compiti in base al peso/priorità del compito o condivisione assegnata ai gruppi. Con CFS un gruppo di compiti può ottenere una quantità maggiore di CPU se sono presenti cicli CPU sospesi disponibili sul sistema, questo a causa della natura dello scheduler.

Tuttavia sono presenti alcuni scenari nei quali non è possibile conferire ad un gruppo di compiti una condivisione CPU maggiore a quella prevista:
Pay-per-use
Nei sistemi di tipo enterprise usati per soddisfare requisiti di clienti multipli, i provider di servizi cloud hanno bisogno di assegnare una quantità specifica di tempo della CPU al guest virtuale in base al livello di servizio.
Garanzia del livello di servizio
Gli utenti richiedono una percentuale di risorse della CPU senza alcuna interruzione del servizio per ogni guest virtuale.
In questi scenari lo scheduler implementa un limite al consumo di risorse della CPU di un gruppo di compiti se lo stesso eccede il proprio limite. Tale operazione viene eseguita limitando il gruppo quando lo stesso consuma una quantità di tempo della CPU ad esso assegnato.
L'imposizione del limite cgroups CPU viene considerato un'aggiunta molto importante alla gamma di funzioni di Red Hat Enterprise Linux. Tale imposizione viene fornita dal Credit Scheduler in Xen ed anche dal VMware ESX scheduler.
Miglioramenti sulla scalabilità del controller Cgroups CPU su sistemi SMP

Red Hat Enterprise Linux 6 abilitava cgroups senza alcuna configurazione e libvirt era in grado di creare un cgroups in base al modello del guest. Su sistemi SMP molto grandi, un aumento del numero di cgroups peggiorava il livello delle prestazioni. Tuttavia con Red Hat Enterprise Linux 6.2, la scalabilità di cgroups CPU è stata notevolmente migliorata rendendo possibile la creazione e l'esecuzione contemporanea di centinaia di cgroups senza intaccare le prestazioni.

Oltre ai miglioramenti sulla scalabilità è stato aggiunto un parametro /proc regolabile, dd sysctl_sched_shares_window, con una impostazione predefinita di 10ms.
Miglioramenti prestazione del controller I/O di Cgroups

Il desing del controller I/O di cgroup è stato migliorato per ridurre l'uso dei lock migliorandone le prestazioni. Il controller I/O supporta ora le statistiche per cgroup.

Milgioramenti prestazione del controller della memoria di cgroup

Red Hat Enterprise Linux 6.2 migliora l'overhead relativo all'uso della memoria sul controller riducendo l'overhead dell'assegnazione per l'array page_cgroup del 37%. In puntatore page_cgroup-to-page diretto è stato rimosso migliorando così le prestazioni del controller della memoria.

Valore predefinito per la variabile group_isolation di CFQ

L'impostazione predefinita per la variabile group_isolation di CFQ è stata modificata da 0 a 1 (/sys/block/<device>/queue/iosched/group_isoaltion). Dopo svariate prove e numerosi riporti si è scoperto che l'impostazione 1 risulta essere la più utile. Se impostata su 0, tutte le code I/O randomiche diventano parte del cgroup root e non del cgroup stesso del quale fa parte l'applicazione. Di conseguenza ne risulta una differenziazione tra servizi per le applicazioni.

Nota

Per maggiori informazioni sulla gestione delle risorse e sui gruppi di controllo consultare la Red Hat Enterprise Linux 6.2 Resource Management Guide.