All’inizio di questo mese ho notato una modifica dello scheduler Linux in coda in sched/core prima del ciclo di Linux 5.18 che è dovrebbe aiutare i processori AMD EPYC e altri processori Zen selezionati in vari carichi di lavoro. Il cambiamento è in lavorazione da diversi mesi e riguarda la regolazione dello squilibrio NUMA consentito quando si estende su più LLC. Ora ho eseguito alcuni dei miei benchmark sull’hardware EPYC e in effetti sto aumentando ulteriormente le prestazioni del kernel Linux.
La patch parla di bei miglioramenti delle prestazioni… Ora sto testando dalla mia parte.
Questa modifica in coda in”sched/core”prima della finestra di unione di Linux 5.18 del mese prossimo non è una modifica specifica per AMD, ma a vantaggio dei processori Zen a causa del layout della cache. Mel Gorman, autore della patch, ha spiegato:”[Una modifica allo scheduler del kernel dal 2020] ha consentito uno squilibrio tra i nodi NUMA in modo tale che le attività di comunicazione non sarebbero state disgregate dal bilanciamento del carico. Funziona bene quando esiste una relazione 1:1 tra LLC e nodo, ma può essere non ottimale per più LLC se attività indipendenti utilizzano prematuramente le CPU che condividono la cache. Zen* ha più LLC per nodo con canali di memoria locali e, a causa dello squilibrio consentito, è molto più difficile ottimizzare alcuni carichi di lavoro per funzionare in modo ottimale rispetto a quando non è attivo hardware con 1 LLC per nodo. Questa patch consente l’esistenza di uno squilibrio fino al punto in cui le LLC dovrebbero essere bilanciate tra i nodi.”
Può confermare un grande miglioramento delle prestazioni sulla serie EPYC 7003 in una varietà di carichi di lavoro con le ultime modifiche al core/scheda TIP.
I benchmark di Mel durante l’utilizzo di questa patch hanno visto un miglioramento fino al 272% per il benchmark della memoria Stream e anche altre vittorie considerevoli come prestazioni migliori del 10% in Coremark e un massimo Fino al 17%, le prestazioni di SPECjbb Java sono aumentate fino al 18%, l’imbarazzante benchmark parallelo di NPB è stato di circa il 17% più veloce e altre vittorie degne di nota. Dati i risultati molto promettenti riportati, ho eseguito alcuni dei miei test in locale e i numeri che vedo sono ugualmente entusiasmanti, specialmente per questa modifica dello scheduler del kernel Linux che è di circa 50 righe di nuovo codice!
Prima di tutto ci sono alcuni benchmark eseguiti con un server AMD EPYC 75F3 2P costruito attorno a una scheda madre ASRockRack ROME2D16-2T e con Ubuntu 21.10. Le prestazioni sono state confrontate tra Linux 5.17 Git e quindi sched/core Git con la patch”sched/fair: Regola lo squilibrio NUMA consentito quando SD_NUMA si estende su più LLC”in questione. È stato utilizzato lo stesso kernel Kconfig tra entrambi i kernel.