Wieviel Prozesse werden gleichzeitig ausgeführt?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Jeder Thread kann grundsätzlich nur von einem Kern bearbeitet werden, und nicht von mehreren zugleich. Wenn also weniger Threads gestartet sind als Kerne vorhanden sind, dann werden einige Kerne nichts zu tun haben, während die übrigen jeweils einen Thread bearbeiten.

Laufen andererseits mehr Threads als es Kerne gibt, dann wird ein Kern mehrere Threads im Wechsel bearbeiten. Dabei wird viele Tausend oder sogar Millionen mal zwischen den Threads umgeschaltet, so dass sie aus Benutzersicht praktisch gleichzeitig bearbeitet werden. Jeder Thread wird aber entsprechend langsamer laufen, da er nur einen Teil der Rechenzeit des Kerns bekommt.

Das Umschalten zwischen Threads, die zum gleichen Prozess (gestartetes Anwendungsprogramm) gehören, geht dabei sehr schnell, Während das Wechseln zwischen verschiedenen Prozessen wesentlich mehr Aufwand bedeutet. Die Threads nennt man deshalb auch "leichtgewichtige Prozesse".

Viele Prozessoren haben eine Technologie, die von Intel Hyperthreading (HT) und von AMD Simultaneous Multithreading (SMT) genannt wird. Moderne Prozessoren enthalten manche Schaltung mehrfach, so dass teilweise mehrere Operationen eines Threads parallel ausgeführt werden können (Superskalarität). SMT/HT erlaubt es darüber hinaus, dass zwei Schaltungen des Kerns gleichzeitig zwei Operationen aus zwei verschiedenen Threads bearbeiten.

Dadurch kann ein Kern stärker ausgelastet werden, als wenn er nur einen Thread zu bearbeiten hätte. Der Gewinn hängt stark von dem jeweiligen Programm ab, die Leistung kann im günstigsten Fall annähernd verdoppelt werden, aber es kann auch sein, dass es so gut wie nichts bringt. Im Mittel bringt es grob geschätzt 30%.

Nach meiner Erfahrung profitieren vor allem schlecht optimierte Programme von SMT/HT. Mit meinen selbst in C++ geschriebenen Programmen habe ich schon annähernd 100% Gewinn beobachtet. Das ist auch leicht zu erklären: gut optimierte Programme nutzen die Superskalarität bereits gut aus und nutzen oft mehrere Schaltungen zugleich, so dass es weniger Möglichkeiten gibt, zugleich auch Operationen aus dem zweiten Thread auszuführen.

Woher ich das weiß:Hobby

Jeder (logische) CPU-Kern (manche CPUs haben mehr logische, als physische Kerne) führt einen Thread aus.

Diese Threads können aus dem selben oder aus verschiedenen Prozessen stammen. Das entscheidet der Scheduler des Betriebssystems.

Ich könnte mir vorstellen, dass versucht wird, Threads des gleichen Prozesses möglichst zeitgleich auszuführen, weil die CPU-Kerne sich Cache-Ebenen teilen und das zu besserer Cache-Lokalität und somit schnellerer Ausführung führt, verglichen mit der Situation, dass die Threads alle aus unterschiedlichen Prozessen stammen.

Wenn die Threads eines Prozesses allerdings nicht ausreichen, um die CPU auszulasten, werden sicher auch Threads aus anderen Prozessen gescheduled, um die Hardware nicht im Leerlauf zu belassen.

Hallo!

Mit dem funktionalen Taskmanager Process Explorer von Sysinternals (Microsoft) kannst Du tief in Dein System hinein blicken.

Allerdings kann diese extrem umfangreiche und detailverliebte Software schon "ein wenig" unübersichtlich erscheinen. Je nachdem, was man damit anstellen möchte, muss man sich entsprechend tief einarbeiten.

https://www.heise.de/download/product/process-explorer-21841

https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

https://www.youtube.com/results?search_query=process+explorer+grundlagen

https://www.google.com/search?q=sysinternals+process+explorer+anleitung

Gruß

Martin

Jeder Kern arbeitet an einem Thread.

Aber nicht an irgendeinem: einerseits muss man die verfügbare Zeit möglichst fair aufteilen, andererseits wird aus Effizienzgründen versucht, diese Zuweisungen zu gruppieren. Warum? Prozesskontextwechsel sind teurer als Kontextwechsel von Threads innerhalb desselben Prozesses, und man will auch die Lokalität der Hardware nutzen (gemeinsame Ressourcen von Kernen).

Im Detail ist das recht kompliziert und mitunter mehr Kunst oder Heuristik als Wissenschaft. Eine schöne Erläuterung in diesem Paper.