Me encantan los parches del kernel de Linux que mencionan “masivamente”, usan signos de exclamación cuando hablan sobre el rendimiento y/o simplemente mencionan grandes aceleraciones. Muy a menudo, estos parches salen de Intel y la semana pasada enviaron otra gran serie de parches de optimización del rendimiento para mejorar bits adicionales de bajo nivel del kernel.
Los ingenieros de Intel han estado solucionando un cuello de botella dentro del código de red del kernel de Linux y descubrieron un problema de rendimiento relacionado con la concurrencia con la estructura de datos dst_entry. Para ir directo al grano, algunos puntos clave de los comentarios del parche:
Wangyang y Arjan informaron de un cuello de botella en el código de red relacionado con la estructura dst_entry::__refcnt. El rendimiento se reduce enormemente cuando aumenta la concurrencia en un dst_entry.
Esto sucede cuando hay una gran cantidad de conexiones hacia o desde la misma dirección IP. El punto de referencia memtier cuando se ejecuta en el mismo host que memcached amplifica esto enormemente. Pero incluso en conexiones de red reales, este problema se puede observar en una escala obviamente más pequeña (debido a las limitaciones del ancho de banda de la red en mi configuración, es decir, 1 Gb).
…
La combinación de estos dos cambios da como resultado ganancias de rendimiento en micro puntos de referencia y también en puntos de referencia de host local y memtier en red que hablan con Memcached. Es difícil cuantificar los resultados de referencia, ya que dependen en gran medida de la microarquitectura y la cantidad de operaciones simultáneas.La ganancia general de ambos cambios para localhost memtier varía de 1.2X a 3.2X y de +2% a %5% para operaciones en red en una conexión de 1 Gb.
¡¡¡Un micro benchmark que aplica la concurrencia maximizada muestra una ganancia entre 1.2X y 4.7X!!!
Los parches se están revisando y discutiendo actualmente a través de este hilo LKML.
Este fin de semana no pude evitar probar los parches yo mismo. Cuando se ejecuta con los parches puestos la sucursal “rcuref” en comparación con la línea principal de Linux 6.2, de hecho vi mejoras de rendimiento sorprendentes ahora al observar el rendimiento de memcached en el host local.
Para algunas pruebas rápidas, estaba usando el servidor dual Intel Xeon Platinum 8490H “Sapphire Rapids” con sus 240 subprocesos combinados mientras ejecutaba el desarrollo de Ubuntu 23.04 y comparaba el estado de Linux 6.2 con el de v6.2 con estos parches rcuref:
¡De hecho, algunas aceleraciones masivas para memcached! Este trabajo de optimización tampoco se limita solo al hardware de Intel, sino que también debería beneficiar a otros procesadores.
CockroachDB también pareció beneficiarse de este trabajo del núcleo rcuref en menor medida, entre otras cargas de trabajo limitadas que he probado hasta ahora en función de mi tiempo disponible.
En otras cargas de trabajo probadas, los resultados fueron prácticamente planos. Pero eso fue solo de una evaluación comparativa del fin de semana… Tendré más pruebas en los próximos días. Clear kernel de Intel también ha recogido estas optimizaciones de kernel, entre otras, por lo que estaré trabajando en una vista de escalado del rendimiento de Linux entre Xeon Sapphire Rapids y EPYC Genoa en algunas distribuciones de Linux también en la próxima semana o dos. En cualquier caso, es maravilloso ver todas las optimizaciones del kernel de Linux que siguen buscando los ingenieros de Intel, así como sus muchas optimizaciones y mejoras en el resto de la pila, desde los compiladores hasta otras bibliotecas clave. Estas optimizaciones de escalabilidad del kernel de Linux también serán aún más importantes y beneficiosas con los procesadores Sierra Forest de mayor número de núcleos el próximo año.