¿Un proceso que llena todos los núcleos lógicos tiene un impacto negativo en el rendimiento?

¿Un proceso que llena todos los núcleos lógicos tiene un impacto negativo en el rendimiento?

Debido al hiperprocesamiento, mi CPU tiene 2 procesadores lógicos por núcleo. Si entiendo correctamente la premisa del hyper-threading, permite que cada núcleo tenga un caché separado y un puntero de instrucciones para 2 subprocesos separados simultáneamente, pero nonoPermite la ejecución simultánea de 2 subprocesos por un solo núcleo. Como tal, básicamente mitiga la alta sobrecarga del intercambio de subprocesos, lo que significa que se reduce el impacto negativo en el rendimiento que se produce al tener más subprocesos en ejecución que núcleos para ejecutarlos. Sin embargo, todavía espero que hayaalgunogastos generales involucrados, yalgunoImpacto negativo en el rendimiento cuando se ejecuta, por ejemplo, 16 subprocesos en un sistema con solo 8 núcleos físicos.

Parece que el software que se ejecuta en mi sistema cree que tengo 16 núcleos de CPU, debido a mi hiperprocesamiento con 8 núcleos físicos. Hay algún software, como ciertos sistemas de compilación, que utilizan de forma predeterminada todos los núcleos disponibles para maximizar la paralelización. Sé que puedo especificar la cantidad de subprocesos mediante argumentos para el software en el que estoy pensando. ¿Estoy en lo cierto al pensar que ir más allá de 8 subprocesos no tendrá ningún beneficio para el rendimiento? ¿Estoy en lo cierto al pensar que ir más allá de 8 subprocesos en realidad impedirá el rendimiento? ¿Debo, por lo tanto, indicar a los programas que no utilicen más de 8 subprocesos?

Respuesta1

Eso depende.

En general, ejecutar un subproceso de software por subproceso de CPU proporcionará el mejor rendimiento. Regularmente veo aceleraciones del 10% al ejecutar un subproceso de software por núcleo de CPU, por lo que en lugar de tener un subproceso de software ejecutándose al 100%, tengo dos subprocesos de software, cada uno de ellos ejecutándose al 55%.

Pero también he visto un mejor rendimiento al ejecutarmenosprocesos que los núcleos de CPU si varios núcleos comparten el mismo caché. Sin embargo, esto es excepcionalmente raro.

Normalmente deberías usar los 16 subprocesos de la CPU, pero la única manera de saberlo con seguridad en tu sistema es midiendo.

información relacionada