La scorsa settimana uno sviluppatore ha dato la colpa al kernel Linux per problemi di porting dei giochi sulla piattaforma di gioco Google Cloud, Stadiae, naturalmente, il creatore stesso di Linux, Linus TorvaldsVoleva fare un passo avanti e come è normale per lui, è stato molto chiaro con la sua dichiarazione, indicando che tali accuse sono “.pura spazzatura“e sostanzialmente indicava che il vero problema è questi sviluppatori non sanno fare bene il proprio lavoro.
Malte Skarupke è stata la persona che ha fatto quella denuncia, che si è rapidamente viralizzata, indicando che un suo collega si è lamentato del kernel Linux durante il porting di RAGE 2 su Google Stadiae che Linux ha avuto problemi con gli spinlock (blocca una risorsa in modo che non possa essere modificata da un secondo processo software contemporaneamente, costringendo nuovi processi ad andare in loop fino a quando la risorsa iniziale non è libera e ne viene avviata una nuova), così ha indicato che l’implementazione degli spinlock da parte di Linux è stata “.piuttosto male“che ha portato ad una maggiore latenza.
“Lo spinlock era libero di essere scelto, ma ci sono voluti diversi millisecondi per raccogliere un filo. In un videogioco, dove si deve ottenere un fotogramma ogni 16ms o 33ms (a seconda che si stia giocando a 60Hz o 30Hz), uno stop che richiede più di un millisecondo è terribile. Soprattutto se stai letteralmente tirando tutti i fili.
La soluzione offerta da Linus Torvalds era abbastanza semplice da capire:
“L’intero post sembra essere sbagliato, e sta misurando qualcosa di completamente diverso da ciò che l’autore pensa e sostiene di misurare. Prima di tutto, gli spinlock possono essere utilizzati solo se si sa che non sono programmati mentre li si utilizza… In sostanza legge il tempo prima di rilasciare il blocco, e poi lo legge dopo averlo acquisito di nuovo, e afferma che la differenza di tempo è il tempo in cui il blocco non è stato mantenuto, il che è semplicemente inutile e senza senso e completamente sbagliato. E’ una pura stronzata..
Usate uno spinlock in cui dite al sistema che state aspettando lo spinlock, e dove il filo di sblocco gli fa sapere quando è pronto, in modo che il pianificatore del processo possa effettivamente lavorare con voi, piuttosto che (casualmente) lavorare contro di voi… Ripeto: non usate gli spinlock nello spazio utente, a meno che non sappiate davvero cosa state facendo. E tenete presente che la probabilità che sappiate quello che state facendo è praticamente nulla“.
tramite: Tom’s Hardware