Zur SMT Diskussion:
HT/SMT gaukelt dem Betriebssystem statt einem realen CPU Kern, 2 CPU Kerne vor!
Das soll helfen, die Kerne besser auszulasten.
So, die Verwaltung dieses virtuellen Kerns kostet auch ein kleines bisschen Leistung (2-3% ?).
Wenn ich jetzt zwei idente CPUs habe, beide mit 6 echten Kernen, aber einer hat SMT und der andere nicht, dann wird die CPU ohne SMT in allem schneller sein, was nur maximal 6 Threads erzeugt.
1 Thread pro echtem Kern: super!
Wenn jetzt aber mehr als 6 Threads anliegen, ist die CPU mit SMT schneller als die CPU ohne SMT, weil die mit SMT die zusätzlichen Threads gleichzeitig bearbeiten kann und die ohne SMT nicht, da muss gewartet werden, bzw ein Kern rechnet an dem einen Thread für x Milisekunden, dann am anderen Thread für x Milisekundem usw.
Also: Solange man genügend echte Kerne hat, also mehr oder gleich viele wie Threads, kann man SMT deaktivieren, weil mans ja nicht braucht und die Verwaltung dieser virtuellen Kerne etwas Leistung kostet. Wenig, aber messbar.
Hat man mehr Threads als echte Kerne, sollte man HT/SMT aktivieren, um daraus Vorteile zu ziehen.
Achtung: der virtuelle Kern nutzt die nicht genutzten Ressourcen des echten Kerns!
Also, wird der echte Kern kaum ausgelastet, ist mehr "Platz" bzw Rechenleistung für den "virtuellen" Kern vorhanden und es kommt deutlich mehr performance dabei raus.
Lastet aber ein Thread den echten Kern (fast) voll aus, bleibt nix mehr für den virtuellen Kern übrig (der ja auch auf dem echten Kern "läuft" ) und HT/SMT bringt hier so gut wie nichts.
==>> Der Nutzen von HT/SMT beschränkt sich auf
a) wenn meine Software mehr Threads nutzt als ich echte CPU Kerne habe
b) die echten Kerne nicht sowieso durch die Threads voll ausgelastet werden, dass die zusätzlichen virtuellen Kerne, die sich ja die Ressourcen mit den echten Kernen teilen, keine brach liegende Rechenleistung zur Verfügung haben.
Wenn jetzt eine CPU mit HT/SMT vorhanden ist, sollte das Betriebssystem oder werr auch immer dafür verantwortlich ist, sicherstellen, dass die Threads auch auf den echten Kernen laufen und erst danach die virtuellen Kerne beanspruchen!
Das soll noch ein bisschen ein Problem mit Windows (10) und dem Ryzen CPUs sein.
Jetzt gibt es Ausnahmen, wie einige wenige Spiele, die mit deutlich weniger FPS auf HT/SMT reagieren. Offenbar gibts genügend Kerne für die Threads, aber das vorhanden sein von weiteren, virtuellen Kernen sorgt für Probleme.
Keine Ahnung, entweder weil manchmal von einem echten auf einen virtuellen Kern geswitcht wird, durch das Switching selbst oder keine Ahnung warum.
Vermutlich hätten die Entwickler des Spiels oder der Software da besser aufpassen müssen, keine Ahnung.
Also, Stand jetzt: Cool wäre, wenn eine CPU HT/SMT unterstützt, dass dies standardmäßig deaktiviert wäre und sich automatisch aktiviert, wenn mehr Threads als echte Kerne vorhanden sind.
Das würde alle eventuellen Probleme lösen und alle wären glücklich.
Ich schätze Mal, da müssten OS und BIOS (schuldigung, (U)EFI) enger verzahnt werden, damit das, und vor allem schnell, klappt.
MfG
HT/SMT gaukelt dem Betriebssystem statt einem realen CPU Kern, 2 CPU Kerne vor!
Das soll helfen, die Kerne besser auszulasten.
So, die Verwaltung dieses virtuellen Kerns kostet auch ein kleines bisschen Leistung (2-3% ?).
Wenn ich jetzt zwei idente CPUs habe, beide mit 6 echten Kernen, aber einer hat SMT und der andere nicht, dann wird die CPU ohne SMT in allem schneller sein, was nur maximal 6 Threads erzeugt.
1 Thread pro echtem Kern: super!
Wenn jetzt aber mehr als 6 Threads anliegen, ist die CPU mit SMT schneller als die CPU ohne SMT, weil die mit SMT die zusätzlichen Threads gleichzeitig bearbeiten kann und die ohne SMT nicht, da muss gewartet werden, bzw ein Kern rechnet an dem einen Thread für x Milisekunden, dann am anderen Thread für x Milisekundem usw.
Also: Solange man genügend echte Kerne hat, also mehr oder gleich viele wie Threads, kann man SMT deaktivieren, weil mans ja nicht braucht und die Verwaltung dieser virtuellen Kerne etwas Leistung kostet. Wenig, aber messbar.
Hat man mehr Threads als echte Kerne, sollte man HT/SMT aktivieren, um daraus Vorteile zu ziehen.
Achtung: der virtuelle Kern nutzt die nicht genutzten Ressourcen des echten Kerns!
Also, wird der echte Kern kaum ausgelastet, ist mehr "Platz" bzw Rechenleistung für den "virtuellen" Kern vorhanden und es kommt deutlich mehr performance dabei raus.
Lastet aber ein Thread den echten Kern (fast) voll aus, bleibt nix mehr für den virtuellen Kern übrig (der ja auch auf dem echten Kern "läuft" ) und HT/SMT bringt hier so gut wie nichts.
==>> Der Nutzen von HT/SMT beschränkt sich auf
a) wenn meine Software mehr Threads nutzt als ich echte CPU Kerne habe
b) die echten Kerne nicht sowieso durch die Threads voll ausgelastet werden, dass die zusätzlichen virtuellen Kerne, die sich ja die Ressourcen mit den echten Kernen teilen, keine brach liegende Rechenleistung zur Verfügung haben.
Wenn jetzt eine CPU mit HT/SMT vorhanden ist, sollte das Betriebssystem oder werr auch immer dafür verantwortlich ist, sicherstellen, dass die Threads auch auf den echten Kernen laufen und erst danach die virtuellen Kerne beanspruchen!
Das soll noch ein bisschen ein Problem mit Windows (10) und dem Ryzen CPUs sein.
Jetzt gibt es Ausnahmen, wie einige wenige Spiele, die mit deutlich weniger FPS auf HT/SMT reagieren. Offenbar gibts genügend Kerne für die Threads, aber das vorhanden sein von weiteren, virtuellen Kernen sorgt für Probleme.
Keine Ahnung, entweder weil manchmal von einem echten auf einen virtuellen Kern geswitcht wird, durch das Switching selbst oder keine Ahnung warum.
Vermutlich hätten die Entwickler des Spiels oder der Software da besser aufpassen müssen, keine Ahnung.
Also, Stand jetzt: Cool wäre, wenn eine CPU HT/SMT unterstützt, dass dies standardmäßig deaktiviert wäre und sich automatisch aktiviert, wenn mehr Threads als echte Kerne vorhanden sind.
Das würde alle eventuellen Probleme lösen und alle wären glücklich.
Ich schätze Mal, da müssten OS und BIOS (schuldigung, (U)EFI) enger verzahnt werden, damit das, und vor allem schnell, klappt.
MfG