¿Qué razones puede tener un programador para querer que el hipervínculo esté desactivado?

12

Mi empresa acaba de comprar computadoras nuevas para reemplazar las viejas máquinas con Windows XP de 2GB. Alguien en mi equipo se dio cuenta de que venían con el subproceso deshabilitado y les dijo a todos que reiniciaran y lo encendieran. ¿Hay algún beneficio en la programación en una máquina con hyperthreading deshabilitado?

    
pregunta Pops 31.03.2011 - 16:26

7 respuestas

14

Sí, he trabajado en una aplicación que funciona mejor cuando se ejecuta en una máquina con HT desactivado .

Lo que sucedió fue que el código original crearía el doble de subprocesos cuando se ejecutara en una máquina con subprocesos (lo que supondría que es una especie de punto de HT). Sin embargo, el rendimiento de esos subprocesos fue muy sensible a la cantidad de caché disponible para el subproceso. Con el doble de subprocesos que luchan por una cantidad fija de caché, el caché disponible por subproceso era demasiado bajo y se produjo una paliza: habría un montón de fallas de caché más, un mayor número de accesos a la memoria principal, y el rendimiento tuvo un impacto sustancial en comparación con la ejecución con menos subprocesos y más caché por subproceso (que es lo que obtienes si ejecutaste la aplicación en una máquina con HT deshabilitado).

La solución definitiva fue hacer que la aplicación verificara mejor la plataforma HW y tomar el tamaño de la memoria caché y la cantidad de memoria caché que se considera necesaria para cada subproceso a la hora de decidir cuántos subprocesos crear. En cualquier caso, el problema desapareció rápidamente con la siguiente generación de CPU, que duplicó el tamaño de la memoria caché (y en realidad empezamos a ver un beneficio modesto de HT en ese momento). Sin embargo, todo el episodio dejó un legado largo y duradero de recomendar que HT siempre se deshabilite en la plataforma cualquiera en la que se haya ejecutado nuestro software, y el hecho de que "la máquina no tiene HT habilitado lo tiene". ? "respuestas a cualquier problema de rendimiento. (Creo que el problema fundamental es que la mayoría de los no geeks simplemente no entienden lo que realmente es HT).

    
respondido por el timday 22.07.2011 - 20:47
11

No conozco los detalles técnicos, pero aparentemente si una aplicación (o el sistema operativo) no está optimizada para el subproceso, el subproceso puede disminuir el rendimiento.

Incluso Intel recomienda apagarlo en este caso:

  

Las siguientes operaciones de escritorio   No se recomienda el uso de sistemas.   con tecnología Hyper-Threading. Si   Estás usando uno de los siguientes   sistemas operativos de escritorio, es   Se aconseja que deshabilites.   Tecnología Hyper-Threading en el   programa de configuración del BIOS del sistema: [...]

(Fuente: enlace )

Entonces, tal vez el fabricante (o el proveedor) haya querido tener cuidado.

    
respondido por el sleske 31.03.2011 - 16:38
6

Más que probable, el OEM estaba siendo conservador. Los OEM a menudo se envían con funciones avanzadas deshabilitadas (como HT, bit No-Execute, vt, etc.) apagadas. La razón es que algunas circunstancias excepcionales pueden hacer que esas configuraciones fallen, y las personas que realmente quieren las funciones pueden activarlas con la misma facilidad.

Además, algunos errores raros en el sistema operativo han llevado a problemas de seguridad potenciales cuando algunas características están habilitadas. La tecnología de virtualización, por ejemplo, una vez tuvo tal problema. Entonces, es solo que el vendedor es conservador.

Hyperthreading es generalmente útil para escritorios interactivos, como las máquinas de programación. Sin embargo, es posible que algunas personas deseen desactivarlo si sus aplicaciones se ejecutarán en servidores sin HT. Solo para reducir las posibles diferencias de hardware.

    
respondido por el Erik Funkenbusch 31.03.2011 - 18:06
5

Hyperthreading no agrega nuevos núcleos a la CPU. Todavía tiene una unidad aritmética / lógica, una unidad de punto flotante (...) por núcleo. Entonces, si tiene múltiples procesos / subprocesos que hacen cosas muy diferentes, HTT puede mejorar el rendimiento. Pero si tiene varios subprocesos que hacen más o menos las mismas cosas (lo que no es raro en las aplicaciones de procesamiento de números), el rendimiento puede sufrir mucho de HTT.

    
respondido por el nikie 23.07.2011 - 16:41
2

¿Tal vez problemas de coherencia de caché en código multihilo masivamente? Si tiene cachés de CPU discretos, teóricamente es posible que dos subprocesos tengan los mismos datos en caché y los modifiquen al mismo tiempo con diferentes valores. Si tiene un caché unificado en algún punto entre las CPU y la memoria principal (ya sea L2 o L3), es probable que exista algún mecanismo que lo impida, pero en las CPU de gama baja con cachés más pequeños, tal vez no.

Alternativamente, puede ser posible que al habilitar el subprocesamiento en chips que no lo admiten, se genere un código durante la POST, por lo que el proveedor de BIOS simplemente lo deja fuera porque no sabe qué tipo de CPU tendrá el sistema.

    
respondido por el TMN 31.03.2011 - 18:29
0

Una razón no para desactivar el subprocesamiento en una máquina desarrolladora es que puede ocultar algunos errores sutiles de subprocesos múltiples. Pero esto solo se aplica realmente en una máquina de un solo procesador de un solo núcleo. Multi-core expondrá, en todo caso, más errores de subprocesos múltiples durante la prueba.

OTOH, dudo que vea un procesador de un solo núcleo con hyperthreading desactivado de forma predeterminada. Mi voto es sobre la respuesta de Sleskes.

    
respondido por el Steve314 22.07.2011 - 16:54
0

Se ha escrito una gran cantidad de software antiguo en máquinas de un solo núcleo, y es posible que haya tenido errores al ejecutarse en una máquina multinúcleo. Probablemente, la instrucción estaba realmente destinada a decir "Esto no funciona en máquinas con varios núcleos", es solo que durante mucho tiempo, Hyperthreading fue la única máquina con varios núcleos que vería en uso común.     

respondido por el JohnB 23.07.2011 - 11:14

Lea otras preguntas en las etiquetas