Hallo zusammen,
aus meinem anderen Thread stellt sich für mich eine reine Interessens- Frage, die ich aber sicherheitshalber separat stelle, um ungünstige Vermischungen zu vermeiden.
Wenn ich einen Sechs-Core-Prozessor habe, erscheint dieser im System als 12 CPUs, in Tools wie htop auch als 12 ganz unabhängige Einheiten. Tatsächlich sind das aber *sechs* unabhängige Teile, die jeweils zwei Threads verwalten können, richtig?
Das heißt, wenn mein System mehr als 12 Prozesse laufen hat (also immer), dann muss das System nicht wirklich reihum wechseln wie früher bei einem Single-Core-Prozessor, sondern kann einige Prozesse wirklich nebeneinander laufen lassen, richtig?
Nicht ganz klar ist mir hier das Verhältnis von "echten" Cores und Threads. Ich stelle mir vor, dass ein Core eine Möglichkeit hat, zwei Prozesse effizienter zu verwalten als wenn er nicht diese Thread-Unterstützung hat. Aber *ein* Prozess, der einen Core zu 100% in Beschlag nimmt, müsste doch effizienter sein als *zwei* Prozesse, die sich diesen Core "teilen" und ständig hin- und her wechseln müssen?
Meine Frage bezieht sich letztlich auf die Aufgabe, mehrere Compiler- Prozesse parallel laufen zu lassen. Compiler wollen ja immer die ganze Rechenleistung haben, je mehr sie davon haben, desto schneller werden sie fertig (anders als z.B. User Interfaces, wo man sich gerade das nimmt, was gerade gebraucht wird und dann wartet, bis der Nutzer mal wieder wo drauf klickt).
Wenn ich also das Beispiel aus meiner anderen Frage nehme und sehr viele Compiler-Prozesse starten will, dann müsste das doch eigentlich am allerschnellsten gehen, wenn jeder Compiler-Prozess *eine* Core zu 100% beansprucht. Wenn ich also idealisiert sagen könnte: Starte vier Compiler und nutze dafür vier Cores, dann sollte das besser sein als: Starte acht Compiler und nutze die acht Threads von vier Cores.? Mir ist klar, dass das OS (zumindest von selbst) die Hunderte oder Tausende Prozesse, mit denen es sonst noch beschäftigt ist, sowohl auf die verbleibenden zwei Cores verteilt und bestimmt auch noch Zyklen von "meinen" vier Cores abzweigt.
So, bei alledem geht es mir zunächst mal darum, Feedback zu bekommen, das mein Verständnis dieser Dinge verbessert. Zusätzlich würde mich aber auch noch konkret interessieren, ob es möglich ist, Prozesse so zu steuern bzw. zu starten, dass ich etwa das OS anweise, für einen Compilerprozess einen ganzen Core, am besten exklusiv, zur Verfügung zu stellen. Wenn das möglich sein sollte, dann würde ich z.B. versuchen, meine Compilersysteme so zu arrangieren, dass ich meine Tausende Kompilierprozesse (je nachdem, was ich grade sonst noch so mit dem Rechner vorhabe) auf 4 oder 5 der 6 Cores exklusiv zu starten, anstatt dafür zu sorgen, dass immer 8 oder 10 Jobs aktiv sind.
Ich weiß nicht, ob diese Diskussion irgendwo hin führen kann, aber falls ja, wird es nicht nur Auswirkungen auf meinen Bürorechner haben, sondern in Frescobaldi (https://frescobaldi.org) - die wichtigste LilyPond-IDE - eingehen.
Herzliche Grüße Urs