Hoy se publicó un nuevo conjunto de parches para habilitar la programación de clústeres para CPU híbridas x86. A su vez, este último intento de programación de clústeres para las CPU centrales modernas de Alder Lake y más nuevas está generando algunos pequeños beneficios de rendimiento en comparación con el código actual.
Los ingenieros de Intel intentaron previamente la programación de clústeres para Linux, pero terminó causando regresiones… Destaqué el problema en 2021 con la nueva programación de clústeres de Linux 5.16 que está causando regresión, lo que perjudica aún más a Alder Lake. Ahora, aunque esta última programación de clústeres x86 para CPU híbridas debería estar en mejor forma.
El ingeniero de Intel, Tim Chen, publicó la serie de parches de hoy y comentó allí:
“El dominio de programación de clúster no está habilitado en las CPU híbridas x86, ya que la lógica es Falta hacer un equilibrio de carga adecuado entre un clúster con CPU SMT en un solo núcleo y un clúster con varias CPU Atom.
Ricardo presentó recientemente una serie de parches que mejoraron en gran medida la lógica de equilibrio de carga entre los núcleos P y los núcleos E en las CPU híbridas x86.
https://lore.kernel.org/lkml/[email protected]/T/#m16ebc8de64dbf4c54adebab701b42b47805105f4Sin embargo, esa serie de parches no es suficiente para habilitar la programación de clústeres en CPU híbridas x86. Esta serie de parches proporciona algunas correcciones adicionales necesarias para equilibrar la carga entre clústeres. grupo programado que consta de CPU SMT de núcleos grandes y grupo programado de clúster que consta de CPU Atom Con estos parches aplicados además de la serie de parches de Ricardo, la carga se equilibra correctamente entre los clústeres de núcleo P y núcleo E. Las CPU inactivas se utilizan en el orden correcto:
1) CPU SMT en un núcleo P inactivo,
2) núcleo E inactivo,
3) CPU SMT no utilizada con un hermano ocupado.”
Con estos nuevos parches, el ingeniero de Intel encontró una mejora de hasta un pequeño porcentaje con su prueba de CPU híbrida P/E:
“Probé algunos puntos de referencia de un solo subproceso en Suite Phoronix que previamente mostró regresiones cuando se habilitó por primera vez la programación de clústeres. La programación de clústeres que utiliza esta serie de parches funciona tan bien como el núcleo de vainilla.
Subproceso único 6.3-rc5 con mejora de clúster
Programación comparativa en el rendimiento
(desviación de ejecución a ejecución)
——————————————————————————————-
tjbench (+/-0,08%) (+/-0,23%)-0,23%
PhPbench (+/-0,31%) (+/-0,89%)-0,39%
flac (+/-0,58%) (+/-0,22%) +0,17%
pybench (+/-3,16%) (+/-0,27 %) +2,55 %Para las pruebas comparativas de subprocesos múltiples, probé kernel build y tensor flow lite. La programación de clúster funcionó mejor para el caso de 10 subprocesos donde 6 subprocesos se ejecutan en los núcleos P, 2 subprocesos en un clúster Atom y 2 subprocesos en el otro clúster Atom. Mientras que el núcleo de vainilla tendrá 6 subprocesos en los núcleos P, 4 subprocesos en un clúster Atom. Aunque las diferencias son pequeñas y caen dentro de las variaciones de ejecución.
Multi Threaded 6.3-rc5 con mejora de clúster
Programación comparativa en rendimiento
(-#threads) (desviación de ejecución a ejecución)
——————————————————————————————-
Kbuild-8 (+/-2,90%) (+/-1,16%)-0,76%
Kbuild-10 (+/-3,08%) (+/-3,09%) +0,64%
Kbuild-12 (+/-3,28%) (+/-3,55%) +0,91%
Tensor Lite-8 (+/-4,84%) (+/-4,61%)-0,23%
Tensor Lite-10 (+/-0,87%) (+/-1,45%) +0,47%
Tensor Lite-12 (+/-1,37 %) (+/-1,04 %)-0,12 %”
Será interesante ver cómo funciona este nuevo intento de programación de clústeres, aunque es demasiado tarde para verlo en el ciclo v6.4, por lo que no se incluiría ahora hasta al menos v6.5. En cualquier caso, como tengo tiempo para probar los nuevos parches, los probaré en Alder Lake y Raptor Lake para ver cómo está afectando el rendimiento de Linux en una gama más amplia de cargas de trabajo.
Consulte este hilo de la lista de correo del kernel si está interesado en este último trabajo de programación de clúster para CPU híbridas de Intel.