La risposta educata e puntuale di Linus Torvalds ad uno sviluppatore critico sullo scheduler del Kernel

11

Quasi un anno fa vi abbiamo presentato Stadia, il servizio di gaming di Google online, particolare per due ragioni principali:

  1. La console è remota, un’istanza dedicata nel cloud di Google: la console locale si collega via internet ad essa e visualizza solo uno stream video, mandando man mano gli input ricevuti dal joystick. Per far capire bene quanta poca potenza richieda, basta pensare che un chromecast è lo strumento designato;
  2. L’infrastruttura dedicata usa Linux: il cloud dedicato per offrire le risorse usa Linux, non una distribuzione generica ma un prodotto apposito (tanto tagliato su misura che perfino le CPU e le GPU usate sono fabbricate ad hoc per Google);

Il secondo punto è esattamente il motivo per cui al suo annuncio avevamo grosse aspettative: la dimostrazione che con Linux si può giocare, e seriamente.

Ma cosa c’entra Google Stadia con un articolo che parla di Linus Torvalds?

Ci serve una piccola digressione tecnica.

In un computer, una CPU può eseguire solo un processo (programma) alla volta. Il multitasking, ovvero poter eseguire più programmi contemporaneamente, è in realtà un effetto percepito dovuto al continuo cambio di programma in esecuzione, proprio come un film è in realtà un insieme di singole immagini (frame) che si susseguono abbastanza velocemente. A regolare la modalità con cui i programmi vengono eseguiti è il componente chiamato scheduler.

Fine della digressione.

Il 30 dicembre 2019 Malte Skarupke, uno sviluppatore software – in particolare di videogiochi – ha pubblicato un lungo e dettagliato articolo nel quale presentava una sua analisi sulle prestazioni dello scheduler del Kernel Linux, ovvero proprio il componente che decide quale processo debba essere eseguito e quale invece debba aspettare. Il titolo è parecchio chiaro:

Measuring Mutexes, Spinlocks and how Bad the Linux Scheduler Really is

Misurazione di mutexes, spinlock e di quanto lo scheduler di Linux sia scarso

Il post quindi è un’analisi che dimostra quanto male lavori lo scheduler del Kernel Linux. E capirete che la cosa può andare alquanto indigesta agli sviluppatori del Kernel: si tratta, senza dubbio, di una critica molto forte al loro lavoro.

E infatti proprio lo sviluppatore capo, il creatore, Linus Torvalds in persona, si è preso la briga di rispondere. Nel suo stile, ovviamente:

The whole post seems to be just wrong, and is measuring something completely different than what the author thinks and claims it is measuring.

[…] But the blog post author seems to be implementing his own spinlocks in user space […]. And the code used for the claimed “lock not held” timing is complete garbage.

[…] That’s pure garbage. […]

L’intero post appare semplicemente sbagliato, e sta misurando qualcosa di completamente diverso da quanto l’autore pensa e dichiara di misurare.

[…] Ma l’autore del post nel blog sembra implementare i propri spinlock nello user space […]. E il codice usato per dimostrare i tempi di “lock non mantenuto” è tutta spazzatura.

[…] Quella è pura spazzatura. […]

Rispetto ai decenni passati il linguaggio è da signorino: evidentemente il periodo sabbatico per imparare a rispondere in maniera appropriata dell’anno scorso è davvero servito. Ma è anche piuttosto lunga, con riferimenti tecnici puntuali. E se ne trova un’altra, più avanti nella discussione, ancora più tecnica: davvero un ottimo modo di rispondere.

Sebbene risposte di questo tipo siano difficilmente comprensibili (come è giusto, visto che è una discussione tecnica fra tecnici), fa piacere sapere che qualcuno tanto in alto in un progetto non solo difenda il suo lavoro, ma lo faccia con un approccio costruttivo e con spiegazioni esaustive. Soprattutto se quel qualcuno è Linus, il dittatore benevolo!

Ho coltivato la mia passione per l’informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.