Deaktivieren Sie Hyperthreading in der Windows 7-Registrierung

36439
Moab

Einige BIOS haben nicht die Möglichkeit, das Hyperthreading der CPU zu deaktivieren. Oder ein Werkzeug oder eine Software?

Ich kenne die msconfig-Startregisterkarte (erweiterte Optionen) und das Deaktivieren von Prozessoren dort. Ich bin nicht sicher, ob vollständige Kerne oder Hyperthreads deaktiviert werden oder wie Sie dies feststellen können.

32bit oder 64bit Windows 7

BEARBEITEN:

Nehmen wir an, es handelt sich um einen dualen Kern oder mehr mit Hyperthreading.

Im Gerätemanager werden auf meinem i5 Intel-Prozessor 4 Prozessoren angezeigt, die Sie auch nicht deaktivieren können.

17
Ich denke, das ist die unmögliche Frage des Monats. Moab vor 13 Jahren 5
Sie können es wirklich nicht im BIOS deaktivieren? Ist es die neueste Version? KCotreau vor 13 Jahren 0
Es ist ein HP-PC, der für verkrüppelte BIOS bekannt ist, unabhängig von der Version. Moab vor 13 Jahren 2
Nicht alle i5-Chips sind gleich aufgebaut, einige haben 4 physische Kerne und Hyper-Threading deaktiviert, während andere 2 Kerne und Hyper-Threading aktiviert haben. Normalerweise verwenden Notizbücher Hyper-Threading und Desktop-Chips sind eher eine Quad-Core-Variante. Verwenden Sie einen Desktop oder ein Notebook und kennen Sie das i5-Modell? Dustin G. vor 13 Jahren 1
Ich würde mir nicht allzu viele Sorgen um Hyperthreading machen. Seit dem P4 wurden große Verbesserungen erzielt. Die Leistung ist heutzutage nicht nachteilig. surfasb vor 13 Jahren 0
@Dustin G, es ist nicht spezifisch für einen Prozessor, i5 war ein Beispiel, offensichtlich ein armes, die Hauptfrage bleibt jedoch eine nicht-bios-Methode, um das Hyperthreading auf einem Intel-Prozessor zu deaktivieren. Moab vor 13 Jahren 0

3 Antworten auf die Frage

3
Breakthrough

Aus dem Intel Core Processor Datenblatt, Band 1, Seite 38:

Intel Hyper-Threading-Technologie

[...] Diese Funktion muss über das BIOS aktiviert werden und erfordert die Unterstützung des Betriebssystems.

Dies ist darauf zurückzuführen, dass Hyperthreading tatsächlich physische Hardware auf dem CPU-Die ist und daher nur auf Hardwareebene aktiviert / deaktiviert werden kann .

Wenn Sie wissen, welche Anwendung mit Hyperthreading nicht gut funktioniert, können Sie ein Tool wie StartAffinity verwenden, wenn Sie über XP verfügen.

Wenn Sie Windows 7 verwenden, gibt es einen integrierten startBefehl, der dies ausführen kann. Verwenden Sie den folgenden Befehl, um einen Prozess mit einer bestimmten Prozessoraffinität zu starten (wiederum wurde das /AFFINITYArgument nur in Windows 7 hinzugefügt):

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

Wo <mask>sollte durch die hexadezimale Maske für die Prozessoren, die Sie ausführen möchten, ersetzt werden (die Prozessormaske ist nur eine binäre Maske, die diese Affinität aktiviert / deaktiviert, so aktivieren 00000101 CPU0 und CPU2 und 00000010 nur CPU1).

Um den Hex-Wert zu berechnen, können Sie entweder die Binärmaske konvertieren oder die Summe von 2 zur Leistung der Kerne berechnen, auf denen das Programm ausgeführt werden soll (beginnend bei 0), und diesen Wert in Hexadezimal konvertieren.

Wenn ich beispielsweise ein System mit vier Kernen habe und möchte, dass der Prozess nur auf CPU0 und CPU2 ausgeführt wird, würde ich 2 0 + 2 2 = 1 + 4 = 5 hinzufügen . 5 in Hex konvertieren, was nur 5 ist, und Setze das als dein <mask>. Sie können auch 00000101 in Hex konvertieren. Wenn Sie nicht wissen, wie diese Basen konvertiert werden, können Sie diese Konvertierungstabelle verwenden .

Ich verstehe Affinität, aber dies wird einen Hyperthread nicht deaktivieren, sondern nur einen kompletten Kern. Ich glaube nicht, dass es innerhalb des Betriebssystems möglich ist, disaable zuzulassen. Nur Hyperthreading, nur im BIOS, aber einige BIOS haben diese Option nicht, meistens auf HP-PCs. Ich hatte gehofft, jemand könnte mich als falsch erweisen. Moab vor 13 Jahren 0
Jeder physische Kern erscheint im Betriebssystem als zwei logische Kernpunkte. Wenn Sie einen dieser * logischen * Kerne deaktivieren, wird das Hyperthreading effektiv deaktiviert, da Anweisungen nur an * einen * der beiden logischen Kerne gesendet werden. In diesem Fall wird also kein Hyperthreading ausgeführt. Die Befehlswarteschlange wird direkt an den physischen Kern gesendet. Breakthrough vor 13 Jahren 1
Ich verstehe es, aber es deaktiviert nur Hyperthreading für diesen einen Kern. Ich brauche beide behindert. Moab vor 13 Jahren 0
@Moab Dann aktivieren Sie einfach alle gerade oder ungeradzahlig nummerierten Kerne, um jeden anderen mithilfe der oben aufgeführten Masken zu deaktivieren. Wenn Sie also über vier logische Kerne verfügen, verwenden Sie als Hexmaske 00000101 oder 5 in Hex, um nur CPU0 und CPU2 als aktiviert zu setzen. Wenn Sie über 8 logische Kerne verfügen, lautet Ihre Bitmaske 01010101 oder 55 in Hex (um nur CPU0, 2, 4 und 6 zu aktivieren). Breakthrough vor 13 Jahren 1
Woher weiß ich, welche die hyperthreading sind, ungerade? Danke für Ihre Geduld. Moab vor 13 Jahren 0
@ Moab es ist technisch gesehen egal, solange Sie jeden anderen Kern deaktivieren. Jeder Satz von zwei logischen Kernen bildet die Thread-Handler für einen einzelnen physischen Kern. Breakthrough vor 13 Jahren 2
Jetzt muss ich meine Berechnungen auffrischen, vielen Dank. Moab vor 13 Jahren 0
Ich glaube nicht, dass es einen Registry-Hack gibt, aber ich werde Ihnen die akzeptierte Antwort geben. Moab vor 13 Jahren 0
2
Dustin G.

Das Deaktivieren von Hyper-Threading ist nur eine Angelegenheit des BIOS.

Ich gehe davon aus, dass Sie das Hyper-Threading deaktivieren möchten, weil Sie eine Anwendung haben, die nicht für diese Funktion optimiert ist und möglicherweise die Leistung verringert hat.

Bei der CPU-Nummerierung sind die physischen Kerne ungerade nummeriert - in einem Dual-Core-HT-System wären die Kerne 1 und 3 die "echten" CPUs. Wenn Sie in msconfig 2 Kerne auswählen, sind die CPUs 1 und 2 aktiviert, so dass Sie eine physische und logische (HT) CPU aktiviert haben. Dies würde Ihnen nicht helfen, wenn Sie Probleme mit Software haben, die Probleme mit HT hat.

Ja, aber Sie können den Task-Manager verwenden, um die Affinität für die CPUs 1 und 3 festzulegen. Ben Voigt vor 13 Jahren 0
Dustin G, das habe ich gedacht, aber es ist fast unmöglich, irgendwelche Artikel darüber zu finden. Vielen Dank. Moab vor 13 Jahren 0
0
E. Attia

Unter Windows ist es am einfachsten, die Affinität von explorer.exe zu ändern, da jeder Prozess, der von diesem Prozess gestartet wird, die Affinitätsmaske übernimmt. Es ist noch lange nicht perfekt, aber zumindest machen Sie dies nur einmal pro Sitzung.

Ich bin nicht sicher, ob dies die Frage beantwortet, da Prozessaffinität nicht dasselbe ist wie Hyperthreading. Doktoro Reichard vor 10 Jahren 0
Glücklicherweise basieren die Dinge nicht auf dem, was Sie sicher sind oder nicht, sondern wie sie in MSDN (beispielsweise) http://msdn.microsoft.com/de-de/library/windows/desktop/ms683194%28v=vs angegeben sind. 85% 29.aspx GetLogicalProcessorInformation gibt die Prozessaffinitäten für physikalische / logische Prozessoren an (dies ist ein exakter Weg). Bei Hyperthreading-Systemen mit 2 logischen Kernen ist SMT (z. B. Hyperthreading) Kern # 0 Bit 0 und 1, Core # 1, Bit 2 und 3 der Affinitätsmaske usw. (dies ist ein empirischer Weg). Ich wäre Ihnen dankbar, wenn Sie vermeiden könnten, Dinge herunterzudrehen, an denen Sie nur Intuitionen haben ... E. Attia vor 10 Jahren 0