Das kann man so nicht sagen. Bei einer CPU mit SMT alias HyperThreading ist nicht ein Kern echt und der andere unecht. Es ist einfach so, dass je Kern zwei Threads ausgeführt werden können, daher listet das Betriebssystem zwei virtuelle Kerne je echtem Kern. Beide sind aber gleichberechtigt und teilen sich schlicht die Ressourcen von einem echten Kern.
Wenn Deine Frage darauf hinausläuft, wie Du Last möglichst ideal auf die realen Kerne verteilst und nicht versehentlich Last auf zwei virtuelle Kerne eines realen Kern legst, dann war Deine Vermutung richtig: wenn Du die Kerne 1, 3, 5, 7 nutzt, verteilst Du die Last auf 4 echte Kerne. Wenn Du es mit 2, 4, 6, 8 machst aber genauso, das macht keinen Unterschied. Ungünstig wäre nur, wenn Du Last auf 1, 2, 3, 4 legen würdest, 5, 6, 7, 8 aber brachliegen ließest. Das wäre für die Leistung am schlechtesten.
Der Sinn von HyperThreading ist die bessere Ausnutzung der vorhandenen CPU-Ressourcen. Beispiel:
- eine Aufgabe dauert, sagen wir, 1 Minute. Wenn Du nur einen Kern nutzt, werden pro Stunde also 60 Aufgaben fertig. So weit, so logisch, oder?
- wenn Du alle realen Kerne nutzt - bei einem Core i7 also vier - dauert eine Aufgabe auch 1 Minute. Da allerdings 4 gleichzeitig laufen, werden jede Stunde nicht 60 Aufgaben fertig, sondern 4x 60, also 240 Aufgaben pro Stunde.
- wenn Du alle acht virtuellen Kerne nutzt, werden 8 Aufgaben gleichzeitig bearbeitet. Da sich die virtuellen Kerne so gegenseitig ausbremsen, dauert eine Aufgabe nicht mehr nur 1 Minute, sondern z.B. 1:40 Minuten. Da nun aber 8 gleichzeitig berechnet werden statt 4, ist der Gesamtdurchsatz dennoch höher als mit nur 4 echten Kernen. Die Durchlaufzeit je Aufgabe erhöht sich in unserem Beispiel von 1 Minute auf 1:40 Minuten, der Gesamtdurchsatz jedoch steigt von 240 auf 288 Stück pro Stunde. Das ist der Sinn hinter HyperThreading