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.

11 risposte a “La risposta educata e puntuale di Linus Torvalds ad uno sviluppatore critico sullo scheduler del Kernel”

  1. Avatar TristanTarrant
    TristanTarrant

    Come per la ricerca scientifica, uno dovrebbe far validare le proprie tesi dalla community prima di blaterare a vanvera dal proprio piedistallo. Bastava scrivere una mail sulla mailing list del kernel…

  2. Avatar Autoscatto
    Autoscatto

    Ha scritto su un forum pubblico in un moderated thread non iniziato da lui per giunta. Su lkml ci sono discussioni sull’argomento da sempre con tesi “validate” da tutti.
    Al contrario di Skarupke che ha scritto sul proprio blog per dire. Si fa presto a dire peer review se sei il primo a non essere alla pari

  3. Avatar Franco Bufi
    Franco Bufi

    Mi aspettavo un articolo migliore, che spiegasse i termini della questione (magari con semplificazioni per i non addetti ai lavori), non la psicoanalisi di Torvalds.

  4. Avatar Marco Costanzo

    Grazie per questo articolo interessante

  5. Avatar TristanTarrant
    TristanTarrant

    Non è quello che ho detto io ?

  6. Avatar JustATiredMan
    JustATiredMan

    vero… probabilmente la cosa è così tecnica e particolare che la scrittura di un articolo completo richiede tempo

  7. Avatar JustATiredMan
    JustATiredMan

    Mha… Torvalds sarà quel che sarà, ma anche Skarupke non mi pare molto per la quale.
    Non capisco perchè esordire già dal titolo “..how Bad the Linux Scheduler Really is..”
    Al di là della questione estremamente tecnica, mi dà l’impressione, dal solo titolo, di cercare la rissa.
    Misure di prestazioni, si sono già visti in altri ambiti e altri se ne vedranno… mi viene in mente ad esempio, le varie guerre sui filesystems.
    C’è stato un periodo dove c’erano guerre su ext2, ext3, ext4, xfs, jfs o reiserfs, con benchmark e misure di ogni tipo e in ogni condizione. Il risultato ovviamente era migliore su questo o quel fs, a seconda dei parametri settati durante la creazione del fs, delle opzioni di mounting e di quelli usati sul software per il benchmark.
    Ovviamente risposte del genere non sono mai definitive, e dipende sempre e tutto dal tipo di dati e di utilizzo che si va a fare in realtà.

  8. Avatar Autoscatto
    Autoscatto

    Perdonami credevo ti riferissi al buon Torvalds.

  9. Avatar sabayonino
    sabayonino

    Già . Una mail alla mailinglist di kernel.org poteva farla e avanzare qualche domanda/critica/suggerimento …
    Ma probabilmente sapeva già di prendere “cacca” contro 😀 .
    E gli è andata anche bene …

  10. Avatar sabayonino
    sabayonino

    e per giunta , è una ciofeca secondo i gusti di Skarupke perchè semplicemente va contro le sue esigenze … e il buon torvalds gli ha fatto notare che le esigenze di altri , in altri ambiti sono spesso molto diverse da quelle sue.
    Quindi caro skarupke … fai come Google , ti prendi una distribuzione che ti piace di più , il kernel che più ti aggrada , te lo modifichi per le TUE esigenze , scegli lo scheduler che fa per i tuoi gusti (o te ne scrivi uno nuovo tutto tuo ) e continui a giocare felicemente…

  11. Avatar JustATiredMan
    JustATiredMan

    frà l’altro, leggendo il post originale nel sito di Skarupke, ad una domanda nel blog, posta da un utente, dove gli chiede se aveva provato a modificare qualche settings in /proc/sys/kernel/sched_min_granularity_ns, per vedere se migliorava quaclosa, il tipo gli risponde pure “Great question. I didn’t know that there were knobs I could tweak”. Già tutto questo la dice lunga…
    Mi sà che ancora una volta il buon Torvalds ha ragione…

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *