Linux abrirá archivos un 39% más rápido con un parche de tres docenas de líneas
Guzik elimina una referencia duplicada sobre el dentry en do_open() y dispara las operaciones por segundo en lectura. El cambio ya está en la rama VFS de la futura 7.4.
Mateusz Guzik ha cerrado una optimización que llevaba dos años persiguiendo. Ha reducido a tres docenas de líneas un cambio en la apertura de archivos del kernel de Linux que, en sus pruebas, eleva un 39% las operaciones por segundo al abrir el mismo fichero en modo lectura. El parche ya está en la rama vfs-7.4.lookup del árbol de VFS y va camino de la ventana de fusión de Linux 7.4.
El problema estaba en do_open(), en la ruta que traduce un nombre de fichero a su inodo en disco. Al abrir un archivo, el kernel cogía una referencia sobre el dentry terminal en __legitimize_path(), cogía otra en do_dentry_open() y soltaba la primera en terminate_walk(). Dos modificaciones sobre el mismo objeto donde bastaba con una: do_dentry_open() puede consumir la referencia que ya estaba tomada. Así lo explicaba Guzik en el envío a la lista del kernel, que ha pasado por cinco revisiones en los últimos dos años.
Un dentry de más
Eliminar ese trabajo duplicado es lo que da el 39%. La cifra sale de una prueba will-it-scale sobre una máquina virtual de 20 núcleos, abriendo el mismo fichero una y otra vez en solo lectura y midiendo operaciones por segundo. Es un caso sintético y muy repetitivo, no una carga real, pero apunta a un camino caliente: cualquier aplicación que encadene open() se ahorra operaciones sobre estructuras que el kernel mantenía en exclusiva para eso.
Que el fruto estuviera tan bajo sorprende, sobre todo porque el parche no añade complejidad: quita. El código implicado se toca poco y el arreglo es pequeño; las cinco revisiones miden lo conservador del proceso, no lo difícil del cambio.
Con el commit ya colocado en vfs-7.4.lookup y etiquetado como material de la 7.4, queda ver si pasa la revisión en la ventana de fusión y cuándo aterriza en el kernel estable. Todo apunta a que será antes de que acabe 2026. A partir de ahí, el beneficio solo se notará cuando la distribución que administras suba de versión.
