Krautmaster
Fleet Admiral
- Registriert
- Feb. 2007
- Beiträge
- 24.320
was das Architektur Thema angeht hat xexex absolut recht. Nicht mal AMD macht da ein Geheimnis draus dass der TR da eine Sonderbehandlung braucht und MS wird sicher auch gewillt sein den Scheuleder hier anzupassen. Es gibt aber schon sehr viele Spezialfälle die man berücksichtigen muss.
zB.:
und so gehts grad weiter. Es ist eben nicht ganz klar und auch nicht deterministisch was nun die beste optimale Belegung ist. Da spielen soooo viele Faktoren mit rein. Der Windows Scheuleder weiß ja auch nicht ohne weiteres was der Thread zu tun hat, ob er für sich agiert oder zb wie bei FFMPEG Abhängigkeiten bestehen und der eine ggf auf Speicher des anderen zugreifen will.
Man kann schon lange nicht mehr stumpf in Virtuelle und Physikalische Kerne unterteilen und gut ist. bei Intel noch am ehesten, da es weit "homogener" zugeht. Da wirft man random die Aufgaben den physikalische kernen zuerst zu, auf einer Die. fertig. Zudem hüpfen die belasteten Kerne noch etwas durch die Gegend, vermutlich der Thermik wegen.
Edit: Man sieht ja schon an den Benchmarks dass es von Aufgabe zu Aufgabe stark abhängt. Renderen ist nicht umsonst seine Stärke, da ist es quasi vollkommen latte wie man die CPU belegt da 0 Abhängigkeiten zwischen den Atomaren Threads bestehen.
Auch die verschiedenen Modi die AMD implementiert und die sich umschalten lassen zeigen schon dass es eben nicht so trivial ist.
zB.:
- ist es eine AMD Modul basierte CPU, ein Ryzen CPU / eine Multi Chip CPU oder ein Intel (ganz generell) wegen phys und virt Kerne
- Bei AMD primär die Threads in ein CCX legen sofern sie miteinander zu tun haben (kleine Core to Core Latency)
- bei Intel aufgrund der Thermik eher "entfernte Kerne" auslasten, aber auf einer Die (nicht Sockel übergreifend)
- Wann lege ich bei AMD die weiteren Threads ins gleiche CCX, oder ins andere CCX derselben die, oder auf eine andere Die und welche CCX da? -> ich will ja die Speicheranbindung schnell halten
- Wenn nun eine Die wie bei nem Ryzen 2700X voll belegt wird muss im dümmsten Fall der Speicherzugriff bei Epyc / TR über die andere Die erfolgen. Haben die Threads aber ein gemeinsames Workset wäre die Auslastung einer Die gegenüber einer verteilten Auslastung von Vorteil
- Hab ich wie beim Rendern getrennte Worksets muss ich aufgrund der Thermik und zur Maximierung der Speicherbandbreite alle Die gleichmäßig belegen, außer natürlich beim Threadripper der ja zwei schwächer angebundene Die besitzt
und so gehts grad weiter. Es ist eben nicht ganz klar und auch nicht deterministisch was nun die beste optimale Belegung ist. Da spielen soooo viele Faktoren mit rein. Der Windows Scheuleder weiß ja auch nicht ohne weiteres was der Thread zu tun hat, ob er für sich agiert oder zb wie bei FFMPEG Abhängigkeiten bestehen und der eine ggf auf Speicher des anderen zugreifen will.
Man kann schon lange nicht mehr stumpf in Virtuelle und Physikalische Kerne unterteilen und gut ist. bei Intel noch am ehesten, da es weit "homogener" zugeht. Da wirft man random die Aufgaben den physikalische kernen zuerst zu, auf einer Die. fertig. Zudem hüpfen die belasteten Kerne noch etwas durch die Gegend, vermutlich der Thermik wegen.
Edit: Man sieht ja schon an den Benchmarks dass es von Aufgabe zu Aufgabe stark abhängt. Renderen ist nicht umsonst seine Stärke, da ist es quasi vollkommen latte wie man die CPU belegt da 0 Abhängigkeiten zwischen den Atomaren Threads bestehen.
Auch die verschiedenen Modi die AMD implementiert und die sich umschalten lassen zeigen schon dass es eben nicht so trivial ist.
Zuletzt bearbeitet: