Jump to content
Forum Maintenance Period (02/05 - 03/05) ×

Simultanes Multi-Threading (auch bekannt als logische cores) , ja oder nein?


Othello

Recommended Posts

SMT hat bei Intel Prozessoren einen eigenen Namen:  Hyperthreading

 

Beides ist vergleichbar, es geht darum, auf einem physikalischem Core zwei Threads gelichzeitig laufen zu lassen.

Es gibt verschiedene Meinungen dazu, ob SMT für die Performance von Vorteil ist oder eher von Nachteil.

 

Die Antwort hängt stark von der verwendeten Hardware ab.

Wer ZEN Prozessoren verwendet, sollte SMT eine Chance geben, bei Verwendung von Intel Prozessoren könnte es besser sein, man verwendet SMT nicht.

 

Wer es genau wissen möchte, bekommt jetzt ordentlich Lesestoff 🙂

Meine ersten Assembler Programme schrieb ich für die 6502 CPU,

diese CPU war wunderbar einfach strukturiert und der Befehlssatz klar definiert.

Heutige Prozessoren sind Universen davon entfernt, dieser Umstand macht sich in der Komplexität des geposteten Artikels bemerkbar.

Aber man muss ihn ja nicht lesen, man darf - wenn man es möchte.

 

Hier ein übersetzter kurzer Auszug zum Thema:

 

Zitat

26.3 Der AMD Zen-Kernel
Die Zen-Prozessorfamilie bringt AMD zurück ins Spiel, nachdem sie mehrere Jahre lang hinter Intel zurücklagen.

Der Zen-Kernel hat einen Durchsatz von fünf oder sechs Anweisungen pro Taktzyklus,
was den bisherigen Rekord darstellt. Besonders hoch ist der Durchsatz bei Vektorcode. Der Zen 2, 3,
und 4 können vier 256-Bit-Gleitkomma-Vektoren pro Taktzyklus berechnen.

Der hohe Durchsatz stellt Programmierer und Compiler vor die Aufgabe, die erhöhte
Parallelität auf Befehlsebene in Single-Thread-Anwendungen zu nutzen. Der Kerndurchsatz
ist so hoch, dass es sinnvoll sein kann, zwei Threads pro Kern laufen zu lassen, im Gegensatz zu einigen anderen Prozessoren
mit geringerem Kerndurchsatz.
Das Abrufen und Dekodieren von Befehlen ist jedoch immer noch ein sehr wahrscheinlicher
Engpass, der die Leistung bei der Ausführung von zwei Threads einschränken kann.
Der neue μop-Cache ist eine wichtige Verbesserung, die den Engpass des
Befehlsabrufs und der Dekodierung in den meisten kritischen Schleifen beseitigt.
Die großen Caches auf allen Ebenen stellen eine besonders wichtige Verbesserung dar. Die Cache-Bandbreite
beträgt 32 Byte pro Takt bei Zen 1 und 64 Byte pro Takt bei Zen 2, 3 und 4

 

 

Zitat

23.18 Gleichzeitiges Multithreading
Der Prozessor kann zwei Threads in jedem Kern ausführen. Dies ist sinnvoll, weil der Durchsatz
jedes Kerns so hoch ist, dass er selten von einem einzelnen Thread vollständig genutzt wird.
Im Allgemeinen erhält jeder Thread die Hälfte der Ressourcen, wenn zwei Threads auf demselben Kern laufen.
gleichen Kern laufen. Die Warteschlangen der μops werden gleichmäßig auf die beiden Threads verteilt, so dass
jeder Thread die Hälfte des maximalen Durchsatzes erhält. Die Caches, Verzweigungsprädiktoren, Ausführungseinheiten
Ausführungseinheiten und die meisten anderen Ressourcen werden von den beiden Threads konkurrierend genutzt.
Gleichzeitiges Multithreading ist nicht vorteilhaft, wenn eine gemeinsam genutzte Ressource einen Engpass darstellt, der
Engpass darstellt, der die Leistung einschränkt, z. B. Befehlsdekodierung oder Cache.
...

...

 

 

Und hier ist der Link:

 

04.11.2022The microarchitecture of Intel, AMD, and. VIA CPUs. An optimization guide for assembly programmers and compiler makers. By Agner Fog.

https://www.agner.org/optimize/microarchitecture.pdf

 

  • Thanks 1
Link to comment
Share on other sites

  • Deputy Sheriffs
vor 1 Stunde schrieb Othello:

Wer ZEN Prozessoren verwendet, sollte SMT eine Chance geben

🤔 Ähm, vielleicht bin ich zu alt um das zu verstehen, doch was genau willst du uns sagen und wie mache ich das? Betrifft das überhaupt X-Plane (und wenn ja wie?) oder ist das allgemein geschrieben? Ist denn nicht multi-threading eh schon aktiviert? Ich hab 16 Kerne und 32 Threads 🤔

Link to comment
Share on other sites

vor 4 Minuten schrieb simHeaven:

🤔 Ähm, vielleicht bin ich zu alt um das zu verstehen, doch was genau willst du uns sagen und wie mache ich das? Betrifft das überhaupt X-Plane (und wenn ja wie?) oder ist das allgemein geschrieben? Ist denn nicht multi-threading eh schon aktiviert? Ich hab 16 Kerne und 32 Threads 🤔

SMT wird im UEFI-Bios aktiviert. 

  • Thanks 1
Link to comment
Share on other sites

16 Kerne * 2 Threads (SMT) = 32 Threads

 

Alles OK

 

Du musst nichts mehr tun, es sei denn, du möchtest dass per Core nur 1 Thread läuft.

Diese Einstellung wird gerne als vorteilhafte Einstellung gehandelt, wenn um optimale Kernperformance geht.
Bei ZEN Processoren schein diese Meinung nicht unbedingt zu stimmen.

 

(EDIT: bei Intel Prozessoren schon eher, da wäre es von Vorteil, das SMT abzuschalten).

 

Manche Meinungen halten sich lange, auch wenn sie längst widerlegt wurden (siehe gesunder Spinat, weil viel Eisen).

Da ich weiß, daß diese Diskussion zum Teil heftig geführt wird, dachte ich, ich unterfüttere meine Meinung mit guten Argumenten.  🙂

 

Und es ist allgemein geschrieben, d.h. es betrifft die Rechnerleistung allgemein, und somit eben auch X-Plane.

 

/Günther

 

Link to comment
Share on other sites

vor 23 Stunden schrieb Othello:

Bei ZEN Processoren schein diese Meinung nicht unbedingt zu stimmen.

Ist ein interessantes Thema: Bin gerade anders herum unterwegs und habe seit ca. 1 Woche SMT zum Testen wieder abgeschaltet. Eigentlich wird allgemein berichtet, dass der Leistungszuwachs eines Rechners bei Hinzufügen zusätzlicher Kerne nur unterproportional wächst (sofern immer mehr als genügend Threads die zusätzliche Kerne vollständig in Anspruch nehmen). Dies ist in erster Linie der Tatsache geschuldet, dass Threads permanent aktiviert, dazu willkürlich auf die zur Verfügung stehenden, unterschiedlichen Kerne verteilt werden, Daten aus dem auf heutigen Systemen gemeinsam genutzten Cache/Hauptspeicher über die Daten-Busse geschaufelt werden müssen, etc.  Dann wiederum fliegen die Threads gleich wieder aus der aktiven Schiene und werden für ein paar Millisekunden irgendwo geparkt. Ist also auch eine Sache, wie u.a. der Scheduler eines OS-Systems läuft.

Dazu kommt die Frage, wie der 2. , "virtuelle" Core eines CPU-Kerns in Hardware gegossen ist, also ob X-Plane-Threads auf diesen SMT-Cores genau so schnell laufen, wie auf dem "Haupt"-Kern. Es kann also sein, dass die AMD-Hyper-Cores in Hinblick auf das spezifische Anforderungsprofil, das zeitkritische X-Plane-Threads ausmacht, besser geeignet sind, als die Intel-Vertreter.

 

Link to comment
Share on other sites

Hallo,

das ist alles richtig, aber der Hauptgrund für keinen linearen Anstieg der Performance mit der Anzahl der Kerne ist meiner Meinung ein anderer, es ist das Betriebsystem.

 

Früher war es einfach, Multiuser Systeme zu erstellen. Es gab zwar mehrere User, aber nur eine CPU.

Die CPU wurde dann im Zeitscheibenverfahren aufgeteilt.

 

Dann kamen die Systeme, die mehere CPUs hatten, damit konnten User Prozesse parallel laufen, der Kern/Kernel/das OS liefen aber weiterhin nur auf einer CPU.

 

Und dann kam der schwere Schritt, auch den Kernel zu parallelisieren.

 

Die Schwierigkeit sind die Racing Conditions, der gleichzeitige Zugriff auf Daten jeglicher Art muss geregelt werden. Dafür gibt es verschiedene  Verfahren, wen es interessiert, der kann sich über Semaphore, Mutexe, spinning Loops informieren.

 

Die Synchronisation kostet aber je nach Methode viel Zeit.

Um die Anzahl der Zugriffsregelungen klein zu halten, kann man diese für große Bereiche definieren, also Dinge wie eine Speicheranforderung zu bedienen, einen neuen Prozess zu starten u.s.w..

 

Der Grad der Parallelisierung des Kernels ist jedoch bei dieser groben Granulierung gering, d.h. mehr CPUs ermöglichen zwar mehr gleichzeitige laufende User Threads, aber der Stau an den Synchronisationspunkten des Kernels wächst und verhindert so die lineare Leistungszunahme bei Erhöhen der Anzahl der CPUs.

 

Die Lösung: eine sehr feingranulierte Verteilung der Synchronisationspunkte.

Dies erfordert neben schnellen Lösungen vor allem eine unglaublich komplexe Logik, um Deadlocks zu vermeiden. Der Entwicklungsaufwand ist enorm.

 

Ich hatte in meinem Berufsleben mit Solaris von Sun Microsystems zu tun.

Dieses OS hat hervorragend skaliert, nahezu linear, es ist also möglich.

 

Aber nicht mit jedem OS

 

_______

 

Das eben Geschriebene bezieht sich auf die Skalierbarkeit der Performance in Abhängigkeit von Kernen, mein vorheriges Schreiben auf die Skalierung innerhalb eines Kerns durch symetrisches Multithreading. Hier kommt es darauf an, dass beide Threads möglichst ohne warten auf Resourcen arbeiten können.

Und da scheint die ZEN Architektur zu glänzen.

 

Aber wie es sich konkret mit spezifischen Anwendungen verhält, muss man testen.

In meinen Tests konnte ich bezüglich X-Plane keine Leistungsminderung bei Verwendung von SMT feststellen.

 

Bei der Vielzahl der Kerne der Ryzen CPUs ist dies für X-Plane sicher nicht nötig, aber mir ging es mehr darum zu zeigen, dass ein Abschalten des SMT mit diesen Prozessoren nicht nötig ist.

Link to comment
Share on other sites

vor 2 Stunden schrieb Othello:

aber der Hauptgrund für keinen linearen Anstieg der Performance mit der Anzahl der Kerne ist meiner Meinung ein anderer, es ist das Betriebsystem.

Da bin ich bei dir ... und ist der Grund, warum ich aktuell vollständig auf Linux gewechselt bin.

XP11 lief bei mir auf einem eigens nur für X-Plane reservierten Win-System, während mein Linux-Arbeitsrechner u.a auch - quasi als Sicherung - die gleiche XP11-Installation gehostet hat. Obwohl ich auf der Linux-Seite einen etwas schwächeren I7 betrieben habe, schien mir XP11 auf der Linux-Seite immer etwas "flüssiger" zu sein. Also jetzt radikal XFCE-Linux-Mint pur, Distribution komplett bis auf Firefox abgestrippt, 64GB RAM, nur noch NVMe-SSD, ohne swappen. XP12 mal mit C172 und dann eben die mit jede Menge Thread-Beipack vollgeknallte Zibo-737, oder den FF320 und über eine längere Zeit bewegen. Mal sehen, ob es etwas in Hinblick auf SMT ,an oder aus, gibt.

 

Link to comment
Share on other sites

vor 9 Minuten schrieb hmkaiser:

Da bin ich bei dir ... und ist der Grund, warum ich aktuell vollständig auf Linux gewechselt bin.

XP11 lief bei mir auf einem eigens nur für X-Plane reservierten Win-System, während mein Linux-Arbeitsrechner u.a auch - quasi als Sicherung - die gleiche XP11-Installation gehostet hat. Obwohl ich auf der Linux-Seite einen etwas schwächeren I7 betrieben habe, schien mir XP11 auf der Linux-Seite immer etwas "flüssiger" zu sein. Also jetzt radikal XFCE-Linux-Mint pur, Distribution komplett bis auf Firefox abgestrippt, 64GB RAM, nur noch NVMe-SSD, ohne swappen. XP12 mal mit C172 und dann eben die mit jede Menge Thread-Beipack vollgeknallte Zibo-737, oder den FF320 und über eine längere Zeit bewegen. Mal sehen, ob es etwas in Hinblick auf SMT ,an oder aus, gibt.

 

Dazu eine Frage, ich habe Linux Mint Version 21 Cinnamon 64bit. Dort habe ich x-plane 12 installiert, den neuesten Nvidia treiber, bekomme aber eine Fehlermeldung: X-plane failed to initialized Vulcan and can not run. 

Welches Linux hast Du und welchen Treiber verwenest Du?

Link to comment
Share on other sites

vor 2 Stunden schrieb stevebiker:

 

Welches Linux hast Du und welchen Treiber verwenest Du?

Mint-XFCE und den nVidia-Treiber 525. Ich würde aber eher vermuten, dass deine Graka Vulkan nicht verarbeiten kann.

Link to comment
Share on other sites

vor 2 Stunden schrieb stevebiker:

Ich habe es in Linux jetzt aufgegeben! Es ist, wieder mal, die altbekannte Suche nach dem Fehler, wenn man etwas außertourliches habe möchte! 

Ich bin da immer etwas, wie soll ich sagen, irritiert: XP10 und XP11 habe ich parallel immer unter Linux betrieben, jetzt mit XP12 ist mein X-Plane-Rechner ebenfalls mit Linux unterwegs. Ich habe mit Ubuntu 11.04 (?) begonnen, bin dann in 2014 auf Mint-XFCE umgestiegen. Mit den alten Nouveau-Treibern für nVidia hat es noch keinen großen Spaß gemacht, jetzt mit richtigen Treibern läuft es völlig problemlos. Und das praktisch direkt "Out of the Box": Linux vom Stick installieren, nVidia-Treiber über das installierte Tool "Treiberverwaltung" installieren, XP12 installieren, läuft! Wüsste nicht, dass ich irgend etwas zusätzlich anfassen musste.

Ist mir völlig schleierhaft, warum das bei dir nicht klappt.

Link to comment
Share on other sites

Sodala, ich habe nun den 2ten, vorher nicht entdeckten und auch nicht empfohlenen 525er, ganz unten in der Treiberverwaltung installiert und, X-plane und auch mein 2ter Bildschirm funktionieren! Jetzt versuche ich es in Linux, wie es läuft.

Wie erstelle ich einen Starter für X-plane12? Es ist weder im Startmenü, noch in der Taskleist und Schreibtisch zu finden? Ich habe es schlicht schon vergessen, die meisten Programme tragen sich selber ins Startmenü ein.

Link to comment
Share on other sites

vor einer Stunde schrieb stevebiker:

ich habe nun den 2ten, vorher nicht entdeckten und auch nicht empfohlenen 525er, ganz unten in der Treiberverwaltung installiert

Bei mir gibt's nur - Mint XFCE "Out of the Box" - 1x den 525 und der steht oben.

 

vor einer Stunde schrieb stevebiker:

Wie erstelle ich einen Starter für X-plane12?

Na ja, da ist das Aufschreiben der Frage aufwändiger, als das "Machen". Auf dem Desktop per rechter Maustaste "Starter erstellen", dann in "Befehl:" per "Anwendung auswählen" XP12 zuweisen, in "Arbeitsverzeichnis:" das XP12-Verzeichnis einkopieren, erledigt.

Link to comment
Share on other sites

Am 13.12.2022 um 13:56 schrieb Othello:

(EDIT: bei Intel Prozessoren schon eher, da wäre es von Vorteil, das SMT abzuschalten).

 

Ich hatte das bei mir mal probiert und konnte keinerlei Verbesserungen feststellen. 

Link to comment
Share on other sites

vor 9 Minuten schrieb Frithjof:

 

Ich hatte das bei mir mal probiert und konnte keinerlei Verbesserungen feststellen. 

 

So ist das in der Wissenschaft, das letzte Wort hat immer das Experiment.
Für X-Plane scheint es also nicht so wichtig zu sein.

 

Link to comment
Share on other sites

Ich habe es gestern mal ausprobiert und hatte bei 1 Thread pro Core bei XP12 ca. 8-10 FPS mehr, bei XP11 ca. 5-8 FPS mehr. Also probieren, was besser ist.

 

Gruss, Bernd

 

P.S.: Muss ja noch erwähnen, das ich Intel I7-Core habe.

  • Like 1
Link to comment
Share on other sites

  • Deputy Sheriffs
Am 13.12.2022 um 13:56 schrieb Othello:

Du musst nichts mehr tun, es sei denn, du möchtest dass per Core nur 1 Thread läuft. Diese Einstellung wird gerne als vorteilhafte Einstellung gehandelt, wenn um optimale Kernperformance geht. Bei ZEN Processoren schein diese Meinung nicht unbedingt zu stimmen.

 

Ich hab das eben bei meiner AMD 5950X getestet, bei XP11 (40 fps) und MSFS (61 fps) sah ich keine wesentliche Änderung, doch bei XP12 stiegen die fps von 25 auf 33, die CPU-Zeit für die Frame-Berechnung ist nun wesentlich niedriger. Für mich scheinen die Ergebnisse eher auf ein nicht optimiertes XP12 hinzudeuten. Ich lasse das bei mir vorerst so, denn ich fliege und teste immer mehr mit XP12.

 

-> war ein guter Tipp!! 👍😊

Link to comment
Share on other sites

vor 30 Minuten schrieb simHeaven:

doch bei XP12 stiegen die fps von 25 auf 33, die CPU-Zeit für die Frame-Berechnung ist nun wesentlich niedriger.

Ich kann nach etlichen Versuchen bei mir keine signifikante Veränderung unter Linux ausmachen. FPS und insbesondere die CPU-Zeit bleiben mit, oder ohne SMT im gleichen Bereich. Allerdings ist meine 1070-Graka der entscheidende Engpass, i.d.R. braucht die deutlich mehr als die doppelte Zeit wie die CPU. Bin mir nicht ganz sicher, ob das nicht auch einen wie auch immer gearteten Einfluss auf die CPU-Zeit hat.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy & Terms of Use