cachestat, una de las novedades que se presentará en Linux 6.5
La semana pasada iniciaron los trabajos de lo que será la próxima versión del Kernel de Linux 6.5 y desde entonces ya se han empezado a dar a conocer algunos de los cambios más relevantes que se presentará en este próximo lanzamiento del Kernel.
Y es que por ejemplo ya se han integrado una gran cantidad de mejoras y cambios tales como el soporte de arranque de CPU paralelo con el objetivo de reducir significativamente los tiempos de arranque del kernel, tambien por la parte de los cambios en AMD se menciona que se han estado abordando diligentemente los problemas de suspensión/reanudación del sistema, ademas de ello tambien se destacan mejoras para los sistemas de archivos, la virtualización y más.
De los cambios anunciados, hablaremos de uno de ellos en este artículo, el cual se menciona que ya se ha incluido en el código base que se construye del kernel de Linux 6.5 y se ha integrado con la implementación de una nueva llamada al sistema «cachestat».
Esta serie de parches presenta una nueva llamada al sistema, cachestat, que resume las estadísticas de la página de caché (número de páginas en caché páginas marcadas para reescritura, páginas desalojadas, etc.) de un archivo, en un intervalo de bytes especificado. También incluye una suite de autocomprobación que prueba algunos uso típico.
Sobre cachestat
Cachestat es una nueva syscall que permite que los programas de espacio de usuario consulten estadísticas más detalladas de la página caché del lado del kernel. Como tal se busca el extender la llamada al sistema «mincore» ya existente que se usa para determinar si las páginas están presentes en la memoria, la llamada «cachestat» permite consultar estadísticas de caché de página más detalladas y apunta a una mayor escalabilidad.
Se menciona que actualmente la memoria de la página caché suele ser el mayor consumidor de memoria y, por lo tanto, los métodos del kernel que la administran tienen un gran impacto en el rendimiento. Como tal, se cuenta con una interfaz rica para aumentar esos métodos con fadvise y la familia de sincronización.
La llamada al sistema «cachestat()» envía información sobre el número de páginas almacenadas en caché, páginas sucias, páginas desalojadas, páginas desalojadas recientemente y páginas marcadas para reescritura.
Las estadísticas proporcionadas para los archivos permiten tomar decisiones más precisas sobre el trabajo con E/S que pasan por el VFS, basándose no solo en un algoritmo abstracto, sino también teniendo en cuenta las características de un sistema en particular en un momento determinado.
Actualmente no existe una buena manera de consultar el estado de la página caché de grandes conjuntos de archivos y árboles de directorios. Hay mincore(), pero se escala mal:
el kernel escribe una gran cantidad de datos de mapa de bits que el espacio de usuario tiene que agregarlo, cuando al usuario realmente no le importa la información por página
en ese caso. El usuario también necesita mmmap y desasignar cada archivo a medida que avanza a lo largo, que también puede ser bastante lento.
Sobre los posibles casos de uso de cachestat() por aplicaciones se mencionan las siguientes:
- El planificador de consultas en el DBMS podrá decidir si realizar una exploración de índice o leer directamente los datos de la tabla en función del estado del índice de la tabla en la memoria caché de la página.
- Manipulación granular y dependiente de la carga del llenado de caché de página y E/S (por ejemplo, páginas sucias/páginas marcadas para reescritura), cambiando la frecuencia de sincronización, de muy frecuente bajo carga ligera a ráfagas durante ráfagas de carga.
- Posibilidad de una presentación más visual y conveniente de la información sobre el uso de la memoria en archivos/directorios grandes, similar a cómo la utilidad «du» le permite mostrar el uso del espacio en disco.
- Solución de problemas más sencilla y depuración de escrituras diferidas para problemas de rendimiento.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.