Pregunta

Estoy construyendo una PC con el nuevo procesador Intel I7 quad core. Con hyperthreading activado, informará 8 núcleos en el Administrador de tareas.

Algunos de mis colegas dicen que hyperthreading hará que el sistema no sea confiable y sugiera apagarlo.

¿Puede alguna de ustedes, buenas personas, iluminarme a mí y al resto de los usuarios de stockoverflow?

  

Sigue: He estado usando hyperthreading constantemente, y ha sido perfecto. Sin inestabilidad en absoluto. Estoy usando:

  • Microsoft Server 2008 64 bit
  • Microsoft SQL Server 2008 64 bit
  • Microsoft Visual Studio 2008
  • Servidor Diskeeper
  • Muchos controles (Telerik, Dundas, Rebex, Resharper)
¿Fue útil?

Solución

Es probable que la estabilidad no se vea afectada, ya que la abstracción es de muy bajo nivel y el sistema operativo simplemente lo ve como otra CPU para proporcionar trabajo. Sin embargo, el rendimiento es otro asunto.

Honestamente, no puedo decir si este sigue siendo el caso, pero al menos cuando aparecieron las CPU con HT habilitado, hubo problemas conocidos con al menos algunas aplicaciones. Por ejemplo, se sabía que MySQL y las aplicaciones multiproceso como la aplicación Java que apoyo para mi trabajo diario tenían un rendimiento disminuido cuando HT estaba habilitado. Siempre recomendamos que se elimine, al menos para nuestro caso de uso particular de una aplicación empresarial del lado del servidor.

Es posible que esto ya no sea un problema, y ??en un entorno de escritorio es menos probable que sea un problema para la mayoría de los casos de uso. La capacidad de dividir el trabajo en la CPU generalmente llevaría a aplicaciones más receptivas cuando la CPU se utiliza en gran medida. Sin embargo, el cambio de contexto y la sobrecarga podrían ser una desventaja cuando la aplicación ya está muy enhebrada e intensiva en la CPU, como en el caso de un servidor de base de datos.

Otros consejos

De la cabeza se me ocurren algunas razones por las que sus colegas podrían decir esto.

  • Varios artículos sobre el rendimiento de SQL sufren bajo hyperthreading. Creo que termina haciendo demasiados cambios de contexto o intercambio de caché. no puedo recordar exactamente.

  • Al principio, pasar de un solo proceso a un multiproceso o más probablemente para la mayoría de las personas con procesos hipertrechados, dejó al descubierto muchos problemas de subprocesos. Condiciones de carrera, puntos muertos, etc., que nunca antes vieron. Aunque es un problema de código, algunas personas culparon a los procs.

¿Están haciendo las mismas afirmaciones sobre multi-core / multi-proc o simplemente sobre hyperthreaded?

En cuanto a mí, he estado desarrollando en una caja hipertrabada durante 4 años, el único problema ha sido un problema de bloqueo de interfaz de usuario de mi propia creación.

Hyperthreading marcará principalmente una diferencia en el comportamiento / rendimiento del planificador al enviar subprocesos a la misma CPU en lugar de diferentes CPU ...

Se mostrará en una aplicación mal codificada que no maneja las condiciones de carrera entre hilos ...

Entonces, generalmente es un mal diseño / código ... que de repente encuentra una condición de modo de falla

¿No es confiable? Lo dudo mucho. La única desventaja de hyperthreading que se me ocurre es el hecho de que si el sistema operativo no es consciente de ello , puede programar dos subprocesos en un procesador físico cuando otros procesadores físicos están inactivos, lo que degradará el rendimiento.

Hubo un problema con el servidor SQL y el hyperthreading para algunas consultas porque el servidor SQL tiene su propio programador, maxdop 1 resolvería eso

Independientemente del grado en que Windows sea inestable, es muy poco probable que hyperthreading contribuya significativamente (o ya habría sido una gran noticia).

He tenido una PC hyperthreading durante un par de años. No hay muchos núcleos, pero me ha funcionado bien.

Desearía tener datos de prueba para demostrar que sus colegas están equivocados, pero parece que es solo mi opinión frente a la de ellos en este momento. ;)

Los subprocesos en una CPU hiperprocesada comparten el mismo caché y, como tal, no sufren los problemas de consistencia de caché que puede tener una arquitectura de CPU múltiple. Sin embargo, si el desarrollador de una pieza de software está programando con múltiples cpus en mente, ellos (o deberían) escribir con semántica de lectura (iirc, ese es el término). es decir, todas las escrituras se eliminan de la memoria caché de inmediato.

Hasta donde yo sé, desde el punto de vista del sistema operativo, no ve el hyperthreading como algo diferente de tener núcleos múltiples reales. Desde el punto de vista del sistema operativo, no hay diferencia: está aislado.

Entonces, aparte del hecho de que los "núcleos adicionales" de hyperthreading no son "reales" (en el sentido estrictamente técnico) y no tiene el rendimiento completo de "real" Núcleos de CPU, no puedo ver que sea menos confiable. Más lento, tal vez, en algunos casos raros, pero no menos confiable.

Por supuesto, depende de lo que esté ejecutando. Supongo que algunas aplicaciones podrían bajar y amp; sucio " con la CPU y el hyperthreading podría confundirlos, pero eso probablemente sea bastante raro.

Yo mismo he estado ejecutando una PC con hyperthreading durante varios años y no he visto problemas de estabilidad.

¡Lo siento, no tengo más datos concretos!

Soy dueño de un sistema i7 y no he tenido ningún problema.

Si funciona con múltiples núcleos, funciona con hyperthreading.

La respuesta corta: sí.

La respuesta larga, como con casi todas las preguntas, es "depende". Depende del sistema operativo, el software, la revisión de la CPU, etc. Personalmente, he tenido que deshabilitar hyperthreading en dos ocasiones para que el software funcione correctamente (uno, con la aplicación Synergy y dos, con el instalador de Windows NT 4.0), pero su el kilometraje puede variar.

Siempre y cuando instale Windows detectando múltiples núcleos HT desde el principio (carga algunos controladores relevantes y demás), siempre puede deshabilitar (y volver a habilitar) HT '' después del hecho ''. Si tiene problemas de estabilidad extraños con un software específico que no puede resolver, no es difícil deshabilitar HT para ver si tiene algún impacto.

No lo deshabilitaría para empezar porque, francamente, probablemente funcionará bien en el 99.99% de su uso diario. Pero tenga en cuenta que sí, ocasionalmente puede causar comportamientos extraños, así que no lo descarte si está resolviendo algo muy extraño en el futuro.

Personalmente, he descubierto que el hyperthreading, aunque no causa ningún problema, tampoco ayuda mucho. Puede ser como tener un .1 extra de un procesador. En mi máquina HT en el trabajo, rara vez veo que mi CPU supera el 50%. No sé si HT ha mejorado con los procesadores más nuevos como el i7, pero no soy optimista.

Aparte de escuchar algunos informes sobre SQL Server, todo lo que puedo informar es positivo. Obtengo aproximadamente un 25% de mejor rendimiento en aplicaciones pesadas de subprocesos múltiples con HT activado. Nunca me he encontrado con un problema, y ??estoy usando un procesador HT de primera generación ...

Tarde a la fiesta, pero para futuras referencias;

Actualmente tengo un problema con esto con SQLServer. Básicamente, entiendo que Hyperthreading en el mismo procesador comparte el mismo L1 & amp; Caché L2, que puede causar problemas entre los dos. Citrix también parece tener este problema por lo que estoy leyendo.

Slava Ok escribió una buena publicación de blog en ella.

Estoy aquí muy tarde pero encontré esta página a través de Google. Puede que haya descubierto un problema muy sutil. Tengo un i7 950 con el servidor 2003 y es genial. Inicialmente dejé hyperthreading en el BIOS, pero durante algunas pruebas y empujando las cosas con fuerza, ejecuté un programa llamado "crashme". por Carrette. Este programa intenta bloquear un sistema operativo al generar un proceso y alimentarlo con basura para intentar ejecutarlo. Mi configuración dual de Opteron lo ejecutó para siempre sin problemas, pero el 950 se bloqueó en una hora. No se bloqueó por nada más a menos que hiciera algo estúpido, por lo que fue muy sorprendente. Por capricho apagué HT y ejecuté el programa nuevamente. Funciona toda la noche, incluso múltiples instancias. Una anécdota no significa mucho, pero pruébelo y vea qué sucede. Además, parece que el procesador está ligeramente más frío en cualquier carga dada si HT está apagado. YMMV.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top