Un parche en el que trabajó un ingeniero de Intel para el vaciado de TLB por lotes para la migración de páginas con folios está mostrando algunos resultados prometedores y actualmente se está abriendo camino hacia el núcleo de la línea principal.
La optimización del ingeniero de Intel Huang Ying ha sido recogida por la rama”mm-unstable”de Andrew Morton. Si todo va bien, esta optimización podría fusionarse para el próximo ciclo del kernel de Linux v6.3. El parche suma mejore el trabajo:
El vaciado de TLB costará bastantes ciclos de CPU durante la migración de la publicación en algunas situaciones. Por ejemplo, al migrar una publicación de un proceso con varios subprocesos activos que se ejecutan en varias CPU. Después de procesar por lotes _unmap y _move en migrate_pages(), el vaciado de TLB se puede procesar por lotes fácilmente con el mecanismo de dosificación de vaciado de TLB existente. Este parche implementa eso.
Usamos el siguiente caso de prueba para probar el parche.
En un servidor Intel de 2 sockets,
-Ejecute pmbench memory accediendo a benchmark
-Ejecute `migratepages` para migrar páginas de pmbench entre el nodo 0 y el nodo 1 de un lado a otro.
Con el parche, el IPI de vaciado de TLB se reduce un 99,1 % durante la prueba y el número de páginas migradas correctamente por segundo aumenta un 291,7 %.
NOTA: el vaciado de TLB se realiza por lotes solo para publicaciones normales, no para publicaciones THP. Debido a que la sobrecarga del vaciado de TLB para las publicaciones THP es mucho más baja que la de las publicaciones normales (alrededor de 1/512 en la plataforma x86).
Intel continúa realizando una gran cantidad de trabajo de kernel upstream además de solo la habilitación oportuna de su nuevo hardware, pero también la optimización incesante del kernel de Linux para un mayor rendimiento y eficiencia.