Intels P/E-Cores und deren Priorität in Anwendungen

philsc

Lt. Junior Grade
Registriert
Sep. 2016
Beiträge
439
Hallo,

ich programmiere in letzter Zeit relativ viel mit Python und wollte mir zuletzt ein neues System mit Ryzen 9 7950X zusammenstellen. Der Grund, warum ich mich relativ schnell für AMD entschied, war lediglich die P/E-Core Technologie von Intel. Für mich interessant wäre wenn dann der i9 13900K, aber ich frage mich, wie das mit der Priorität von P- und E-Cores ist.
Wenn ich beispielsweise ein Python Script zur Datenanalyse verwende, welches mit 4 Kernen arbeiten kann, werden dann immer die P-Cores dafür verwendet? Ich habe einfach Angst, dass es sein könnte, dass teilweise E-Cores verwendet werden, selbst wenn die P-Cores noch nicht alle ausgelastet sind. Das würde meine Scripts natürlich verlangsamen.
Kann da jemand etwas berichten? Ich ziele darauf ab, vor allem mit Linux (Ubuntu 20 oder 22) zu arbeiten, eventuell ist das bei meiner Frage relevant).
Alles in allem denke ich nämlich, dass ich niemals mehr als 16 Prozesse gleichzeitig laufen habe (ich gehe von 1 CPU Core pro Prozess aus), dementsprechend vom 16 Core / 32 Thread 7950X nicht wirklich profitieren würde. Da würde ich dann lieber die ca. 10% höhere Single Core Leistung der P-Cores (8 Cores / 16 Threads) vom 13900K bevorzugen.

Danke schon mal für eure Antworten!
 
Wenn Windows11 es nicht richtig hinbekommt, kannst Du auch die E-Cores abschalten.

Und der 13900K macht für die wenigsten wirklich Sinn, daher eher 13700K
 
Das würde sicherlich gehen, aber es ist nicht wirklich eine elegante Lösung meiner Meinung nach.
 
Ich habe mich jetzt noch ein bisschen dazu belesen und werde ehrlich gesagt immer unsicherer.
Hier ein Beispiel, wo man sieht, dass beim Rendering fast ausschließlich die E-Cores arbeiten und die P-Cores nahezu im Idle laufen.
Mit Linux (Ubuntu) stelle ich mir die Prioritätenverwaltung noch mal deutlich schwerer vor.
Bei meinen zeitkritischen Scripts kann ich es mir leider überhaupt nicht leisten, dass da irgendwas die E-Cores bevorzugt.
 
"zeitkritische Scripts" und Python programmieren ist schon eine merkwürdige Kombination..

Wenn es zeitkritische Anwendungen sind, dann gilt in etwa die Reihenfolge (Einfluss in absteigender Reihenfolge):
  • Gescheit Programmieren
  • Wahl der Programmiersprache (möglichst Systemnah, getyped, ohne Garbagecollection oder wenigstens mit guter Kontrolle über die GC)
  • Wahl eines angepassten Shedulers
  • Kernel mit Patches für "Real Time"
  • Process Pinning auf CPUs / Eklusives Reservieren von Cores (und deren vCores) für einzelne Prozesse

Also klar, man kann etwas in Python schreiben und die entsprechenden Prozesse auf Cores festnageln. Wirklich toll ist das Ergebnis aber meist nicht.
 
Ich weiß, Python ist nicht optimal dafür, aber ich habe die Scripts größtenteils gar nicht selbst geschrieben und beherrsche selbst nur Python, deswegen ist da "erst mal" kein Spielraum.
Ich möchte einfach das Maximum an Rechenleistung rausholen und denke deshalb, dass der 13900K besser abschneiden würde, als der 7950X, da die Scripts nachweislich nur wenige Kerne beanspruchen.
Allerdings möchte ich keinesfalls das Risiko eingehen, dass hier E-Cores statt P-Cores verwendet werden.
Deshalb die Frage, wie gut vor allem Linux (aber auch Windows) mit dem P/E-Core Handling klarkommt.
 
Klar kommen die Betriebssysteme mit den P/E Cores, die automatisierte Lastverteilung ist aber in der Regel für den allgemeinen Fall optimiert und nicht für etwaige Sonderfälle. Da müsstest du dann selber ran. Selbst bei einem 7950X ist es ja angebracht, dass bei all zu zeitkritischen Aufgaben unterbunden wird, dass Prozesse zwischen den CCX verschoben werden.

Wobei es auch wieder merkwürdig erscheint. Wieso einen 7950X wählen, wenn die Prozesse auf einen Thread beschränkt sind?

So unkonkret wie du dich äußerst, klingt das für mich einfach nur wie Optimierung am falschem Ende.
 
Zurück
Oben