Zen3 - CPPC Preferred Cores

codengine

Lieutenant
Registriert
Okt. 2001
Beiträge
615
Hallo Zusammen,
ich habe mich gestern mit der Option "CPPC Preferred Cores" beschäftigt da ich insbesondere in Spielen beobachtet habe dass gerade in Spielen die Hauptlast von zwei spezifischen Kernen getragen wird. Dazu gehören auch Hintergrundprozesse die tendenziell auf den gleichen Kernen wie die Threads des Spiels ausgeführt werden, was dort dann zu spürbaren Rucklern führt.

Zum Setup:
  • Aktuelles Windows 10 20H2
  • Gigabyte Aorus Master B550
  • Ryzen 5950
  • Aktuellster AMD Chipsatztreiber
  • Asus TUF GTX 3070
In Zen Master sehe ich, dass die von Windows selektierten Kerne auch denen mit "Stern" bzw. "Punkt" entspricht, also denen die den höchsten Boost-Takt verkraften können.

Lasse ich Cinebench im Single Core Benchmark drüber laufen verhält es sich genauso - soweit so normal und zu erwarten.

Allerdings wird der Prozessor auch recht einseitig belastet. Die Hauptlast wird von zwei Kernen getragen, CCX1 langweilt sich und die Temperaturen sind mit rund 74 Grad recht hoch (aber normal für Ryzen).

Schalte ich CPPC Preferred Cores aus verhält es sich so:
  • CCX0 bleibt komplett frei (erstmal)
  • Zwei Kerne auf CCX1, die nicht als optimale Kerne beschriftet sind schultern die Hauptlast
  • Windows wechselt zwischendurch zwischen CCX0 und CCX1 für die selben Threads (sollte ja eigentlich für die Wärmeabführung ideal sein)
  • Max. Boost-Takt liegt bei 4650 MHz statt 4850 MHz
  • Temperatur ist knapp 5 Grad kühler
  • Spitzen-Spannung laut Zen-Master liegt bei ~1.3 Volt statt ~1.44 Volt (was die niedrigeren Temperaturen erklären würde
Auch hier gibt es eigentlich keine Überraschung. Ich habe allerdings das Gefühl dass es zu weniger Aussetzern in Spielen kommt, obwohl der Wechsel zwischen CCX0 und CCX1 dafür sprechen würde. Mit Zahlen belegen kann ich es aktuell aber nicht.

Nun zu meiner Frage: Wie habt ihr die Option eingestellt und welche Erfahrungen habt ihr gemacht? Haltet ihr es für vertretbar nicht die optimalen Kerne zu nutzen wenn dadurch die Temperatur herunter geht und weniger Strom verbraucht wird? Übersehe ich hier etwas?

Mir kommt es auf ein paar FPS in Spielen oder hohe Scores in Benchmarks nicht an. Das System soll lange leben, leise und stabil sein.

Danke im Voraus!
 
codengine schrieb:
Ich habe allerdings das Gefühl dass es zu weniger Aussetzern in Spielen kommt, obwohl der Wechsel zwischen CCX0 und CCX1 dafür sprechen würde. Mit Zahlen belegen kann ich es aktuell aber nicht.
Dann lade dir CapFrameX (siehe Computerbase Downloads) herunter und Bench mal ein paar Szenen aus diversen Spielen. Die Szenen so wählen, dass sie möglichst reproduzierbar sind. Also immer das gleiche Angezeigt wird. Wähle sie auch so lange wie möglich. Beschrifte die Benchmarks ordentlich und mach mit der Compare Funktion ein paar Vergleiche, welche du hier einstellst.

Das würde mich echt interessieren. Ich hab mich damit noch nicht beschäftigt und hab bei meinem Ryzen alles auf Stock gelassen.
 
Also meine Erfahrungen dazu ist (5950x)
Windows versucht aggressiv soviel wie möglich auf den besten Kern zu legen.. dieser boostet durch die Last dementsprechend höher.

Erst wenn dieser Kern eine gewisse Auslastung (90+%) hat wird versucht ein weiterer Kern (2bester) anzusprechen.. oder wenn ein Thread nicht mehr auf den besten Kern passt von der Restleistung her..
Wobei Windows dann immer noch versucht das ganze irgentwie auf den besten core zu quetschen.


Das funktioniert ganz gut solange die workloads gleichbleibend CPU Ressourcen in Anspruch nehmen.

Aber gewisse Programme (zb spiele) sind nicht gleichbleibend bei der benötigten CPU leistung.
Während sie in der einen zene vielleicht 20% CPU benötigen.. kann das in ner anderen zene plötzlich 40-50% CPU sein.. und das nur weil man ingame in eine andere Richtung schaut oder Effekte/Gegner hinzukommen

Windows versucht nun im Hintergrund Ressourcen neu zu verteilen, und vieles kann nicht einfach Instant von nem anderen Kern übernommen werden.. einiges hat sogar höhere Priorität als das Spiel und wird bevorzugt behandelt.
Dadurch kommt es zu ruckeln und FPS Verlust.
Je nach Spiel/Programm ist der sheduler im Hintergrund dauerhaft beschäftigt das ganze neu zu sortieren und hin und her zu schieben.
Je mehr im Hintergrund läuft desto mehr hat der sheduler zu managen. Was ja auch Leistung kostet.
Ohne cppc pref Cores verteilt der sheduler möglichst gleichmäßig über die Cores



Man sieht das ganz gut wenn man etwas spielt und mit OBS aufnimmt..
mit cppc pref Cores enabled verliert man einiges an FPS was witzlos ist wenn wir über einen 16kerner reden.
Mit Cppc pref Cores disable bleiben die FPS weiterhin hoch

Ich für meinen Teil bevorzuge es auf disable,
Auch wenn ich etwas singelcore Leistung verliere


Ich würde mir wünschen wenn @SV3N oder jemand anderes bei Computerbase oder @FormatC da Mal n paar Vergleich Benchmark zu machen und das Feature mal fachlich erklären würden
 
  • Gefällt mir
Reaktionen: Shaav, NerdmitHerz, LukS und eine weitere Person
CPPC Preferred Cores nutzt die in der ACPI hinterlegten Powerwerte die in das AGESA einprogrammiert wurden und ordnet die leistungsfähigeren Kerne mit hoher Priorisierung zu.

Wird es deaktiviert hat greift ein anders Powerschema, sieht man auch daran, dass nun Windows die Kontrolle über die Kerne hat und alle Kerne gleich behandelt.
1619173690313.png

Deswegen verliert man auch etwas an Takt und die Kerne werden nicht mehr so ausgelastet wie von AMD vorgesehen.

Dazu kommt, dass AMD ein eigenen Powertable für die Kerne zur Verfügung stellt, welche aber nur funktionieren wenn man CPPC 2 aktiviert. ("CPPC on" ordnet zwar die Kerne, aber "CPPC 2 off" resultiert dann darin, dass der Powertable nicht genutzt wird -> zusätzliche "Leistungsreserven" der Kerne stehen nicht zur Verfügung)

Ist wie ein "künstliches eindrosseln" des Motors für ein ruhigeres Fahrverhalten (nicht mehr volle Drehzahl um es Bildlich darzustellen)

Man kann also der CPU sagen, nutze bitte die vom Hersteller programmierte Reihenfolge und gebe auch dann wenn nötig mehr Leistungsreserven frei, egal was es kostet, oder aber man überlässt es dem Windows Scheduler, der dann die Kerne alle gleich behandelt und sich im Normalfall an den schlechtesten Kern im System orientiert.
 
  • Gefällt mir
Reaktionen: iron_monkey
Meine Intuition sagt mir dass eine gleichmäßige Belastung auf Dauer wohl gesünder für das Silizium ist anstatt die Hotspots zu fördern.

Natürlich gibt es gute Gründe die besten Kerne zu fördern (Stichwort Performance-Krone) aber für Otto-Normalverbraucher - tut des not?
 
Du wirst die Silizium Limits ohne manuelles OC (allcore, CCX OC und CTR) mit Spannungen weit über 1.5v nicht erreichen. (AMD wird aber Laborberichte nicht der Öffentlichkeit zukommen lassen ab wann genau das schädlich ist)

Auch mit PBO werden die Silizium Limits nicht erreicht, da hier sehr viele Sensoren vorher Fehler melden und zur Not abschalten.

Anders verhält sich das wie oben steht bei manuellem OC (und ctr) da werden dann einige Sensoren umgangen bzw ignoriert.

Kurz um, wenn es keine Fehler verursacht würde ich es aktiviert lassen.
Wenn du festgestellt hast, dass es bei dir deaktiviert runder läuft, lass es deaktiviert.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: LukS
Meine Empfehlung dazu ist..
Via curve optimizer und corecycler versuchen die Kerne alle auf einen gleichwertigen möglichst hohen Wert stabil boosten zu lassen (4.9-5ghz)

Bei mir zb gehen alle cores mit dem optimizer auf 5025mhz ..
Und Cppc pref cores auf disabled..
so ist es egal welchen Kern Windows etwas zu weißt denn sie können alle mit 5ghz takten
 
  • Gefällt mir
Reaktionen: hurcos
Wollte das mal in den Raum werfen, da es doch sehr gut zum Thema passt.


QlS5dqO.png
 
@Der Moloch das sieht mir nach Discord aus. Hast du da noch mehr Material von? Das klingt ja total Kontra-Intuitiv :o
 
Nein, leider(!) nicht, das ist auch nicht von mir. Das ist ein Chatauszug, den Veii im overclock.net Forum geteilt hat, nachdem er sich wohl mit einem anderen Poweruser auf Discord darüber unterhalten hat. Wollte das nur hier einwerfen, weil das Thema scheinbar nicht nur von uns, sondern auch von Profis mit tieferen Kenntnissen diskutiert wird.
 
Ich habs grad nochmal mit WoW + Youtube Video auf dem anderen Monitor ausprobiert.

Es scheint mir dass die folgende Konfig wohl sinnig ist und der beste Kompromiss ist:
  • CPPC enabled (um Windows die Info über die optimalen Kerne zu liefern, sonst ist die Kernauslastung eher zufällig)
  • CPPC Preferred Cores disabled (Last wird verteilt und nicht auf einen Kern gesperrt)
Die Beobachtungen aus meinem Original-Post habe ich erneut bestätigen können.
 
  • Gefällt mir
Reaktionen: IceKillFX57
Ich finde es schade, dass in dem Chat nur gesagt wird, "naturally you'd disable both", aber nicht, warum.
 
  • Gefällt mir
Reaktionen: LukS und codengine
Der Moloch schrieb:
Ich finde es schade, dass in dem Chat nur gesagt wird, "naturally you'd disable both", aber nicht, warum.
Habe ich mich auch drüber gewundert. Ich kann mich natürlich irren aber ich habe das Gefühl dass nach Aktivierung von CPPC die Last häufiger von den zwei stärksten Kernen geschultert wird.

Was für einen Sinn hätte es sonst beide Optionen zu trennen? :-|
 
Bin gerade über diesen Thread gestolpert und wollte für Mitleser meine eben gemachte Beobachtung posten:

Wenn ich in meinem System CPPC deaktiviere dann hat die Einstellung "Beste Energieeinsparung"*, die den Ausbalanciert Energiesparplan ergänzt, keine Wirkung mehr. Die CPU zieht dann in Spiel statt bspw. 32 Watt ca. 49 Watt. Wem es jetzt um maximale Performance geht, dem ist es evtl. eh egal aber mir war es das nicht wert.
CPPC Prefered Cores lässt sich aber ohne diese Nebenwirkung abschalten.
Ryzen 5800x auf einem ASUS TUF Gaming B550-Plus Wifi. BIOS-Version 2423 vom August.


*Einstellungen - Netzbetrieb und Energiesparen - Schieberegler unter "Leistung und Energie".
 
Ich habe im ACO Benchmark auch mehr frames und ruhigere frame times mit cppc pref cores disabled.
 
  • Gefällt mir
Reaktionen: Samuelz
Zurück
Oben