Según un informe de Phoronix, se está desarrollando un nuevo programador de CPU para sistemas operativos Linux que disminuye la latencia del sistema y mejora el rendimiento en escenarios de baja carga. El nuevo programador, conocido como Nest, está diseñado para enfocar las cargas de trabajo con subprocesos ligeros hacia la menor cantidad posible de núcleos de procesamiento, en un esfuerzo por mantener las frecuencias de impulso en su punto máximo durante el mayor tiempo posible.
Esta estrategia es una gran desviación de la mayoría de los programadores de CPU que se utilizan hoy en día, que están optimizados para la saturación de múltiples núcleos. Esta estrategia es excelente en teoría, ya que distribuye de manera uniforme tantas tareas a tantos núcleos como sea posible, pero debido a las deficiencias arquitectónicas en las CPU modernas, esta estrategia no es el mejor uso de los recursos de la CPU.
El comportamiento de la velocidad del reloj en los procesadores de microchip modernos ha cambiado drásticamente durante la última década. En el pasado, todo lo que realmente tenía era una velocidad de reloj base única que el chip tenía para aplicaciones bajas, medias y pesadas, junto con un algoritmo de refuerzo turbo muy simple que activaba una frecuencia específica en cargas de trabajo medias o pesadas siempre que hubiera suficiente. margen térmico y eléctrico de sobra.
Pero hoy en día, el comportamiento de la frecuencia de la CPU se ha vuelto mucho más complicado, ya que los chips pueden ejecutarse a una cantidad casi infinita de diferentes velocidades de reloj, junto con varios niveles de estados de suspensión en los que los núcleos pueden entrar cuando no se utilizan.
Estas nuevas características son asombrosas para aumentar la eficiencia, pero pueden introducir un retraso no deseado causado por retrasos en los ajustes de la velocidad del reloj de la CPU. Una CPU no puede despertarse del modo de suspensión instantáneamente; necesita algo de tiempo para despertarse.
Nest soluciona estos problemas dando prioridad a los núcleos utilizados más recientemente en un sistema que ya se está ejecutando a velocidades máximas de reloj turbo debido al trabajo realizado anteriormente. De esta forma, Nest puede seguir enviando trabajo a los núcleos que ya están funcionando en sus relojes operativos más altos para contrarrestar cualquier retraso en el ajuste de la velocidad del reloj y mantener el rendimiento de la CPU lo más alto posible.
Nest hace esto al «anidar» núcleos que sabe que se están usando activamente o que se usaron recientemente, y cree que estos núcleos serán útiles en un futuro cercano. Nest hace esto con dos grupos a los que llama «Nido principal» y «Nido de reserva». El nido principal es donde residen todos los núcleos activos y los núcleos activos previstos para cargas de trabajo ligeras a moderadas. Reserve Nest es donde se encuentran todos los núcleos no utilizados.
Nest agregará o eliminará activamente núcleos del nido principal cuando sea necesario y centrará todo el trabajo ligero y moderado en estos núcleos. Incluso hará ping a algunos de los núcleos para asegurarse de que no se vayan a dormir si hay un pequeño momento de inactividad. Nest solo traerá los núcleos que residen en el nido de reserva al nido principal si los núcleos activos no pueden hacer el trabajo de manera eficiente o en absoluto.
Básicamente, Nest es lo suficientemente inteligente como para saber qué núcleos cree que serán útiles en el futuro cercano, para el trabajo futuro. Según los informes, Nest ha proporcionado un aumento del rendimiento del 10% al doble en cargas de trabajo ligeras a moderadas en computadoras de escritorio AMD, servidores AMD y servidores Intel.
Será interesante ver cómo se desarrolla este programador en Linux. Técnicamente, Windows 10 y 11 tienen algo de este comportamiento para los procesadores AMD Ryzen, donde el programador de tareas priorizará núcleos físicos específicos para cargas de trabajo con subprocesos ligeros. Pero Nest parece ser un programador mucho más avanzado y capaz, que actúa con mucha más fluidez y no está limitado por las propiedades de núcleos específicos.
Con suerte, pronto podremos verlo en acción en un sistema Linux del mundo real, pero por ahora, todavía se está investigando.