Capitolo 4. Gestione delle risorse
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.
- 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.
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.
/proc
regolabile, dd sysctl_sched_shares_window
, con una impostazione predefinita di 10ms.
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.
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.
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