Malte Skarupkeuno sviluppatore di videogiochi, ha rivelato questa settimana che Google Stadia aveva un problema serio, e cioè che il programmatore del kernel Linux avrebbe avuto qualche problema nel porting dei titoli già sviluppati sulla piattaforma cloud dell’azienda, come ad esempio aggiungere millisecondi al tempo di risposta del giocoche può fare la differenza tra giocare alla perfezione o che un titolo è ingiocabile.
“Ho sentito qualcuno al lavoro lamentarsi di alcuni misteriosi problemi mentre portavo RAGE 2 su Google Stadia. L’unica cosa che questi misteriosi problemi avevano in comune era l’uso di spinlock. Ero curioso di saperlo, perché sono stato io a scrivere lo spinlock che stavamo usando.
Il problema era che c’era un filo che passava diversi millisecondi cercando di acquisire uno spinlock in un momento in cui nessun altro filo teneva lo spinlock.
Ripeto: lo spinlock era libero di essere scelto, ma ci sono voluti alcuni millisecondi per raccogliere un filo. In un videogioco, dove si deve ottenere un framerate 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.
Malte Skarupke ha detto di aver passato mesi a fare ricerche sulla questione prima di concludere che “la maggior parte delle implementazioni mutex sono davvero buone, che la maggior parte delle implementazioni spinlock sono piuttosto cattive e che il programmatore Linux è buono ma tutt’altro che ideale“. Infine ha deciso di applicare la soluzione di passare da uno spinlock a un mutex (un algoritmo di esclusione che impedisce a più processi di entrare contemporaneamente nella sezione critica), riducendo così i tempi di risposta e rendendo il gioco giocabile.
tramite: Tom’s Hardware