Lo scorso 22 gennaio il sito Data Center Dynamics (CDC) ha pubblicato un articolo dal titolo “Changing Linux code could cut data center energy use by 30%, researchers claim” nel quale si racconta del lavoro di due informatici dell’Università di Waterloo (in Canada), i quali hanno prodotto 30 righe di codice Linux che in certi contesti specifici potrebbero ridurre il consumo di energia fino al 30%.
Il codice a cui si riferiscono è quello relativo all’elaborazione dei pacchetti del traffico di rete e, considerato come Linux sia il sistema operativo più utilizzato all’interno dei data center, ecco che il motivo del titolo altisonante.
L’articolo (o gli articoli, ne parla un po’ tutta internet) riporta le affermazioni di Martin Karsten, professore di computer science presso la facoltà di matematica della University of Waterloo e dello studente Peter Cai:
We didn’t add anything, we just rearranged what is done when, which leads to a much better usage of the data center’s CPU caches. It’s kind of like rearranging the pipeline at a manufacturing plant, so that you don’t have people running around all the time.
Non abbiamo aggiunto nulla, abbiamo solo riorganizzato cosa viene fatto e quando, il che porta a un utilizzo nettamente migliore delle cache della CPU del data center. È un po’ come riorganizzare la pipeline in uno stabilimento di produzione, in modo da non avere persone che corrono in giro tutto il tempo.La cosa più sorprendente di queste fantomatiche “30 righe di codice” è come siano già parte del Kernel Linux 6.13 della cui pubblicazione abbiamo parlato recentemente.
La notizia ha fatto il giro del web e sono emersi altri dettagli, come quelli che racconta Network World: tecnicamente la modifica aggiunge un nuovo parametro di configurazione NAPI, irq_suspend_timeout per , testualmente, “aiutare a bilanciare l’utilizzo della CPU e l’efficienza di elaborazione della rete quando si utilizza il differimento IRQ e il polling napi busy“.
Nella pratica questo comporta il poter passare automaticamente tra due modalità di distribuzione dei dati a un’applicazione, polling e interrupt-driven, a seconda del traffico di rete, per massimizzare l’efficienza.
In modalità polling, l’applicazione richiede dati, li elabora e quindi ne richiede altri, in un ciclo continuo. In modalità interrupt-driven, l’applicazione va in stop, risparmiando energia e risorse, finché non arriva traffico di rete per essa, quindi si riattiva e li elabora.
Prima però di correre a installare il Kernel 6.13 è bene leggere con attenzione le affermazioni del prof. Karsten, che aiutano a contestualizzare la patch:
If you have an old-school multi-user, multi-process server with lots of (smallish) applications running concurrently, our new mechanism won’t do anything, but also shouldn’t hurt
Se avete un server vecchia scuola, multi-user e multi-processo con tante applicazioni (di dimensioni ridotte) che funzionano in maniera concorrente, questo nuovo meccanismo non farà nulla, ma comunque non dovrebbe fare maleL’ambito di impiego è quindi specifico:
in many data center scenarios, server machines run a small number of dedicated server applications. These applications ‘dominate’ a set of cores and can usually be connected to a set of transmission queues in the NIC [network interface card]. Our mechanism helps with this type of application, if they are also dealing with lots of network traffic. This is true for pretty much all front-end servers, but also many back-end servers delivering data to front-ends.
in molti scenari di data center, le macchine server eseguono un numero limitato di applicazioni server dedicate. Queste applicazioni “dominano” un set di core e possono solitamente essere connesse a un set di code di trasmissione nella NIC [interfaccia di rete fisica]. Il nostro meccanismo aiuta con questo tipo di applicazione, se hanno anche a che fare con molto traffico di rete. Ciò è vero per quasi tutti i server front-end, ma anche per molti server back-end che forniscono dati ai front-end.Quindi con questa patch certi tipi di “magazzino“, che in effetti sono molto diffusi, dovrebbero certamente considerare l’attivazione della funzionalità che, vale la pena ripetere, è già nel Kernel 6.13!
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.