NVIDIA confirma que limitar el número de subprocesos en la CPU aumenta el rendimiento en los juegos

Desde hace años la gran mayoría de títulos que hay en el mercado se planifican de manera que llegue al mayor número de plataformas, en especial a las consolas. Con esto en mente, es normal que los desarrolladores se enfoquen en un número de núcleos a tratar, en pleno 2024 y en concreto, de 8 Cores debido a los SoC de AMD para Sony y Microsoft. Pero de un tiempo a esta parte, la gran mayoría de CPU para PC tiene más, lo cual, según NVIDIA, impide que el rendimiento escale, y por ello, deberíamos limitar el número de subprocesos para lograr más FPS.

Al tener más y más núcleos las CPU la balanza del rendimiento se ha descompensado en los juegos precisamente porque estos no están, en su gran mayoría, preparados para trabajar con tantos subprocesos. NVIDIA da unos consejos cuando afirma que los P-Core, E-Core, cachés asimétricas y las técnicas de administración de energía merman los FPS que podemos llegar a conseguir. ¿Cómo solucionarlo? Nos dan una serie de claves.

Limitar el número de subprocesos de nuestra CPU mejora el rendimiento en FPS según NVIDIA

NVIDIA-limitar-subprocesos-CPU-aumento-FPS-juegos

Los algoritmos tradicionales para determinar el número de subprocesos totales en los juegos se están quedando atrás precisamente por culpa de las consolas. El hardware de PC sigue escalando, pero los desarrolladores priman por norma general la PS5 y Xbox, de manera que cuentan con 6 núcleos para todo lo relacionado con el juego en cuestión, y dos los reservan para procesos críticos del sistema, lo cual en PC es quedarse muy corto y más con lo comentado.

Por ello, NVIDIA afirma que en juegos muy dependiente de CPU tener más núcleos degrada el rendimiento hasta en un 15%, o lo que es igual, podríamos ganar un 15% de FPS si tuviésemos un número de subprocesos más pequeños. Pero como esto no es exacto y depende mucho del desarrollador, NVIDIA nos da 5 consejos para solucionar los problemas de rendimiento según el título al que juguemos.

¿Por qué el rendimiento no aumenta a pesar de tener más núcleos al cambiar de CPU?

Carrera de Intel vs NVIDIA vs AMD por mercado de IA

Es una casuística que a veces se da, y es por los motivos descritos, salvo por el hecho de que la frustración por cambiar de CPU a una de más núcleos y frecuencia similar no ha ayudado más que a vaciar el bolsillo. Por eso, NVIDIA nos da 5 claves para entender este efecto:

  • Rendimiento del hardware: las CPU con mayor número de núcleos a veces tienen velocidades más bajas. Reducir la cantidad de subprocesos puede permitir que los núcleos activos aumenten su frecuencia.
  • Contención de recursos de hardware: reducir el número de subprocesos a menudo puede disminuir la presión sobre el subsistema de memoria, lo que reduce la latencia y permite que las cachés de la CPU sean más eficientes. Esto es especialmente cierto para las arquitecturas basadas en chiplets que no tienen una caché L3 unificada. Los subprocesos que se ejecutan en diferentes chiplets pueden provocar una gran destrucción del rendimiento de la caché.
    • La ejecución de subprocesos en ambos núcleos lógicos de un único núcleo físico (hiperproceso o subprocesos múltiples simultáneos) puede agregar latencia, ya que ambos subprocesos deben compartir el recurso físico (cachés, canales de instrucciones, etc.). Si un subproceso crítico comparte un núcleo físico, su rendimiento puede disminuir. Centrarse en los recuentos de núcleos físicos en lugar de los recuentos de núcleos lógicos puede ayudar a reducir esto en sistemas de recuento de núcleos más grandes.
  • Contención de recursos de software: los bloqueos y los atómicos pueden tener una latencia mucho mayor cuando muchos subprocesos acceden a ellos simultáneamente, lo que aumenta la presión de la memoria. Compartir en falso puede exacerbar esto.
  • Problemas de programación del sistema operativo: una suscripción excesiva de subprocesos a núcleos activos genera una gran cantidad de cambios de contexto que pueden resultar costosos y ejercer una presión adicional sobre el subsistema de memoria de la CPU.
    • En sistemas con núcleos P/E, el trabajo se programa primero en los núcleos P físicos, luego en los núcleos E y luego en los núcleos P lógicos hiperprocesados (HyperThreading o SMT). El uso de menos subprocesos que el total de núcleos físicos permite que los subprocesos en segundo plano, como los subprocesos del sistema operativo, se ejecuten en los núcleos E sin interrumpir los subprocesos críticos que se ejecutan en los núcleos P al ejecutarse en sus núcleos lógicos hermanos.
  • Administración de energía: reducir la cantidad de subprocesos puede permitir que se estacionen más núcleos, lo que ahorra energía y potencialmente permite que los núcleos restantes se ejecuten a una frecuencia más alta.
    • Se ha observado que el estacionamiento de núcleos es sensible a un alto número de subprocesos, lo que provoca problemas con subprocesos cortos y con ráfagas que no logran activar la heurística para desbloquear los núcleos. Tener una ejecución más larga y menos subprocesos ayuda a los algoritmos de estacionamiento centrales.

Soluciones a este problema para poder aumentar los FPS en nuestra CPU

NVIDIA-reducir-el-número-de-hilos-y-subprocesos-para-optimizar-el-Overhead

Tres soluciones generales y una específica que nos ofrece NVIDIA:

  • Equilibrio de carga dinámico de recuento de subprocesos.

  • Modelos de threading que escalan con el número de núcleos.

  • Utilice API de QoS y prioridad de subprocesos para ayudar a dirigir los subprocesos a núcleos específicos.

Lo más sencillo según NVIDIA es reducir la cantidad de subprocesos que un juego puede usar, de manera que se reduzca el llamado Overhead, el cual según los verdes llegan por procesos críticos. Por ello, y dada la variedad de juegos, aseguran que tendremos que probar con distintos recuentos de subprocesos para encontrar el punto óptimo de rendimiento.

Dicho esto, hablan en concreto sobre el HyperThreading en Intel y AMD:

Asegúrese de probar el hyperthreading para ver si debe alinearse con los núcleos físicos o lógicos al enumerar los subprocesos en los diferentes sistemas. Hyperthreading a menudo ayuda en sistemas con un número bajo de núcleos que no tienen suficientes núcleos físicos para ejecutar eficientemente su carga de trabajo, pero puede obstaculizar el rendimiento en sistemas con un número de núcleos más grande.

Todo esto evidencia el por qué Intel no quiere pasar de 8 núcleos en P-Cores para sus arquitecturas y por qué AMD mantiene en sus X3D de mayor rendimiento un CCD con 8 Cores. Por tanto, la mejor manera de maximizar el rendimiento, como algunos ya sabíamos de antaño, es comprobar in situ el número de subprocesos donde más se logre rendimiento. En este caso, suele pasar que más no es mejor.