4.4. Miglioramenti NUMA in Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 6 introduce un certo numero di miglioramenti per trarre il maggior beneficio dalle potenzialità di un hardware altamente scalabile. Questa sezione fornisce una panoramica dettagliata dei miglioramenti più importanti delle prestazioni relative a NUMA, presenti con Red Hat Enterprise Linux 6.
4.4.1. Ottimizzazione bare-metal e scalabilità
4.4.1.1. Miglioramenti sul riconoscimento della tipologia
I miglioramenti di seguito riportati permettono a Red Hat Enterprise Linux di rilevare informazioni dettagliate relative all'architettura e all'hardware, migliorando la possibilità di ottimizzare automaticamente la processazione del sistema.
- rilevamento della tipologia migliorato
- Ciò permette ad un sistema operativo di rilevare informazioni dettagliate sull'hardware (come ad esempio CPU logiche, hyper thread, core, socket, nodi NUMA e tempi di accesso tra i nodi) al momento dell'avvio e di ottimizzare la processazione sul sistema.
- completely fair scheduler
- Questa nuova modalità d'accesso assicura una condivisione uniforme del tempo di esecuzione tra i processi interessati. Unendo questa impostazione con il rilevamento della tipologia sarà possibile programmare i processi su CPU all'interno dello stesso socket, evitando così la necessità di avere un accesso della memoria remota, e assicurando che il contenuto presente in cache possa essere conservato quando possibile.
malloc
malloc
è stato ora ottimizzato ed è in grado di assicurare che le regioni della memoria assegnate ad un processo, siano il più vicine possibili al core sul quale il processo risulta essere in esecuzione. Questa impostazione migliora la velocità di accesso della memoria.- Assegnazione buffer I/O skbuff
- In modo simile a
malloc
, è stata eseguita una sua ottimizzazione per utilizzare la memoria fisicamente vicina alle operazioni I/O di gestione della CPU, come ad esempio gli interrupt del dispositivo. - affinità interrupt del dispositivo
- È possibile utilizzare le informazioni registrate dai driver dei dispositivi relative alla gestione degli interrupt da parte delle CPU. Queste informazioni possono essere usate per limitare la gestione degli interrupt alle CPU presenti sullo stesso socket fisico, conservando così l'affinità della cache e limitando il volume delle comunicazioni tra i socket.
4.4.1.2. Miglioramento nella sincronizzazione tra processori multipli
L'organizzazione dei compiti tra i processori multipli richiede operazioni frequenti che utilizzano un tempo molto elevato per assicurare l'esecuzione dei processi in parallelo senza compromettere l'integrità dei dati. Red Hat Enterprise Linux include i seguenti miglioramenti per le aree di seguito riportate:
- Blocchi Read-Copy-Update (RCU)
- Generalmente il 90% di blocchi vengono usati per processi di sola lettura. l'RCU locking rimuove la necessità di ottenere un blocco per un accesso esclusivo quando i dati usati non sono stati modificati. Questa modalità viene ora implementata nell'assegnazione della memoria cache della pagina: il blocco viene usato ora solo per operazione di allocazione/deallocazione.
- algoritmi per-CPU e per-socket
- Numerosi algoritmi sono stati aggiornati per poter eseguire un blocco coordinato tra CPU in coperazione tra loro presenti sullo stesso socket. Questa operazione permette di avere un blocco più dettagliato. Numerosi spinlock sono stati rimossi e sostituiti da metodi di blocco per-socket. L'aggiornamento delle zone dell'allocatore di memoria e degli elenchi delle pagine relativi, permette di usare una logica di assegnazione con un sottoinsieme più efficiente di strutture per la mappatura dei dati della memoria durante operazioni di allocazione/deallocazione.