Like I did with my 2700X and my GPU and as I hinted in another thread I have decided to give undervolting my 5900X a try. My initial plan was to use two games (Shadow of the Tomb Raider, Guardians of the Galaxy) as well as Cinebench to benchmark the undervolted CPU as well as CoreCycler to verify the stability to a certain degree. It should be noted that I do not test for 24/7 stability, but rather test until a stability I deem sufficient has been reached.
At the start, I set each core to a negative offset of -10 and ran my benchmarks. One thing that was seemingly shown by Guardians of the Galaxy was that there was a problem with a -10 offset which can be seen here:
Stock:
Undervolt:
It seems like GotG is very good at picking up an unstable undervolt and that there a frametime spikes if the core isn’t stable. CoreCyler agreed with GotG’s assumption and I turned out that my best core (core 2) is unable to run stable at any kind of negative offset (I didn’t test -1, but it was still unstable at -2). With the core 2 issue being resolved I ran GotG’s benchmark again and the frametime spikes still seem to occur, even though less pronounced than in the image above.
Thus, it seems as if another core is still unstable, but I’m currently down to 50% of my cores and all seem stable (== 1h of CoreCyler with default setting) enough. I’m wondering if I should ditch CoreCyler for the time being and just use GotG to verify stability while I do adjust the core affinity by means of the command line.
That being said, I’m wondering if I should something different than FFTSize = Huge
, e.g. Moderate
, Heavy
or HeavyShort
since the seem to be recommended by a certain Curve Optimizer Guide Ryzen 5000 ([1]). I’m also wondering if I’m wasting my time with a 1h run given that the Core 2 instabilities were picked up before the 10min mark had been reached.
Also, I’m wondering if I’m wasting my time in general given that I would like to have an increase in performance, or decrease in voltage and temperatures, but without suffering any frametime spikes like the ones shown above.
Are there other people with Ryzen 5000 Curve Optimiser experiences? How were you testing for stability and performance degradation?
Edit 10.12.2021: After I had a look at ProcessLasso, as suggested by @infinitevalence I noticed that there wasn’t a portable version available and I didn’t want to install anything for the sole purpose of testing. As I result, I used Windows’ PowerShell to adjust the affinity accordingly which does work. However, it is utterly boring and I wasn’t really motivated to do any kind of testing.
Thus, I decided to write a PowerShell script that starts Cinebench r23 and both iterates through all of my cores, sets the affinity accordingly and writes the output into log files. Now, my presence is only required to parse the output and verify that everything went according to plan.
I am still torn if I should share this script and put it on GitHub. On one hand, I do like to share things like that, on the other it is hacked together and its usability is also not the greatest.
Anyway, if you want to have a look at the script or use it for your purposes there you go:
$cinebench = "<Path to cinebench>"
$logFolder = "<Path to log folder>"
For ($core=0; $core -le 11; $core++) {
$formattedCoreNumber = '{0:d2}' -f $core
Write-Output "Saving to $logFolder\uv$formattedCoreNumber.dat"
$cinebench = Start-Process -FilePath $appName -ArgumentList "g_CinebenchCpu1Test=true" -RedirectStandardOutput "$logFolder\uv$formattedCoreNumber.dat" -PassThru
# The polling is necessary because the render process is started separately
For ($i=0; $i -le 150; $i++) {
$cinebench.ProcessorAffinity = 3 -shl ($core * 2)
Write-Output "Setting Affinity $i"
Start-Sleep -Milliseconds 200
}
Write-Output "Waiting for CinebenchR23...."
Start-Sleep -s 120
Get-Process Cinebench | Select-Object ProcessorAffinity | Out-File -FilePath "$logFolder\uv_af$formattedCoreNumber.dat" -Append
$nid = (Get-Process cinebench).id
Wait-Process -Id $nid
Write-Output "Me so tired...."
Start-Sleep -s 120
Write-Output "Me awake :-\)"
}
Read-Host -Prompt "Press Enter to exit"
Edit 25.01.2022
I know it has been a while, but I have concluded the -10
and -15
curve I wanted to test and wanted to share my results.
All -10 - Core 2 0:
Multi: 21195, 18172, 21305, 21503, 21532, 21544
Avg: 20,875
Single C00: 1577.00, 1584.00, 1582.00, 1595.68, 1604.87, 1587.02
Avg: 1588.43
Single C01: 1590.00, 1598.00, 1603.35, 1596.21, 1588.22
Avg: 1595.16
Single C02: 1604.76, 1600.12, 1584.88
Avg: 1595.59
Single C03: 1594.00, 1591.00, 1590.57, 1585.11, 1584.18
Avg: 1588.97
Single C04: 1577.00, 1586.00, 1597.36, 1593.72, 1577.43
Avg: 1586.3
Single C05: 1573.00, 1567.00, 1583.44, 1577.32, 1561.02
Avg. 1573.36
Single C06: 1538.00, 1540.00, 1556.50, 1554.37, 1538.75
Avg: 1545.52
Single C07: 1568.00, 1568.00, 1579.93, 1572.69, 1566.77
Avg: 1571.08
Single C08: 1543.61, 1534.29, 1528.38
Avg: 1535.43
Single C09: 1550.90, 1541.06, 1530.53
Avg: 1540,83
Single C10: 1535.94, 1530.26, 1520.06
Avg: 1528.75
Single C11: 1534.60, 1549.99, 1539.09
Avg: 1541.23
All -15 - Core 2 0:
Multi: 21607, 21680, 21548
Avg: 21,611 (+3.53%)
Single C00: 1580.82, 1593.18, 1550.20, 1591.50, 1550.58
Avg: 1573.46 (-1%)
Single C01: 1600.78, 1595.61, 1557.85, 1601.94, 1592.72
Avg: 1589.78 (-0.4%)
Single C03: 1597.18, 1600.43. 1597.53, 1597.76, 1599.32
Avg: 1598.44 (+0.6)
Single C04: 1599.96, 1592.00, 1599.89, 1598.48, 1600.49
Avg: 1598.16 (+0.7%)
Single C05: 1580.90, 1583.45, 1588.90, 1586.25, 1574.30
Avg: 1582.76 (+0.6%)
Single C06: 1556.03, 1559.99, 1560.15, 1555.01, 1559.59
Avg: 1558.15 (+0.8%)
Single C07: 1575.84, 1578.83, 1578.93, 1585.78, 1589.31
Avg: 1581.74 (+0.7%)
Single C08: 1539.22, 1544.48, 1540.65, 1549.81, 1546.47
Avg: 1544.13 (+0.6%)
Single C09: 1548.41, 1558.70, 1552.50, 1558.21, 1553.57
Avg: 1554.28 (+0.9%)
Single C10: 1532.43, 1534.71, 1533.44, 1532.78, 1536.99
Avg: 1534.07 (+0.3%%)
Single C11: 1550.39, 1553.90, 1559.99, 1560.37, 1563.50
Avg: 1557.63 (+1%)
There has been a small performance increase for all cores except Core 0 and Core 1. However, I’m currently not entirely sure if 1% difference is in the margin of error and I would take another couple of samples to meaningfully calculate this margin.
As a result, I will treat it as margin of error and set my curve to -20
. If there is yet another drop of on the already weaker cores I will have to bump this number up again. Also, I might have to redo my -10
testing on these cores because my testing procedure changed a tiny bit and this might also affect the results. Thus, I will continue my testing and update this thread once I’m done with -20
.