Para aquellos que utilizan la opción de configuración de clúster sub-NUMA (SNC) de Intel disponible en sus servidores desde Skylake, el código del kernel”resctrl”de control de recursos de Linux se está mejorando para manejar mejor esta configuración de recursos.

La agrupación en clústeres Sub-NUMA permite particionar los controladores de memoria/caché/núcleos de una CPU en múltiples dominios NUMA. La agrupación en clústeres Sub-NUMA puede ser beneficiosa para el software optimizado/consciente de NUMA y similar a la opción BIOS NUMA Per Socket (NPS) de AMD. Si bien ha estado disponible durante años y funciona bien en Linux para la funcionalidad esperada, resulta que el sistema de control de recursos del kernel de Linux actual maneja mal el monitoreo de la tecnología de director de recursos (RDT) cuando SNC está habilitado.

Tony Luck, ingeniero de Intel Linux desde hace mucho tiempo, explicó con esto nueva serie de parches que trabajan para mejorar la compatibilidad con el control de recursos para los servidores en clúster Sub-NUMA:

Los sistemas de servidor Intel que comienzan con Skylake admiten un modo que divide lógicamente cada socket. P.ej. cuando se particionan de dos maneras, la mitad de los núcleos, la caché L3 y los controladores de memoria se asignan a cada una de las particiones. Esto puede reducir la latencia promedio para acceder a la memoria y caché L3, con la contrapartida de que solo la mitad de la caché L3 está disponible para el acceso a la memoria local del subnodo.

El sistema resctrl de Linux existente maneja mal la supervisión de RDT en sistemas con el modo SNC habilitado.

Pero, con algunos cambios simples, esto puede ser arreglado Cuando el modo SNC está habilitado, los contadores RDT RMID también se dividen con los contadores de número bajo yendo a la primera partición y los contadores de número alto a la segunda partición. La clave es ajustar el valor de RMID escrito en IA32_PQR_ASSOC MSR en el cambio de contexto y el valor escrito en IA32_QM_EVTSEL al leer contadores, y cambiar el factor de escala que se leyó de CPUID(0xf,1).EBX

Por ej. en un clúster Sub-NUMA bidireccional con 200 contadores RMID, solo hay 100 contadores disponibles para el código resctrl. Cuando se ejecuta en el primer nodo SNC, los valores RMID 0..99 se usan como antes. Pero cuando se ejecuta en el segundo nodo, una tarea a la que se le asigna resctrl rmid=10 debe cargar 10+100 en IA32_PQR_ASSOC para usar el contador RMID 110.

No debería haber cambios en la funcionalidad en otras arquitecturas o en Sistemas Intel con SNC deshabilitado, donde snc_ways==1.

Este comportamiento actual o los cambios propuestos no deberían afectar el rendimiento de SNC, sino que se trata de abordar la supervisión adecuada del control de recursos para el clúster sub-NUMA configuraciones Los siete parches que corrigen el código x86/resctrl ya están disponibles para su revisión.

Categories: IT Info