CPU mit höchster Leistung bei Base-Clock

Sharkeater

Newbie
Registriert
Okt. 2022
Beiträge
2
Hallo CB,

ich arbeite an einer Anwendung, bei der ich Daten über 10Gbit/s NICS sende. Die verwendeten UDP-Jumbopakete müssen dabei strengste Latenzanforderungen einhalten, weshalb vom Anwendungshersteller empfohlen wird:
  • HT deaktivieren
  • Governor Performance
  • Cores isolieren (scheduler + interrupts)
  • C-States und P-States deaktivieren
  • Frequenzskalierung deaktivieren (Turbo, Speedshift etc.)
  • DPDK
Letztlich laufen dann alle Cores in C0 fest auf dem Baseclock. Die Anwendung selbst lässt sich auf bis 8 Kernen sinnvoll parallelisieren.

Meine Fragen:

Kann ich unter diesen Bedingungen die Leistung auf den 8 Kernen maximieren, wenn ich eine CPU mit möglichst nur 8 Kernen, aber dafür maximalem Baseclock nehme?

Oder sollte ich einfach eine CPU mit maximaler Single-Core-Performance wählen, die aber in den gängigen Tests mit Turboboost gemessen wird (mein Setup skaliert die Frequenz nicht)?

Ich weiß, letztlich spielt das entweder keine Rolle oder man muss es benchmarken. Trotzdem, vielleicht hat jemand Erfahrungen.

Vielen Dank,
Euer Sharkeater
 
Hey, erstmal Willkommen im Forum! :)

Auf jeden Fall sehr interessanter Anwendungsfall.
Das hier ist eher ein "Endkundenforum", so detaillierte Auswertungen bzw. Erfahrungen werden wohl die wenigsten geben können.

Sharkeater schrieb:
Kann ich unter diesen Bedingungen die Leistung auf den 8 Kernen maximieren, wenn ich eine CPU mit möglichst nur 8 Kernen, aber dafür maximalem Baseclock nehme?

Oder sollte ich einfach eine CPU mit maximaler Single-Core-Performance wählen, die aber in den gängigen Tests mit Turboboost gemessen wird (mein Setup skaliert die Frequenz nicht)?
Also generell liegt, wenn man alle Turbo/Stromsparmechanismen ausschaltet der minimale bzw. Default-Clock an.
Sofern man kein Thermal-Limit erreicht, wird dieser auch gehalten.
Bei einem i9-13900K liegt dieser glaub bei irgendwas um die 3-3,5 GHz auf allen Cores (in deinem Anwendungsfall würd ich aber von AlderLake/RaptorLake Abstand nehmen, da diese CPU noch sog. E-Cores hat und das sicherlich von der Skalierung der Anwendung hin auf maximale Performance eher kontraproduktiv ist).
Ich würde hier eher zu einem AMD Ryzen 7700X greifen, dessen Basistakt liegt bei 4,5 GHz und hat eine hohe IPC bzgl. SingleCore Leistung.
https://www.amd.com/de/products/cpu/amd-ryzen-7-7700x

Ansonsten fällt mir nichts ein, wie man bei Deaktivierung aller sonstiger Turbofeatures die Performance erhöhen soll.
Aber mal eine Frage, was mir etwas unschlüssig ist: Du sagst bei dir skaliert eine Steigerung der Taktfrequenz nicht, aber mit einer Steigerung der Taktrate z.B. auf einem Core erhöhst du doch auch die SingleCore Performance in deiner Anwendung, also würde Takt schon skalieren.
Im Businessumfeld sicherlich keine gute Idee die CPU außerhalb des zulässigen Rahmens zu betreiben, aber man könnte die CPU auch mit z.B. 5GHz fix im BIOS einstellen und betreiben.

Ich gehe aber sowieso eher davon aus, dass wir hier über Serversysteme reden und diese haben einen viel viel niedrigeren Base-Clock als alles im Endkundenmarkt.
 
  • Gefällt mir
Reaktionen: madmax2010
Kann nicht ganz nachvollziehen warum dann nur Baseclock möglich ist, da es nur wenige Clicks im Bios sind einen festen "Turbo"clock einzustellen welcher deutlich über dem Baseclock liegt.

Intel könnte interessant sein falls man die Anwendung auf die P-Cores legen kann und den Rest auf die E-Cores, habe mich aber nicht weiter damit beschäftigt wie gut das mittlerweile funktioniert.
Ansonsten der bereits genannte 7700Xaußer die Anwendung würde von dem 3d-Cache des 5800X3D profitieren, aber da hilft wohl nur selbst testen.
 
Einfach Energiesparplan auf Höchstleistung stellen schon liegt ein viel höher Takt an als Baseclock.. alternativ im BIOS alles vorgeben.

Das gewünschte wird nur verkompliziert.

Die Frage ist aber auch Windows oder Linux?

Bei Windows kann man Prozessen auch ein Priorität vorgeben.

Aber alleine ein Windows Update und man steht doof da.
 
Unti schrieb:
Du sagst bei dir skaliert eine Steigerung der Taktfrequenz nicht, aber mit einer Steigerung der Taktrate z.B. auf einem Core erhöhst du doch auch die SingleCore Performance in deiner Anwendung, also würde Takt schon skalieren.
Die Frequenz ändert sich physikalisch nicht: alle 16 Kerne laufen permanent bei 3000MHz, dem Baseclock, die Taktfrequenz variiert nur um maximal 5 Hz (wirklich fünf, angezeigt mit i7z).

Im Grunde geht es in dem Setup darum, dass alle Kerne in ständiger Bereitschaft sind: sie sollen nicht runtertakten und erst recht nicht schlafen gehen.
TheGhost31.08 schrieb:
falls man die Anwendung auf die P-Cores legen kann und den Rest auf die E-Cores
Das sollte gehen, da ich ohnehin jeden C++-Thread exklusiv auf je einem Kern laufen lasse.
 
Sharkeater schrieb:
Im Grunde geht es in dem Setup darum, dass alle Kerne in ständiger Bereitschaft sind: sie sollen nicht runtertakten und erst recht nicht schlafen gehen.

Das hat aber nichts mit Baseclock zu tun sondern mit dem Energiesparplan.

P.S. weiterhin hilft es auch nicht nur auf den Takt zu schauen sondern auch die IPC dabei.

Ist aber auch ein spezieller Workload.
 
Zuletzt bearbeitet:
Moderne CPUs wechseln mittlerweile viel schneller zwischen den C-States als es Früher der Fall war. Ich würde mir in dem Fall keine Gedanken machen.. im Zweifel musst du die Energiespareinstellungen einfach deaktivieren.
 
Zurück
Oben