Linus Torvalds dice que las acusaciones del kernel de Linux en Google Stadia son «pura basura»

La semana pasada un desarrollador culpaba al kernel de Linux de los problemas a la hora de portar los juegos a la plataforma gaming en la Nube de Google, Stadia, y cómo no, el mismísimo creador de Linux, Linus Torvalds, quiso dar un paso hacia delante y como viene siendo normal en él, fue muy claro con su declaración, indicando que dichas acusaciones son "pura basura" y básicamente indicó que el problema real es que estos desarrolladores no saben hacer su propio trabajo bien.

Google Stadia Pro 1 740x354 0

Malte Skarupke fue la persona que formuló dicha queja, la cual rápidamente se viralizó, indicando que un compañero suyo se quejó del kernel de Linux a la hora de portar RAGE 2 a Google Stadia, y que Linux presentaba problemas a la hora de utilizar spinlocks (bloquea un recurso para que no pueda ser modificado por un segundo proceso de software de forma simultánea, forzando a que los nuevos procesos entren en bucle hasta que el recurso inicial está libre y se inicie uno nuevo), por lo que indicó que la implementación de spinlocks por parte de Linux era "bastante mala", lo que conllevaba una mayor latencia.

"El spinlock era libre de ser escogido, pero un hilo tardó varios milisegundos en cogerlo. En un videojuego, donde tienes que conseguir un frame cada 16ms o 33ms (dependiendo de si estás jugando a 60 Hz o 30 Hz), un parón que toma más de un milisegundo es terrible. Especialmente si estás literalmente parando todos los hilos".

La solución ofrecida por Linus Torvalds fue bastante simple de entender:

"Todo el post parece estar equivocado, y está midiendo algo completamente diferente de lo que el autor piensa y afirma que está midiendo. En primer lugar, los spinlocks sólo se pueden usar si realmente sabes que no está siendo programado mientras los usas... Básicamente lee la hora antes de liberar el bloqueo, y luego lo lee después de adquirir el bloqueo de nuevo, y afirma que la diferencia de tiempo es la hora en que no se mantuvo el bloqueo, lo cual es simplemente inútil y sin sentido y completamente erróneo. Eso es pura basura.

Usar un spinlock donde le dices al sistema que estás esperando el spinlock, y donde el hilo de desbloqueo le haga saber cuándo está listo, así el planificador de procesos puede realmente trabajar contigo, en vez de (aleatoriamente) trabajar en tu contra... Repito: no uses spinlocks en el espacio de usuario, a menos que realmente sepas lo que estás haciendo. Y ten en cuenta que la probabilidad de que sepas lo que estás haciendo es básicamente nula".

vía: Tom's Hardware

Artículos relacionados