El rendimiento de AMD Ryzen estaría viéndose afectado por un bug del scheduler de Windows 10

 

 

Un nuevo bug se ha encontrado en el scheduler de Windows 10, afectando negativamente al rendimiento de Ryzen. El bug descubierto se ha confirmado en las versiones de Windows 10, pero no en Windows 7, mientras que se desconoce todavia si Windows 8.1 podría estar afectado por el mismo problema.El problema residiría en que el scheduler de Windows 10 no diferencia entre los núcleos físicos de Ryzen y los hilos virtuales creados por la tecnología SMT de AMD, la cual proporciona dos hilos de ejecución por cada núcleo.

Cada núcleo de Ryzen funciona de manera que tiene asignado el numero máximo de instrucciones por hilo apoyándose en el secundiario (virtual) logrando así el máximo rendimiento posible en caso de necesitarse. En la teoría esto permite que si un núcleo está con una carga cercana al 100%, este segundo hilo pueda aprovechar los tiempos muertos para intercarlar cálculos, lo que suele significar en aprovechar entre un 20% y el 30% de este núcleo, cuando las tareas se dividen en multitud de hilos.

Es un caso muy similar al del Hyper-Threading de Intel que logra resultados similares, pero, en el caso del HT de Intel, Windows 10 reconoce los hilos creados por HT y solo les asigna las tareas en función de su carga, por lo que en la practica permite aprovechar mucho mejor esta tecnología y no satura los hilos HT con trabajos que deberían asignarse a los núcleos físicos.

En el caso del SMT Windows 10 no sabe diferenciar entre que núcleos son físicos y que hilos corresponden al SMT, por lo que asigna las tareas pensando que todos son núcleos físicos, por lo que un hilo SMT se puede encontrar con la carga que le correspondería a un núcleo físico provocando importantes cuellos de botella afectando al rendimiento final de Ryzen, algo que explicaría el problema de algunos juegos con Ryzen respecto a sus competidores Intel y por que en otros benchmark donde el trabajo va realizándose con los recursos disponibles de cada hilo por separado si se equiparan los resultados, ya que es fácil imaginarse que le pasaría a un juego si se le asigna un proceso grande de núcleo físico a uno de SMT, teniendo este solo entre el 20 y el 30% del potencial de proceso, cuello de botella seguido de una bajada de framerate importante.

Además de este problema, Windows 10 estaría calculando mal la cache disponible de los procesadores Ryzen, creyendo que estos tienen 136MB, cuando la realidad es que disponen de 20MB de L2+L3:

 

Windows 10 Scheduler Single Core Thread Mapping:

  • *————— Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
  • *————— Instruction Cache 0, Level 1, 64 KB, Assoc 4, LineSize 64
  • *————— Unified Cache 0, Level 2, 512 KB, Assoc 8, LineSize 64
  • *————— Unified Cache 1, Level 3, 16 MB, Assoc 16, LineSize 64 –
  • *————– Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 –
  • *————– Instruction Cache 1, Level 1, 64 KB, Assoc 4, LineSize 64 –
  • *————– Unified Cache 2, Level 2, 512 KB, Assoc 8, LineSize 64 –
  • *————– Unified Cache 3, Level 3, 16 MB, Assoc 16, LineSize 64

 

Esto explicaría de alguna manera por que los AMD Ryzen tienen problemas en determinado tipo de tareas y luego recuperan rendimiento cuando el SMT se desactiva, por ahora las únicas maneras de resolver el problema son usar Windows 7 o desactivar el SMT en los nuevos procesadores Ryzen, al menos hasta que Microsoft resuelva el problema de su scheduler y este reconozca que hilos pertenecen al SMT repartiendo mejor la carga.

Fuente: Wccftech