I super computer girano su quali sistemi operativi?

La maggior parte delle varietà di Linux in questi giorni. Tuttavia, c'è una scuola di pensiero secondo cui i nodi di calcolo dovrebbero eseguire dei sistemi operativi spogliati, in modo da non intralciare così tanto le applicazioni. Uno di questi è "Compute Node Linux".

I programmi HPC, che sono chiamati "codici" dagli addetti ai lavori, tendono a non usare molto il sistema operativo. Possono leggere o scrivere file, tipicamente da filesystem altamente paralleli, e certamente fanno I/O di rete, ma l'atteggiamento del tipico programmatore di applicazioni HPC nei confronti del sistema operativo è "mappami tutta la memoria, dammi accesso diretto all'interfaccia di interconnessione, e poi tieniti fuori dai piedi"

C'è un fenomeno nell'HPC chiamato "interferenza OS". Supponiamo che il sistema operativo abbia vari compiti di manutenzione che vengono eseguiti per 0,001 secondi ogni secondo circa. 0,1% di overhead, niente di che, giusto? Ora supponiamo che l'applicazione sia un programma parallelo di 1000 nodi che deve coordinare il progresso dei nodi una volta al secondo circa. Boom! Da qualche parte nel sistema, uno dei nodi è SEMPRE fuori a pranzo a fare qualcosa o altro. Forse eseguendo lpd. Chi lo sa? Il risultato netto è che 999 nodi stanno aspettando il millesimo, e quello 0,1% di overhead è ingrandito di 1000 volte! Metà della potenza di calcolo del cluster è persa per questa piccola cosa del sistema operativo. Non c'è da meravigliarsi che i programmatori HPC odino l'OS.

Un altro punto dolente è la rete. In una buona giornata, la latenza end to end di un hop Ethernet utilizzando 10 Gbps Ethernet, è di circa 5 microsecondi. Questo è per l'HPC. Adattatori e switch Infiniband ben progettati raggiungono abitualmente una latenza inferiore a 1 microsecondo. A queste velocità, ci vuole semplicemente troppo tempo per chiamare il sistema operativo per inviare o ricevere un pacchetto. Invece, le reti HPC spesso usano "OS Bypass" in cui l'applicazione (o più probabilmente una libreria in modalità utente) può parlare direttamente all'adattatore I/O. La lunghezza del percorso software dall'applicazione che chiama SEND ai bit sul filo è spesso inferiore a 200 istruzioni macchina. Questo non può essere fatto con il sistema operativo tra i piedi. Anche la codifica dei frame Ethernet è così pessima per la latenza che tende a rendere brontoloni gli ingegneri HPC. 64/66 codici? Yechh.

E non fatemi parlare della memoria virtuale. Ogni volta che qualcuno dice "virtuale" si dovrebbe pensare "lento".