D
Deaktivierter_User_5345345
Deaktivierter Benutzer
- Registriert
- 17.02.19
- Beiträge
- 968
- Reaktionen
- 648
- Punkte
- 2.942
Damit man z.B. die Threadverteilung und Auslastung auf die Prozessoren (inkl. logischen Prozessoren) einsehen kann. Das ist z.B. für die Analyse wichtig, um bspw. zu schauen, ob das OS die Last gleichmässig verteilt. Die Last lässt sich übrigens nicht von der Anzahl der Threads ableiten. Es kommt immer darauf an, WAS in einem Thread geschieht.Sinn war es aufzuzeigen, dass die Anzahl der laufenden Threads eines Programms (für uns die DAW samt Plugins) nichts mit den Kernen und Threadangaben zu tun hat.
Und warum zeigen die Leistungsmonitore der verschiedenen Sequenzer (oder auch ein Systemlastmonitor) die Auslastung eben jener Kerne/Threads?
Ein rudimentäres Beispiel:
Wir haben 100 Threads A, die alle 10 Sekunden den Wert einer Variablen inkrementieren (also immer Wert der Variable + 1). Das sind zwar 100 Threads, aber das ist eine Rechenleistung, die völlig unrelevant ist. Gehen wir mal davon aus, dass diese Threads insgesamt 1% Rechenleistung eines Kernes brauchen, um abgearbeitet werden zu können.
Dann haben wir noch 2 Threads B, in denen sehr komplexe Berechnungen stattfinden. Meinetwegen braucht jeder dieser beiden Threads 60% Rechenleistung pro Kern.
Wir haben jetzt für das Beispiel einen Dualcore, es stehen also 2 Kerne zur Verfügung.
Jetzt könnten z.B. die 100 Threads A z.B. auf Kern 1 laufen, während B auf Kern 2 abgearbeitet wird. Nachteil: Kern 1 ist völlig unausgelastet, während Kern 2 gar nicht mehr mitkommt, da er ja 120% erfüllen soll. Er hat also volle Auslastung, aber die fehlenden 20% verzögern natürlich die Berechnung. Das wäre ein Beispiel für eine sehr schlechte Threadverwaltung (Scheduling).
Idealerweise verteilt das OS diese Threads. Z.B. laufen A weiterhin auf Kern 1 und auch 1 Thread von B, während Thread 2 von B auf Kern 2 läuft. Resultat: Die Last ist verteilt (Kern 1 = 61%, Kern B = 60%). Das ist effektive Lastverteilung.
Solchen Sachen geht man z.B. mit dem Systemmonitor nach.
In einer DAW ist das nicht unbedingt anders. Auch hier sieht man die Last, aber das ist von DAW zu DAW verschieden. So kann man z.B. sehen, ob ein Plug-in überhaupt auf mehrere CPU's verteilt wird. Generell unterscheidet man zwischen Multithreading und Multiprozessorfähigigkeit einer Anwendung (das muss der Entwickler berücksichtigen). Jetzt hast du irgendein Plug-in (z.B. veraltet oder schlecht programmiert), was massiv Rechenleistung benötigt, weil es nur auf einem Kern läuft. Dafür ist es sinnvoll, dies in der DAW, sofern sie es anbietet, sehen zu können.
Falls die Frage kommen sollte, warum man das nicht im Systemmonitor sieht, wären wir schon beim Thema Prozessverwaltung. Das würde den Rahmen hier sprengen. Was man sich merken kann: Threads gehören immer zu einem jeweiligen Prozess. Z.B. ist eine gestartete DAW ein Prozess, dem Threads (auch die von Plugins) angehören. Man sieht im Systemmonitor (ich beziehe mich mal auf Win) zwar Auslast, Threads etc., aber nicht die Plugins, da diese unter dem Prozess der DAW laufen.
Ich habe das jetzt ganz bewusst wirklich sehr, sehr einfach und schemenhaft dargestellt. Effektives und fehlerfreies Multithreading gehört definitiv zu den schwersten Aufgaben in der Softwareentwicklung, da Threads oftmals in Abhängigkeit (z.B. zeitlich, siehe Race Condition) zu einander stehen und miteinander kommunizieren. Wenn ein Thread stehenbleibt oder vergeblich auf das Ende eines anderen Threads wartet, war es das - die Anwendung hängt.
Zuletzt bearbeitet: