Deshabilite Hyperthreading en el registro de Windows 7

18

Algunos BIOS no tienen la opción de desactivar Hyperthreading de la CPU, ¿hay alguna forma de desactivarlo en el Registro de Windows 7? ¿O una herramienta o software?

Sé acerca de la pestaña de inicio de msconfig (opciones avanzadas) y la desactivación de los procesadores allí, no estoy seguro de si deshabilita los núcleos completos o hyperthreads, o cómo saberlo.

32 bits o 64 bits de Windows 7

EDITAR:

Supongamos que es un núcleo dual o más con hyperthreading.

En el Administrador de dispositivos muestra 4 procesadores en mi procesador Intel i5, y tampoco puedes desactivarlos, dang.

Moab
fuente
55
Estoy pensando que esta es la pregunta imposible del mes.
Moab
¿Realmente no puedes desactivarlo en el BIOS? ¿Es la última versión?
KCotreau
2
Es una PC HP, conocida por las biografías paralizadas, sin importar la versión.
Moab
1
No todos los chips i5 se crean de la misma manera, algunos tienen 4 núcleos físicos e Hyper-threading deshabilitados, mientras que otros tienen 2 núcleos e Hyper-threading habilitados; por lo general, los cuadernos de notas usan Hyper-threading y los chips de escritorio tienen más probabilidades de ser una variante de cuatro núcleos. ¿Está utilizando una computadora de escritorio o portátil y conoce el modelo i5?
Dustin G.
No me preocuparía demasiado por Hyperthreading. Ha visto grandes mejoras desde el P4. No absorbe el rendimiento hoy en día.
surfasb

Respuestas:

3

De la hoja de datos del procesador Intel Core, volumen 1 , página 38:

Tecnología Intel Hyper-Threading

[...] Esta característica debe habilitarse usando el BIOS y requiere soporte del sistema operativo.

Esto se debe a hyperthreading es hardware físico real en el dado de la CPU, y por lo tanto se puede activar / desactivar en un nivel de hardware única .

Si sabe qué aplicación no funciona bien con hyperthreading, puede usar una herramienta como StartAffinity si tiene XP.

Si usa Windows 7, hay un startcomando integrado que puede hacer esto. Use el siguiente comando para iniciar un proceso con una afinidad de procesador particular (nuevamente, el /AFFINITYargumento solo se agregó en Windows 7):

start /AFFINITY <mask> "C:\yourprogram.exe" 

Donde <mask>debe reemplazarse con la máscara hexadecimal para los procesadores que desea ejecutar (la máscara del procesador es solo una máscara binaria que habilita / deshabilita esa afinidad, por lo que 00000101 habilita CPU0 y CPU2, y 00000010 habilita solo CPU1).

Para calcular el valor hexadecimal, puede convertir la máscara binaria o tomar la suma de 2 a la potencia de los núcleos en los que desea ejecutar el programa (a partir de 0), y convertir ese valor a hexadecimal.

Por ejemplo, si tengo un sistema de cuatro núcleos y solo quiero que el proceso se ejecute en CPU0 y CPU2, agregaría 2 0 + 2 2 = 1 + 4 = 5. Convertir 5 a hexadecimal, que es solo 5, y establece eso como tu <mask>. También podría convertir 00000101 a hexadecimal también. Si no sabe cómo convertir estas bases, puede usar esta tabla de conversión .

Penetración
fuente
Entiendo la afinidad, pero esto no deshabilitará un hyperthread, solo un núcleo completo. No creo que sea posible deshabilitar dentro del sistema operativo Solo hyperthreading, solo en la BIOS, pero algunas BIOS no tienen esa opción, principalmente en las PC de HP, esperaba que alguien pudiera probarme que estaba equivocado.
Moab
1
Cada núcleo físico aparece en el sistema operativo como dos lógicos. Si deshabilita uno de esos núcleos lógicos , deshabilita efectivamente el hyperthreading, ya que las instrucciones solo se envían a uno de los dos núcleos lógicos, por lo que no se realiza ningún hyperthreading; la cola de instrucciones se envía directamente al núcleo físico.
Avance el
Lo entiendo, pero solo deshabilita el hyperthreading para ese núcleo. Necesito ambos deshabilitados.
Moab
1
@Moab Luego, solo habilita todos los núcleos pares o impares para deshabilitar los demás, utilizando las máscaras que enumeré anteriormente. Entonces, si tiene cuatro núcleos lógicos, use 00000101, o 5 en hexadecimal, como su máscara hexagonal para configurar solo CPU0 y CPU2 como habilitados. Si tiene 8 núcleos lógicos, su máscara de bits sería 01010101 o 55 en hexadecimal (para habilitar solo CPU0, 2, 4 y 6).
Avance el
2
@Moab técnicamente no importa, siempre y cuando deshabilite cualquier otro núcleo. Cada conjunto de dos núcleos lógicos conforman los manejadores de subprocesos para un solo núcleo físico.
Avance el
2

Deshabilitar Hyper-threading es un asunto solo de BIOS.

Supongo que le gustaría deshabilitar Hyper-Threading porque tiene una aplicación que no está optimizada para esta función y puede tener un rendimiento reducido.

Al observar la numeración de la CPU, los núcleos físicos tienen un número impar, por lo que en un sistema HT de doble núcleo, los núcleos 1 y 3 serían las CPU "reales". Si selecciona 2 núcleos en msconfig, las CPU 1 y 2 se habilitarán para que tenga una CPU física y lógica (HT) activa; esto no lo beneficiaría si tiene problemas con el software que tiene problemas con HT.

Limpiar el polvo.
fuente
Sí, pero ... podría usar el Administrador de tareas para establecer afinidad con las CPU 1 y 3.
Ben Voigt
Dustin G, eso es lo que pensé, pero encontrar artículos sobre esto es casi imposible. Gracias.
Moab
0

En Windows, la forma más fácil es cambiar la afinidad de explorer.exe ya que cada proceso que se inicie desde allí heredará la máscara de afinidad. Todavía está lejos de ser perfecto, pero al menos lo haces solo una vez por sesión.

E. Attia
fuente
No estoy seguro de que esto responda la pregunta, ya que la afinidad del proceso no es lo mismo que Hyperthreading.
Doktoro Reichard
Afortunadamente, las cosas no se basan en lo que está seguro o no, sino en cómo se especifican en MSDN (por ejemplo) msdn.microsoft.com/en-us/library/windows/desktop/… GetLogicalProcessorInformation proporciona al proceso afinidades de mecanizado físico / lógico procesadores (esta es una forma exacta). En sistemas hyperthreading con núcleos de 2 lógicos SMT (como hyperthreading) Core # 0 es bit 0 y 1, Core # 1 bit 2 y 3 de la máscara de afinidad, etc. (esta es una forma empírica). Estaría agradecido si pudieras evitar el voto negativo de cosas sobre las que solo tienes intuiciones ...
E. Attia