Xeon 1241 v3 und Hyper-Threading

Geschäftsführer

Cadet 4th Year
Registriert
Feb. 2011
Beiträge
71
Hallo Gemeinde,

ich habe mal wieder eine Frage, die hoffentlich nicht zu abwegig ist. Steinigt micht bitte also nicht.

Ich habe als CPU den Xeon 1241 v3 und möchte auf meinem externen Alphacool-Display die Auslastung der Kerne anzeigen lassen.

Nun zeigt mir Windows aber aufgrund des Hyperthreadings ja insgesamt acht Kerne an. Tatsächlich habe ich doch aber nur vier Kerne.

Soweit liege ich doch hoffentlich noch nicht falsch.

Ich könnte mir nun auf meinem Display alle acht Kerne anzeigen lassen, was mir jedoch zu unübersichtlich wird.

Mir ist eigentlich nur die Auslastung der vier tatsächlichen Kerne wichtig. Muß ich nun z.B. die Kerne 1 und 2 addieren für die Auslastungsberechnung oder 1 und 5 ? Diese Lösung ergibt aber für micht wiederum keinen Sinn, weil bei Stresstest alle acht Kerne mit 100% laufen und sodann meine Auslastung 200% (????) betragen würde. Einzelne Kerne völlig zu ignorieren finde ich aber auch nicht richtig.

Steh hier irgendwie voll auf dem Schlauch.

Ich danke euch.
 
Geht nicht, die 4 Kerne sind bei aktivem HT wie Schrödingers Katze, du weißt nicht, welcher Kern zu welchem Thread gehört, das regelt Windows im ms Takt hin und her. Intern "weiß" das System natürlich welcher der 4 physischen Kerne nun arbeitet, eine Möglichkeit das dem Nutzer anzuzeigen kenne ich nicht.

Du kannst höchstens die Gesamtauslastung anzeigen lassen (neben den einzelnen, aber das passt ja nicht auf's Display).

Lässt man z.B. mit Prime einen Thread auslasten, kann man im Taskmanager beobachten, dass die 100% Auslastung von Thread zu Thread wechselt, Gesamtauslastung dann >12,5%.
 
Zuletzt bearbeitet:
Ich danke dir für die Info.

Also bleibt mir nur die Möglichkeit alle acht Kernanzeigen auf das Display zu quetschen.

Ich gehe mal davon aus, daß das Deaktivieren des Hyperthreadings eine absolut bekloppte Idee wäre (damit mir Windows nur 4 Kerne anzeigt)?

Grüße
 
Äh ja ^^
Das wäre "suboptimal" denn dann hättest du dir auch gleich einen günstigen i5 kaufen können ;)
 
Ich würde promashup's Meinung teilen, wenn ich selber an meinem i7 nicht folgendes beobachtet hätte:
Ich lasse mir meine CPU-Auslastung auf meiner G19-Tastatur anzeigen. Spiele ich Mafia II passiert folgendes: Das Spiel lastet nur! jeden zweiten Thread aus. Es ist zu sehen, dass #1 ausgelastet ist, #2 garnicht, #3 ausgelastet, ... Zudem sind die Temperaturen der Threads #1 und #2 respektive #3 und #4, #5 und #6 sowie #7 und #8 identisch.
Das ist ein Indiz, dass die Threads #1 und #2 zum ersten Kern gehören. (Gilt für den i7-930)
 
Zuletzt bearbeitet:
Du kannst nicht unterscheiden welcher angezeigte Kern per HT emuliert wird. Aus Sicht des laufenden Programms ist es ja auch egal. Das was dir Windows anzeigt ist übrigens nicht die tatsächliche Auslastung sondern die reservierte Rechenzeit. Die tatsächliche Auslastung der ALUs herauszufinden ist nicht so ohne weiteres möglich bzw. für den Benutzer nicht vorgesehen.
 
Geschäftsführer schrieb:
Also bleibt mir nur die Möglichkeit alle acht Kernanzeigen auf das Display zu quetschen.

Zeigt HWINFO nicht 4 Cores only an? Ich kann das leider nur @Home nachprüfen und nicht im Hier und Jetzt.

Edit: Bild eingefügt
hwinfo.jpg
 
Zuletzt bearbeitet:
@cyberfoxy Das mag sein, dass das unter Mafia II für einige Zeit die selben Threads sind, die ausgelastet bleiben, in der Tat bleibt das aber nicht bei allen Programmen die ganze Zeit so, d.h. wenn er sagen wir mal Thread 1,3,5,7 einblendet und diese dann wie erwartet ausgelastet werden, kann es sein, dass ein paar Minuten später, wenn mal ein Hintergrunddienst lief und Windows die Aufteilung regeln musste, plötzlich die Auslastung der Threads in den Keller geht und bei genauer Betrachtung der anderen festzustellen ist, dass dann die Threads 2,4,6,8 verwendet werden, nur mal als Beispiel.
 
Einige Programme zeigen doch nur die Kernauslastung an. Kannst du die nicht an das Display 'durchschleifen'? Ich habe ein Gadet / eine Minianwendung laufen, die mir nur die Auslastung der vier Kerne meines i7 anzeigt.
 
Das ist eigentlich auch unsinnig nur die 4 reinen Kerne sich anzusehen. Da durch HT jeder Kern entsprechend durch zusätzliche Registersätze und ein komplettes Steuerwerk erweitert wurden. Wenn das BS und deren Anwendungen mit HT umgehen können, kannst du eine deutlich höhere Performance bekommen. Es sind natürlich keine 8 Kerne dann.

Wenn ein Programm HT nicht benutzen kann, wirst du es schon sehen, welche 4 Kerne bei 100% sind. Außerdem kannst du auch bei der Prozentanzeige es sehen, wenn 50% ausgelastet ist und der PC langsamer reagiert usw.

Das war cyberfoxy sagt, kann passen, hab auch mal gelesen, dass:

0 Kern - richtiger Kern
1 Kern - HT
2 Kern - richtiger Kern
3 Kern - HT
4 Kern - richtiger Kern
5 Kern - HT
6 Kern - richtiger Kern
7 Kern - HT

in der Regel ist. Und irgendwo in den tiefen der Systemsteuerung kann man die Auslastung der Kerne sich anzeigen lassen und dann nimmt man die ungeraden Kerne einfach raus und lässt sich nur 0, 2, 4, 6 anzeigen. Aber da z.B. Win 7 und 8 mit HT auch umgehen können, würde wahrscheinlich Windows, wenn die reinen Kerne ausgelastet sind, die HT einfach benutzen.

Man muss aber erwähnen, dass komplexere Programme, sehr oft mit HT arbeiten können. Deswegen sich nur die 4 reine Kerne anzusehen überhaupt keinen Sinn ergibt. Bei Games bringt es außer Watch Dogs kaum etwas, da würde das deaktivieren sogar helfen. Die Frage ist jetzt natürlich, geht es um Games oder komplexere Programme? Bei alles andere pennt ja der Xeon eh ein. ;)
 
Zuletzt bearbeitet:
1: Immer Thread 1 + 2 (3 + 4 etc.) sind ein Kern.
2: Windows weiß dass und lastet zunächst Thread 1 + 3 + 5 + 7 aus.
3: Die Auslastung gibt das Verhältnis zwischen Leerlaufprozess und Nutzprozess an.
4: Jeder Thread braucht immer was zu tun (Nutz oder Leerlauf)

-> Windows weiß nicht wie stark ein Kern nun wirklich ausgelastet ist (kann es auch nicht), Es kann dir nur sagen: Auf Thread 1 läuft zu 50% der Leerlauf Prozess und zu 50 % ein Nutzprozess. Der kann aber auch z.B. nur eine Endlosschleife sein -> der Kern selbst hat so gut wie nix zu tun, totzdem ist die Auslastung bei 100 %. Hat also noch genug Einheiten für einen zweiten Thread übrig. Der kann auch nur eine Endlosschleife sein, also auch wenig zu tun. Heißt, du hast zwar zwei mal 100 % da stehen ,die CPU lang weilt sich aber.
-> Die Auslastung ist kein Maß dafür wie viel ein Kern wirklich zu tun hat.

Bsp. Du sollst ganz oft hintereinander schnell die Zahl 2 schreiben, das strengt dich kaum an, braucht aber deine Volle Aufmerksamkeit. Nutzung des Gehirns fast gleich null, aber Auslastung bei 100 %
 
Zuletzt bearbeitet:
Soweit ich weiß sind Kern 0, 2, 4 und 6 die "echten" Kerne und 1,3,5 und 7 die per HT emulierten. Hab mich länger in das Thema Prozessoraffinitätsmaske eingelesen und diese Aussage wird fast immer gemacht und ebenso fast nie bestritten.

Man könnte also die Kernanzeige filtern und nur die geraden Kerne anzeigen wenn das geht. Macht für die Leistungsbetrachtung aber wenig Sinn, weil die HT-Kerne ja nicht automatisch gar nichts machen.
 
Dass jeder Core zwei feste Threads hat ist ja klar.
Aber woher kommt die allgemeine Ansicht, dass der gerade immer den "echten Kern" darstellt (0,2,4,6,...)
und der Ungerade immer einen virtuellen (1,3,5,7,...) ?

Die Threads sind gleichberechtigt und laufen beide auf einer virtuellen Ebene. Keiner davon ist der "echte" Kern. Es sind einfach Threads, die nicht mal wissen, dass sie beide auf einem Kern arbeiten.

Was Windows "weiß" ist nur, dass jeder Kern zwei Threads hat. Und wenn überhaupt eine Lastverteilung stattfindet, dann wird irgendeiner der Threads auf einem Kern ausgelastet. Üblicherweise ist das immer der erste, den man in die Hand bekommt also die 0,2,4,6...
 
Zuletzt bearbeitet:
@|paladin|
Das hat Windows so beschlossen :D Zumindest geht Windows wenn möglich immer zu erst auf die. Windows hüpft zwar gern hin und her, ist aber so schlau möglichst zwischen 0,2,4,6 zu hüpfen, wenn ein Prozess nur 4 Threads oder weniger hat.
 
Nilson schrieb:
1: Immer Thread 1 + 2 (3 + 4 etc.) sind ein Kern.
2: Windows weiß dass und lastet zunächst Thread 1 + 3 + 5 + 7 aus.
3: Die Auslastung gibt das Verhältnis zwischen Leerlaufprozess und Nutzprozess an.
4: Jeder Thread braucht immer was zu tun (Nutz oder Leerlauf)

Leider die falsche Hypothese. Aber hätte ja richtig geraten gewesen sein können ;)

Mein i7/3770K sagt mir:
root@3770k:~> cat /proc/cpuinfo|grep processor
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7
root@3770k:~> cat /proc/cpuinfo|grep core\ id
core id : 0
core id : 1
core id : 2
core id : 3
core id : 0
core id : 1
core id : 2
core id : 3
 
Tjoa Linux oder was das für ein Derivat ist verteilt die Threads etwas anders. Aber natürlich auch Paarweise.
 
evtl. Zählt Linux da anders.
 
Zurück
Oben