sp00n.82
Lt. Junior Grade
- Registriert
- Dez. 2020
- Beiträge
- 338
Über die letzten Tage bzw. Wochen habe ich mich näher mit dem Curve Optimizer bei Ryzen beschäftigt, hatte aber keine Möglichkeit gefunden, die Einstellungen vernünftig auf Stabilität zu testen. CineBench Singlethread lief eigentlich so gut wie immer durch, Prime95 mit Belastung auf allen Kernen war auch relativ einfach stabil zu bekommen. Auf Crashes im Idle zu warten oder in Spielen kam mir auch nicht so sinnvoll vor, und auf Reddit hatte jemand dann sogar von dem Windows Reparatur-Tool als gutem Stabilitätstest angefangen... das war mir dann doch zu blöd.
Also ist die Idee zu diesem Tool entstanden. Es ist ein PowerShell-Script, das eine Instanz von Prime95 startet und diese mit nur einem Worker Thread auf nur einem Kern laufen lässt. Und dieser Kern wird dann nach einer einstellbaren Zeit gewechselt, sodass man das Tool dann z.B. schön über Nacht laufen lassen kann und am nächsten Tag dann sieht, welche Kerne bisland einen Fehler verursacht haben.
Mittlerweile sieht es ganz gut für eine Veröffentlichung aus, wobei ich bisher der einzige bin, der das getestet hat, weitere Erfahrungsberichte wären also recht hilfreich.
Zu finden ist es hier:
https://github.com/sp00n/corecycler/releases
Aktuelle Version: 0.9.2.0 (19.10.2022)
Changelog:
Update 19.10.2022
Version 0.9.2.0 ist jetzt verfügbar:
Zum Ausführen reicht ein Doppelklick auf "Run CoreCycler.bat".
Lest die beigefügte readme.txt und schaut euch die config.ini an, dort kann man ein paar Sachen ändern.
Screenshots des Scripts in Aktion:
Hier noch eine beispielhafte Auswertung, wie es bei mir ablief während der Entwicklung. Wie man sieht, braucht das ganze weiterhin seine Zeit (nein, die Auswertung wird nicht automatisch angelegt, das müsst ihr selbst machen ):
Ein Auszug aus der readme.txt:
Mit diesem kleinen Script kann man die Einstellungen des Curve Optimizer für jeden einzelnen Kern seiner CPU auf Stabilität überprüfen. Das Script startet Prime95 mit einem Worker-Thread und setzt die "Affinity" von Prime95 abwechselnd auf die einzelnen Kerne, d.h. es wird immer nur ein einziger Kern gleichzeitig belastet, wodurch sehr gut die Stabilität der Curve Optimizer Einstellung ausgetestet werden kann.
Die bisherigen Stabilitätstests mit PBO und dem Curve Optimizer waren entweder nicht zuverlässig (Cinebench, Windows Repair) oder mit sehr viel Arbeit verbunden (manuell die Affinity über den Task Manager setzen, warten, neu setzen, etc) oder gleich beides. Mit diesem Script braucht man eigentlich nur noch Zeit - davon allerdings doch recht viel. Da immer nur ein Kern gleichzeitig getestet werden kann, bräuchte man für einen 12 Stunden "Prime-stable" Stabilitätstest, wie man ihn bei normalen Overclocks gerne macht, bereits 12x12 = 144 Stunden bei einem 5900X. Bei einem 5600X mit seinen 6 physischen Kernen dann entsprechend "nur" 6x12 = 72 Stunden.
Solch ein All-Core Test mit Prime95 ist leider nicht effektiv mit dem Curve Optimizer, da die Kerne dann nicht so hoch takten können, und man so eventuelle Instabilitäten nicht erkennen kann. Bei meiner CPU konnte ich z.B. den Curve Optimizer auf -30 auf allen Kernen und +75 MHz Boost stellen und damit problemlos 24 Stunden Prime95 durchlaufen lassen,während ich bei diesem Einzeltest dann bei +0 MHz Boost einen der Kerne nur noch mit -9 stabil laufen lassen konnte (ein anderer dagegen lief auch beim Einzeltest noch mit -30 weiter).
Beim ersten Start des Scripts wird automatisch eine config.ini angelegt (die config.default.ini wird kopiert). In dieser kann man einige Parameter ändern, z.B. welcher Modus beim Testen ausgeführt wird (SSE, AVX, AVX2, CUSTOM, wobei SSE den höchsten Takt produziert, da es die CPU am wenigsten belastet), wie lange ein einzelner Kern getestet werden soll, bevor es zum nächsten geht, ob bestimmte Kerne ignoriert werden sollen, etc. Für jedes Setting ist in der Datei auch eine Beschreibung vorhanden.
Als Startpunkt am Anfang könnte man im Curve Optimizer jeden Kern auf z.B. auf -15 oder -20 setzen und dann schauen, welcher Kern durchläuft und welcher davon einen Fehler wirft. Die Kerne mit Fehler könnte man dann z.B. um 2 oder 3 Punkte nach oben setzen (also z.B. von -15 auf -13), die fehlerfreien dagegen 2 oder 3 weiter ins Negative (-15 auf -17). Ab einem gewissen Punkt kommt man aber nicht daran vorbei, nur noch um einen Punkt nach oben/unten zu korrigieren und das Tool sehr lange laufen zu lassen, um auch die letzten Instabilitäten herauszufiltern.
Es ist übrigens beabsichtigt, dass bei aktiviertem Hyperthreading / SMT nur der erste Thread eines jeden Kerns belastet wird, da dabei ein höherer Takt erreicht wird, wie wenn beide (virtuellen) Threads eines Kerns belastet würden. Man kann in der config.ini allerdings auch die Anzahl der Threads auf 2 setzen, wenn man das möchte, dann werden beide belastet.[/spoiler]
Also ist die Idee zu diesem Tool entstanden. Es ist ein PowerShell-Script, das eine Instanz von Prime95 startet und diese mit nur einem Worker Thread auf nur einem Kern laufen lässt. Und dieser Kern wird dann nach einer einstellbaren Zeit gewechselt, sodass man das Tool dann z.B. schön über Nacht laufen lassen kann und am nächsten Tag dann sieht, welche Kerne bisland einen Fehler verursacht haben.
Mittlerweile sieht es ganz gut für eine Veröffentlichung aus, wobei ich bisher der einzige bin, der das getestet hat, weitere Erfahrungsberichte wären also recht hilfreich.
Zu finden ist es hier:
https://github.com/sp00n/corecycler/releases
Aktuelle Version: 0.9.2.0 (19.10.2022)
Changelog:
Update 19.10.2022
Version 0.9.2.0 ist jetzt verfügbar:
- Die mitgelieferte Prime95-Version ist jetzt 30.8b17
- Die mitgelieferte y-Cruncher-Version ist jetzt 0.7.10 Build 9513
- Unterstützung von AVX-512
- Einige Fehler mit der Erkennung der Logdatei von Prime95 behoben
Update 09.05.2022
Version 0.9.0.0 ist jetzt verfügbar:
Update 30.04.2022
Version 0.8.2.5 ist jetzt verfügbar:
Update 11.05.2021
Version 0.8.2.4 ist jetzt verfügbar:
Update 08.05.2021
Version 0.8.2.2 ist jetzt verfügbar:
Update 06.05.2021
Version 0.8.2.1 ist jetzt verfügbar:
Update 03.05.2021
Version 0.8.2.0 ist jetzt verfügbar:
Update 25.04.2021
Version 0.8.1.0 ist jetzt verfügbar:
Update 13.03.2021
Version 0.7.9.0 ist jetzt verfügbar:
Update 12.03.2021
Version 0.7.8.9 ist jetzt verfügbar:
Update 11.03.2021
Version 0.7.8.8 ist jetzt verfügbar:
(Version zurückgezogen, da sie fehlerhaft war)
Update 09.03.2021
Version 0.7.8.5 ist jetzt verfügbar:
Update 08.03.2021
Version 0.7.7 ist jetzt verfügbar:
Und auch Version 0.7.8.1:
Version 0.9.0.0 ist jetzt verfügbar:
- Neuere Prime95-Versionen wie 30.7 und 30.8 werden jetzt unterstützt
- Die mitgelieferte Prime95-Version ist jetzt 30.8b15
- Bei neueren Prime95-Versionen wird die FFT Größe im Log ausgegeben, wenn ein Fehler aufgetreten ist. Das wird jetzt für die Ausgabe herangezogen sofern verfügbar.
Update 30.04.2022
Version 0.8.2.5 ist jetzt verfügbar:
- Ein reines Bugfix-Release, einige Sprachversionen wir Türkisch haben ein großes "I" in ein kleines "punktloses i" umgewandelt (also z.B. von "PRIME95" in "prıme95" anstatt "prime95"), was dann zu Fehlern geführt hat. Das sollte jetzt behoben sein.
Update 11.05.2021
Version 0.8.2.4 ist jetzt verfügbar:
- Einige Bugfixes
Update 08.05.2021
Version 0.8.2.2 ist jetzt verfügbar:
- Keine funktionalen Änderungen, es gibt jetzt aber mehr Informationen wenn ein Fehler bei den Process Performance Countern aufgetreten ist.
Update 06.05.2021
Version 0.8.2.1 ist jetzt verfügbar:
- Das Script konnte nicht gestartet werden, wenn der Verzeichnispfad ein Leerzeichen enthielt
- Wenn das
/logs/
Verzeichnis nicht vorhanden ist, wird es jetzt automatisch angelegt (was Fehlermeldungen verhindert)
Update 03.05.2021
Version 0.8.2.0 ist jetzt verfügbar:
- Anscheinend gibt es einen Bug in Prime 30.4 & 60.5, der zu falschen Fatal Errors geführt hat. In der nun mitgelieferten Version 30.6 build 4 soll dieser Fehler laut dem Entwickler behoben sein (siehe hier: https://www.mersenneforum.org/showpost.php?p=577388&postcount=274)
- Beim Beenden des Scripts gibt es nun eine kurze Zusammenfassung
- Das Script verhindert nun den Wechsel in den Sleep/Hibernate/Standby-Modus des Computers während der Laufzeit
Update 25.04.2021
Version 0.8.1.0 ist jetzt verfügbar:
- Die
runtimePerCore
Einstellung kann man jetzt aufauto
setzen. Bei dieser Einstellung wird bei Prime95 jede FFT-Größe des ausgewählten Presets für einen einzelnen Kern getestet, bevore er zum nächsten Kern wechselt, wo sich das ganze Spielchen wiederholt.
Für y-Cruncher und Aida64 hat der"auto" Modus eine Laufzeit von 10 Minuten pro Kern (weil ich dort den Fortschritt nicht auslesen kann). - Für die
FFTSize
bei Prime95 kann man jetzt auch eigene Werte eintragen, also z.B. 36-1344. Damit muss man nicht mehr den mode aufCUSTOM
stellen, um eigenen FFT-Größen zu testen (natürlich kann man denCUSTOM
mode aber auch weiterhin verwenden). - Die Einstellung
verbosityMode
wurde inlogLevel
umbenannt - Das Script sollte jetzt auch dann funktionieren, wenn man es als Administrator startet
- Einige Fehler behoben, wenn in der Config Groß-/Kleinschreibung oder überschüssige Leerzeichen vorhanden waren
- Die Fehlererkennung bei Prime95 wurde neu geschrieben, hoffentlich mit besserer Erkennung der Fehler
- Ebenfalls eine verbesserte Erkennung von zu geringer CPU-Auslastung
Update 13.03.2021
Version 0.7.9.0 ist jetzt verfügbar:
- Neue
skipOnError
Funktion
Auf 1 gesetzt wird ein Kern mit einem Fehler bei den nächsten Überprüfungen übersprungen (Standardwert)
Auf 0 wird der Kern auch bei den nächsten Durchläufen mitgetestet und die kumulierte Anzahl der Fehler dieses Kerns wird angezeigt
Update 12.03.2021
Version 0.7.8.9 ist jetzt verfügbar:
- Hoffentlich endgültig die Probleme mit dem Performance Process Countern behoben
- Ein neues "Huge" Preset für die FFT-Sizes hinzugefügt, was jetzt auch der eingestellte Standartwert ist
Update 11.03.2021
(Version zurückgezogen, da sie fehlerhaft war)
- Noch ein Fehler bei den Performance Process Countern behoben
- Einen Fehler behoben, wenn die config.ini korrupt war (z.B. kein Inhalt, weil direkt am Anfang abgestürzt durch instabilen Overclock)
- Die Affinity hatte bei CPUs mit 32 Kernen und 2 Threads nicht korrekt funktioniert, behoben
- Die "numberOfThreads" Einstellung hatte nicht funktioniert
Update 09.03.2021
Version 0.7.8.5 ist jetzt verfügbar:
- Neues "verbosityMode" Setting in der Config. Damit werden mehr Informationen ausgegeben (standardmäßig nur in die Logdatei).
- Neues "delayBetweenCycles" Setting in der Config. Damit kann eine Wartezeit zwischen dem Ende des Runs von einem zum anderen Kern festgelegt werden. Funktioniert nur in Kombination mit "restartPrimeForEachCore".
- Die Fehlererkennung von Prime95 wurde überarbeitet. Nun wird alle 10 Sekunden die generierte results_x.txt auf eine Fehlermeldung in den letzten 3 Zeilen untersucht, und erst wenn keine Fehlermeldung gefunden wurde wird auf die CPU-Auslastung als Erkennungsmerkmal zurück gegriffen.
Hoffentlich behebt das die Probleme, dass Prime95 einen Fehler geworfen hat, das Script aber keine entsprechende Ausgabe anzeigt.
Update 08.03.2021
Version 0.7.7 ist jetzt verfügbar:
Damit sollten jetzt auch deutschsprachige Windows-Versionen korrekt funktionieren, und die Verfügbarkeit des Process Counters wird vor dem Start abgefragt.
Die Readme habe ich auch um eine "Troubleshooting & FAQ"-Sektion ergänzt, dort wird auch auf die beigefügte "enable_performance_counter.bat" Batch-Datei hingewiesen, die den Performance-Counter wieder aktivieren sollte, wobei ich keine Garantie dafür übernehmen kann, dass das tatsächlich funktioniert.
Im Prinzip macht die Batch Datei nur das, was in den entsprechenden Anleitungen manuell gemacht wird.
Die Readme habe ich auch um eine "Troubleshooting & FAQ"-Sektion ergänzt, dort wird auch auf die beigefügte "enable_performance_counter.bat" Batch-Datei hingewiesen, die den Performance-Counter wieder aktivieren sollte, wobei ich keine Garantie dafür übernehmen kann, dass das tatsächlich funktioniert.
Im Prinzip macht die Batch Datei nur das, was in den entsprechenden Anleitungen manuell gemacht wird.
Und auch Version 0.7.8.1:
Die installierte .NET-Version wird jetzt auf mindestens 3.5 geprüft.
Überarbeitete Fehlermeldung bei fehlenden Performance Process Countern.
Überarbeitete Fehlermeldung bei fehlenden Performance Process Countern.
Zum Ausführen reicht ein Doppelklick auf "Run CoreCycler.bat".
Lest die beigefügte readme.txt und schaut euch die config.ini an, dort kann man ein paar Sachen ändern.
Screenshots des Scripts in Aktion:
Hier noch eine beispielhafte Auswertung, wie es bei mir ablief während der Entwicklung. Wie man sieht, braucht das ganze weiterhin seine Zeit (nein, die Auswertung wird nicht automatisch angelegt, das müsst ihr selbst machen ):
Ein Auszug aus der readme.txt:
Mit diesem kleinen Script kann man die Einstellungen des Curve Optimizer für jeden einzelnen Kern seiner CPU auf Stabilität überprüfen. Das Script startet Prime95 mit einem Worker-Thread und setzt die "Affinity" von Prime95 abwechselnd auf die einzelnen Kerne, d.h. es wird immer nur ein einziger Kern gleichzeitig belastet, wodurch sehr gut die Stabilität der Curve Optimizer Einstellung ausgetestet werden kann.
Die bisherigen Stabilitätstests mit PBO und dem Curve Optimizer waren entweder nicht zuverlässig (Cinebench, Windows Repair) oder mit sehr viel Arbeit verbunden (manuell die Affinity über den Task Manager setzen, warten, neu setzen, etc) oder gleich beides. Mit diesem Script braucht man eigentlich nur noch Zeit - davon allerdings doch recht viel. Da immer nur ein Kern gleichzeitig getestet werden kann, bräuchte man für einen 12 Stunden "Prime-stable" Stabilitätstest, wie man ihn bei normalen Overclocks gerne macht, bereits 12x12 = 144 Stunden bei einem 5900X. Bei einem 5600X mit seinen 6 physischen Kernen dann entsprechend "nur" 6x12 = 72 Stunden.
Solch ein All-Core Test mit Prime95 ist leider nicht effektiv mit dem Curve Optimizer, da die Kerne dann nicht so hoch takten können, und man so eventuelle Instabilitäten nicht erkennen kann. Bei meiner CPU konnte ich z.B. den Curve Optimizer auf -30 auf allen Kernen und +75 MHz Boost stellen und damit problemlos 24 Stunden Prime95 durchlaufen lassen,während ich bei diesem Einzeltest dann bei +0 MHz Boost einen der Kerne nur noch mit -9 stabil laufen lassen konnte (ein anderer dagegen lief auch beim Einzeltest noch mit -30 weiter).
Beim ersten Start des Scripts wird automatisch eine config.ini angelegt (die config.default.ini wird kopiert). In dieser kann man einige Parameter ändern, z.B. welcher Modus beim Testen ausgeführt wird (SSE, AVX, AVX2, CUSTOM, wobei SSE den höchsten Takt produziert, da es die CPU am wenigsten belastet), wie lange ein einzelner Kern getestet werden soll, bevor es zum nächsten geht, ob bestimmte Kerne ignoriert werden sollen, etc. Für jedes Setting ist in der Datei auch eine Beschreibung vorhanden.
Als Startpunkt am Anfang könnte man im Curve Optimizer jeden Kern auf z.B. auf -15 oder -20 setzen und dann schauen, welcher Kern durchläuft und welcher davon einen Fehler wirft. Die Kerne mit Fehler könnte man dann z.B. um 2 oder 3 Punkte nach oben setzen (also z.B. von -15 auf -13), die fehlerfreien dagegen 2 oder 3 weiter ins Negative (-15 auf -17). Ab einem gewissen Punkt kommt man aber nicht daran vorbei, nur noch um einen Punkt nach oben/unten zu korrigieren und das Tool sehr lange laufen zu lassen, um auch die letzten Instabilitäten herauszufiltern.
Es ist übrigens beabsichtigt, dass bei aktiviertem Hyperthreading / SMT nur der erste Thread eines jeden Kerns belastet wird, da dabei ein höherer Takt erreicht wird, wie wenn beide (virtuellen) Threads eines Kerns belastet würden. Man kann in der config.ini allerdings auch die Anzahl der Threads auf 2 setzen, wenn man das möchte, dann werden beide belastet.[/spoiler]
Zuletzt bearbeitet: