El apocalipsis de la memoria ha puesto contra las cuerdas a la segunda generación de la Steam Machine, ya que el lanzamiento del mini-PC consolizado ha sido retrasado sine die debido a esa situación. El mayor problema, como ya hemos señalado, es que la gráfica que tiene, una RX 7600 ligeramente recortada, apunta a quedarse corta cuando la computadora llegue al mercado, sobre todo por los 8GB de VRAM que implementa y la falta de soporte oficial, al menos de momento, para FSR 4 y Redstone.Parece que Valve es consciente de la difícil situación que va a afrontar la Steam Machine 2, ya que Natalie Vock, una joven desarrolladora que según su propia descripción trabaja “como contratista independiente para Valve en RADV, el controlador Vulkan de código abierto desarrollado por la comunidad para GPU AMD”, ha anunciado a través de su blog personal una mejora de la gestión de la memoria en gráficas Radeon que implementan 8GB o menos de VRAM. Vock no menciona a la Steam Machine 2 y ha centrado su trabajo en el escritorio Linux en general. Un detalle a tener en consideración de este trabajo es que abarca principalmente AMDGPU, el driver presente en el kernel dirigido a las gráficas de Radeon.Natalie Vock explica que entre los linuxgamers hay muchos que usan gráficas con 8GB de VRAM (memoria gráfica) o menos, lo que hace que estos usuarios tengan que lidiar en muchas ocasiones con problemas de stuttering y ralentizaciones cuando el sistema empieza a quedarse sin memoria gráfica. Cuando la VRAM disponible llega a su límite, “la masacre estalla dentro del controlador del kernel a medida que cada aplicación lucha por la mayor cantidad de memoria de GPU que pueda conservar. Cualquier juego atrapado en esta batalla por los recursos seguramente no saldrá ileso”.Con el fin de mitigar dicha situación, Vock ha publicado un total de seis parches para AMDGPU que pueden ser implementados manualmente por los usuarios, aunque para la inmensa mayoría lo más sensato sería esperar a que todo ese material llegue a la rama estable del kernel si es que la distribución no facilita su implementación a través de la instalación de paquetes.Otros aspectos a tener en cuenta es el entorno que usa la desarrolladora, el cual está compuesto por CachyOS como distribución y KDE Plasma como escritorio. Para aplicar los parches recomienda usar el kernel Linux 7.0rc7-2 o posterior y es posible implementarlos en otros sistemas basados en Arch Linux realizando pasos adicionales. También recomienda uso de gamescope como alternativa a Kwin y avisa que las utilidades del espacio de usuario que emplea son fuertemente dependientes de systemd, por lo que el proceso de implementación puede complicarse en otros inits.Los videojuegos que requieren mucha VRAM no son la única situación Natalie Vock aborda, sino también el hecho de que en un sistema de escritorio puede haber diversas aplicaciones que demandan a la GPU, entre ellas el navegador web. Cuando la memoria gráfica empieza a saturarse, muchas asignaciones de memoria en las gráficas de AMD pasan la Tabla de Traducción de Gráficos (GTT/Graphics Translation Table), una tecnología que permite al driver gráfico, AMDGPU en este caso, mapear parte de la RAM con el fin de que pueda ser utilizada por la tarjeta gráfica. Dicho con palabras más llanas, ante la falta de memoria en la gráfica, se recurre a parte de la RAM.Vock vio en sus pruebas que Cyberpunk 2077, un juego que sigue siendo exigente a pesar de llevar varios años en el mercado, asigna una cantidad fija de 650MB de memoria en la GTT. Aquello fue debido a una aparente mala gestión, ya que el juego en realidad lo que hizo fue solicitar asignaciones en la VRAM que acabaron en GTT. Lejos de ser un bug propiamente dicho, esto se trata de algo que en el contexto del kernel se llama desalojo (eviction). En lugar de decirle a la aplicación que la asignación dentro de la VRAM falló, el kernel se encarga de derivar a la GTT para que todo encaje. La consecuencia de esto es una pérdida de rendimiento sin que haya literalmente un fallo que corregir.El problema está más bien en que el kernel delega a la GTT la aplicación equivocada, llevando ahí a un “bicharraco” como Cyberpunk 2077 en lugar de otras aplicaciones menos demandantes. Además, el ancho de banda pasó en el caso de Vock de 256GB/s a 16GB/s. Para AMDGPU toda la memoria es tratada de una forma igualitaria, por lo que no sabe si lo que gestiona es “un objeto muy importante de un juego o de una imagen estática de una aplicación web aleatoria que se ejecuta en segundo plano”.Los parches en el kernel no son las únicas piezas que hay en el rompecabezas al estar implicados los paquetes dmemcg-booster y plasma-foreground-booster, que en el ecosistema de Arch Linux se encuentran en AUR. La priorización se realiza también y en parte mediante cgroups, “una característica del kernel de Linux que permite organizar los procesos en grupos jerárquicos cuyo uso de diversos tipos de recursos puede limitarse y supervisarse” y que es una de los componentes más importantes que gestiona systemd.Para resumir todo el tema, lo que intenta hacer Natalie Vock es que AMDGPU sea un poco más “hábil” a la hora de identificar qué procesos deberían quedarse en la VRAM y cuáles pueden ser delegados en la GTT. La solución, que como vemos es multifactorial y por ahora parece estar atada a systemd y KDE Plasma o gamescope, debería mejorar el desempeño de los videojuegos gracias a una mejor gestión de las asignaciones de la memoria para los procesos. Veremos cuánto tarda esto en estar disponible para todo el mundo, incluyendo otros escritorios, pero que nadie espere una revolución. Lo que sí parece claro es que la Steam Machine 2 necesitará esto como el comer.La entrada Valve pone el foco en la experiencia de los juegos en gráficas Radeon con poca VRAM es original de MuyLinux