Linus Torvalds ha preparado un conjunto de parches para el subsistema de gestión de memoria en el núcleo de Linux, implementando una optimización para la lectura de pequeños bloques de datos desde la caché de páginas sin cambiar atómicamente el contador de referencias (refcount) en la estructura folio. En el mensaje del commit se indica que los cambios, así como las pruebas relacionadas, y el borrador de la nota fueron creados por el asistente AI Claude Code bajo la supervisión de Torvalds. El cambio se ha añadido a una rama separada del núcleo noref-filemap-read-with-llm y aún no está claro si se trasladará a la rama principal o si se trata simplemente de un experimento interno.
Durante las pruebas, gracias a los parches se logró aumentar la capacidad de lectura de pequeños archivos en una configuración con 8 hilos de 9.9-10.4 a 30-33 millones de operaciones por segundo (un aumento de 3 veces), con 4 hilos de 8.9-11.6 a 25-26 millones/segundo (aumento de 2 veces), y con carga de un solo hilo de 7.9-8.1 a 8.8-8.9 millones/segundo. El aumento en el rendimiento se explica porque, en el acceso simultáneo a la caché de páginas, hay una dura competencia entre los hilos por el acceso a la caché. Por ejemplo, cuando 8 hilos intentan leer simultáneamente 16 bytes de datos, el 99.92% del tiempo se gasta no en la lectura misma, sino en esperar el acceso al contador de referencias.
En el parche, para garantizar la corrección de los datos, en lugar de establecer bloqueos individuales, modificar contadores de referencias o realizar almacenamiento en búfer intermedio, se utiliza un enfoque alternativo que emplea la liberación de memoria diferida con sincronización mediante el mecanismo RCU (Read-Copy-Update). El método propuesto en el parche garantiza que la página de memoria no se liberará físicamente hasta que el hilo lector haya completado la copia de los datos.
Fuente: opennet.ru
