AMD e Intel ganarán entre un 44% y un 82% de rendimiento en Linux

Un nuevo parche para Linux y una mejora muy concreta que afectará a Intel y AMD por partes iguales, aunque no en cuanto a rendimiento se refiere. Y es que al igual que ha pasado en cierta manera con Windows 10 y Windows 11, el programador de tareas está continuamente en desarrollo y optimización donde la última tiene que ver con NUMA en el kernel 5.20 de Linux, con el cual AMD e Intel van a ganar rendimiento.

La afinidad de las tareas a según qué núcleos tiene mucho que ver con el rendimiento final de un procesador, sobre todo cuando se balancean cargas y son tan complicadas como las de un servidor. Por eso, con AMD y su cambio y giro hacia NUMA modificar el rendimiento es relativamente sencillo para lo bueno y para lo malo.

La optimización del kernel de Linux 5.20 y las mejoras en AMD e Intel

Kernel-Linux-Funcion-5.20

La modificación que sufrirá el kernel de este SO en su conjunto afecta a la función find_idlest_group(), por lo que los sistemas que contienen más de un socket se verán más beneficiados de los cambios que ha comentado el ingeniero de AMD Prateek Nayak:

En el caso de los sistemas que contienen varias LLC por socket, como los sistemas AMD Zen, los usuarios desean distribuir las aplicaciones que consumen mucho ancho de banda en varias de estas LLC. "Stream" es una de esas cargas de trabajo representativas en las que se obtiene el mejor rendimiento al limitar un subproceso de flujo por LLC. Para garantizar esto, se sabe que los usuarios anclan las tareas a un subconjunto específico de la/s CPU/s que consta de una CPU por LLC mientras ejecutan tales tareas que consumen mucho ancho de banda.
...
Idealmente, preferiríamos que cada subproceso de flujo se ejecutará en una CPU diferente de la lista permitida de CPU. Sin embargo, la heurística actual en find_idlest_group() no permite esto durante la colocación inicial.

Por ejemplo, una vez que los primeros cuatro subprocesos se distribuyen entre las CPU permitidas del zócalo uno, el resto de los subprocesos comienzan a acumularse en estas mismas CPU cuando claramente hay CPU en el segundo zócalo que se pueden usar.

Después de la acumulación inicial en una pequeña cantidad de CPU, aunque el balanceador de carga finalmente se activa, lleva un tiempo llegar al balance {4}{4} e incluso puede que {4}{4} no sea estable, ya que observamos un montón de "efecto ping pong" entre {4}{4} a {5}{3} y viceversa antes de que se alcance un estado estable mucho más tarde (1 subproceso de transmisión por CPU permitida) y, por lo tanto, no se requiere más migración.

Podemos detectar esta acumulación y evitarla al verificar si la cantidad de CPU permitidas en el grupo local es menor que la cantidad de tareas que se ejecutan en el grupo local y usar esta información para distribuir la quinta tarea en el siguiente socket (después de todo, ¡el objetivo en esta ruta lenta es encontrar el grupo más inactivo y la CPU más inactiva durante la ubicación inicial!).

Lo que quiere decir Nayak es que hasta ahora la asignación se realizaba en la primera CPU del socket 1 y cuando ya no había subprocesos disponibles entonces se iba a la CPU del socket 2 para asignar recursos. Esto reduce la latencia, pero lógicamente merma el rendimiento como vamos a ver a continuación.

Intel y AMD tendrán un aumento de rendimiento significativo

AMD-Kernel-Linux-5.20

Si usamos el programa específico Stream memory benchmark el parche logra aumentar el rendimiento de media en algo más de un 40% en procesadores AMD Zen. Mientras, en servidores Intel Xeon la mejora es de nada menos que entre el 54% y el 82% en el mejor de los casos, que en esta ocasión corresponde a la copia de datos.

Intel-Linux-Kernel-5.20

Si tenemos en cuenta las pocas líneas de código que se necesitan para este cambio, vemos que la mejora es brutal, por lo que en cuanto el kernel 5.20 esté listo a finales de este verano los administradores de sistemas van a tener que implementar dichas mejoras y comprobar la subida de rendimiento y sus balances.

 

Artículos relacionados