Un kernel no se mide por el número de commits, sino por quién firma cada parche y para qué hardware concreto. Linux 7.3 se etiquetó el domingo 18 de octubre con 18.765 commits no-merge de 3.021 desarrolladores, 807 de ellos primerizos, según el anuncio de Linus Torvalds, el mayor volumen de trabajo de la historia del proyecto. Ocho días después, Igalia publica su balance del ciclo: 69 parches propios y 59 revisiones, casi todos en controladores gráficos y en el planificador.
Igalia es una empresa gallega de consultoría de software libre, propiedad de sus trabajadores, fundada en septiembre de 2001 en A Coruña y con más de cien empleados; la propia cooperativa cuenta en su web cómo se organiza. Su nombre no aparece en la caja de ningún ordenador, pero sí en el código que mueve la GPU de un Raspberry Pi, las tarjetas gráficas de AMD y buena parte de los navegadores que usas a diario.
De la lista de este ciclo salen tres cambios que se notan en un equipo de casa. El controlador de la GPU del Raspberry Pi unifica la forma de mandar trabajo al hardware, el de AMD recorta el coste de CPU por cada trabajo enviado y el límite de VRAM por cgroup deja de fallar en silencio cuando lo bajas por debajo de lo que ya hay en uso.
Sesenta y nueve parches que no salen en el titular
El balance de Linux 7.3 que Igalia publica este lunes se reparte en 69 parches escritos y 59 revisados, concentrados en gráficos, memoria de dispositivo y planificador. Maíra Canal e Iago Toral firman casi todo lo del Raspberry Pi; Ursulin lleva amdgpu y Min el planificador. Esa continuidad permite que una tarjeta de 2019 siga recibiendo arreglos.
| Quién firma |
Subsistema |
Qué cambia para el usuario |
| Maíra Canal |
V3D y VC4, GPU del Raspberry Pi |
Un único camino de envío de trabajo y contadores de rendimiento fiables |
| Tvrtko Ursulin |
amdgpu |
Contextos y listas de buffers con XArray, menos CPU por trabajo |
| Melissa Wen |
Pantalla de AMD |
Fin de las bandas de color en HDR y de los avisos de mezcla en el registro |
| Thadeu Cascardo |
cgroup dmem |
Reclamo de VRAM al bajar el máximo y nuevo fichero `dmem.peak` |
| Changwoo Min |
sched-ext |
Menos copias del spinlock de arena y ganchos que ya pueden dormir |
Leída en frío, la tabla admite una lectura menos amable. Casi todo son arreglos de fugas, robustez y limpieza, sin una función estrella que justifique actualizar solo por ella. La ganancia aparece a los pocos meses, cuando el equipo deja de congelarse a mitad de una partida.
Una sola cadena de trabajos para la GPU del Raspberry Pi
El controlador V3D fue acumulando tipos de envío a medida que crecía y el código siguió usando las abstracciones del principio. En 7.3 Igalia introduce `struct v3d_submit`, que representa la cadena de trabajos como un array ordenado, y lleva los envíos de render, textura y cómputo a ese camino común, como detalla el desglose del refactor.
El segundo cambio de esa zona afecta al monitor de rendimiento. La nueva gestión del bloqueo permite serializar trabajos entre colas cuando hay un contador enganchado, así que las cifras dejan de mezclarse. Quien perfile un juego o un motor gráfico en la placa obtiene números en los que puede confiar.
La noticia menos leída de la lista es una retirada. Esta es la última versión con soporte para V3D 3.3 y 4.1, dos generaciones sin usuarios dentro del árbol desde que Mesa dejó de atenderlas con la llegada de la 7.1. No afecta a ninguna Raspberry Pi, porque son las Broadcom 7268 y 7278, placas de referencia, y el Pi 4 usa la 4.2.
A partir de la próxima versión, el kernel quitará el soporte y esas placas se quedarán en 7.3 si quieren GPU. Es la forma habitual de cerrar una puerta en el kernel. Primero un aviso con antelación, después la eliminación, y en medio la posibilidad de que aparezca alguien con interés real en mantener el código.
El controlador de AMD deja el IDR y gasta menos CPU
El bloque de AMD es amplio y mezcla varias cosas distintas. Los contextos de GPU y las listas de buffers abandonan el IDR heredado y pasan a XArray, con las rutas de código simplificadas. Además, varios cientos de kilobytes salen del binario al mover decisiones de macros a comprobaciones hechas una sola vez.
En el camino de envío de trabajos el recorte es de CPU. Se va el mutex de la lista de buffers, que ya no protegía nada, varias comprobaciones de bloque de hardware se sustituyen por una condición cacheada y los workers ociosos se rearman mucho menos. En una tarjeta antigua con pocos núcleos, ese trabajo de fondo se nota.
También hay seguridad en el paquete. Igalia corrige posibles usos después de liberar memoria y desreferencias de puntero nulo en el manejo del pstate de contexto, donde el controlador guarda el estado estable de energía de cada contexto de GPU. Son arreglos que no salen en las notas de versión y que sí llegan a los kernels estables.
La VRAM con tope por cgroup ya obedece
El controlador dmem de cgroup nació en 6.14 para los chips gráficos de Intel, llegó a amdgpu en 6.15 y en 7.3 lo adopta también nouveau. Permite fijar cuánta memoria de vídeo puede gastar un grupo de procesos, algo útil cuando un juego, un navegador y el compositor se pelean por la misma VRAM, según la explicación de los controles.
Hasta ahora, bajar `dmem.max` por debajo de lo que el grupo ya tenía asignado fallaba sin decir nada. En 7.3 esa escritura dispara un reclamo que mueve objetos de la VRAM a la GTT, la memoria del sistema que la GPU también usa, y espera a que el consumo baje del nuevo techo.
El cambio trae además un fichero de solo lectura, `dmem.peak`, con el pico de uso, y una regla más estricta para escribir límites, una región por escritura. Antes se podían tocar varias de golpe y quedarse a medias sin que nadie se enterara. Para quien reparte la máquina en cgroups, como en Bazzite, el límite pasa a significar algo.
Un planificador extensible que ya se apila por cgroups
El otro gran bloque del ciclo no lo firma Igalia, aunque dos de sus parches entran ahí. sched-ext, el marco que permite escribir planificadores de CPU en BPF, cierra en 7.3 el soporte de sub-planificadores: un planificador raíz puede ceder un subárbol de cgroups a otro anidado con concesiones de CPU revocables, según el pull request de Tejun Heo.
El detalle de Igalia en esa zona es más pequeño y más útil de lo que parece. Se eliminan copias duplicadas de los nodos del spinlock de arena, con lo que el planificador gasta menos memoria por instancia, y `ops.cgroup_set_bandwidth()` pasa a ser dormible. Eso le permite llamar a operaciones que se bloquean, como reservar memoria, sin romper el gancho.
Lo que un changelog cuenta cuando lo firma una cooperativa
La ventana de fusión de 7.4 abrió el lunes 19 de octubre con Linus Torvalds de vacaciones familiares y la advertencia de que el calendario podía estirarse. La lista de lo que entra se está escribiendo estos días, con los cambios del próximo ciclo todavía sin cerrar. Lo que llegue dependerá, otra vez, de quién esté dispuesto a revisarlo.
Para quien usa Linux y no lo escribe, la conclusión es práctica. Ninguna de estas mejoras llega por instalar 7.3 a mano el mismo lunes, sino cuando tu distribución lo empaqueta y lo prueba. Las de VRAM y planificador solo se notan si repartes los procesos en cgroups; el resto es fontanería que se agradece igual.