Jump to content

AMD Threadripper 3970x - best settings for improved thermals and retained performance / Lowest possible temps with the lowest possible loss in perform

Hi!

I recently finished my dual-3090 Threadripper 3970x custom watercooled system. It will be mainly a workstation for simulations (mostly bioinformatics), video editing and 3D rendering.
I have 3 360mm EKWB blocks for cooling. An SE, PE and an XE.
My issue is, that I am worried about the temps of my CPU and coolant.

I am a newbie for hardware and computers in general, but I am keen to learn. Is there a way to change the settings of the CPU to make it run cooler, consume less power but retain the performance it has? I read somewhere that undervolting is different and may not be the best solution on a Threadripper CPU.

If anyone with more knowledge, or experience with the 3970x could help me, and possibly provide a step-by-step guide to change the settings to achieve lower temps it would be very much apriciated. Any background reading is welcome on this topic!

Thank you very much in advance!

Link to comment
Share on other sites

Link to post
Share on other sites

I see two possibilities for what you can do for this.

  1. Undervolt with PBO
  2. Static frequency with static voltage. 

Both have their pros and cons. Undervolting with PBO will give the best performance in single thread workloads and will give better idle power consumption numbers (theoretically, PBO idle is weird), but is almost impossible to fully stress test since you need to test every possible workload to make sure the negative offset works and IMO it's just more annoying to work with overall. Static frequency and voltage is a lot easier to do IMO, a lot easier to stress test (for a workstation this is the most important), multi core performance will remain the same or better, and idle power consumption and single thread performance isn't bad (maybe an extra 10w at idle, IDK exact number I don't work with threadripper much and am just scaling up the Ryzen chips I have worked with), though you definitely lose out a bit. 

 

If you're gonna have all cores loaded up most of the time, I would just do the static frequency and voltage, the extra power consumption at idle and the 5-10% loss in single thread performance won't really make a difference (if you needed single thread performance, you would've bought a 5950X instead), so it's what I'll give a rough tutorial for how to do. Plus it's a lot easier and quicker to do.

 

First thing you want to do is get a baseline of performance. You can do that in any number of stress tests, Cinebench R23, R20, Y cruncher, 7zip, Blender Classroom, whatever. I'm personally partial to Y cruncher since it's relatively quick, pretty consistent, and is a pretty tough benchmark to run (I.E. if it runs in this, it's at least 90% of the way to stable compared to Cinebench which is closer to 60-70), but you can use whatever you want to or use multiple different ones. Have HWiNFO64 open in the background so you can monitor the frequency, core voltage (not VID), and and temps throughout the run. During the run, see roughly what frequency it's running at so you know what your target frequency will be, see the voltages it's running at to know where to start at, see what temperatures it hits (make sure you're improving) and see what the baseline score ends up being so you know you're not losing performance. 

 

After you've got your baseline numbers, go into the BIOS and it's time to start messing with settings. What these settings will be called is specific to whatever motherboard you have, I'm gonna be giving the "what board vendors should call them" names, but just know that for if you can't find a particular setting. First thing you should do is enter in the multiplier. This will depend on the actual motherboard how this applies, but there are two main conventions:

  1. CPU frequency you want in MHz divided 100 (I.E. if you want 4.6GHz you enter in 46).
  2. CPU frequency you want in MHz (I.E. if you want 4.6GHz you enter in 4600).

Figure out what your board wants and enter in the frequency you were hitting in your benchmark. Next you want to find the load line calibration (LLC). It's usually in advanced VRM settings. Every board has an ideal load line setting depending on the CPU, though most of the time it's a middle of the road value, erring on the side of more VDroop rather than less. VDroop is the amount the voltage dips when it goes under load, too low VDroop means that your core voltage under full load is a lot higher than it should be (technical reasons with how a VRM works), too much VDroop means that your idle voltage and light load voltages will be pretty high and under full load the voltage could be a bit unstable, hence why you want to somewhat dial it in. If your board has 9 levels of load line, level 9 is most VDroop and level 1 is no VDroop, I'd guess Level 7 will be the ideal load line. After load line is set, set the VCore voltage mode to manual and enter in the VCore value you measured earlier + 50mV (taking into account a rough amount of VDroop). Once that's all set, save a profile and boot into Windows. 

 

Once back in Windows, repeat what you did before with the benchmarks and HWiNFO64, making sure that the performance is still the same as it was before, everything still runs, make sure the clock speeds are where you'd expect them to be, and see where your new static voltage is hitting under load and at idle. If it's above where it was before under full load, go back in BIOS and adjust it down that amount and retest. If at idle the voltage is way too high (1.5V+) but the load voltage is where it was, change the LLC to one with a little less VDroop. If both of those look good and everything seems stable, lower the voltage 10mV and try again, repeating the above until it stops being stable then raising the voltage to the last known good and saving a profile. 

 

Once it's finally done the benchmarks minimizing the voltage, it's time to use some stress tests to confirm the system is fully stable. You may ask why wait until now to do that, and the answer is very simple: it takes a hell of a lot longer to confirm a system is stable than to confirm it's unstable, so you might as well get it mostly stable first with benchmarks then start raising the voltage until it's fully stable in one of these. There are a couple major stress tests out there, the two big ones I use are LinpackXtreme and Prime95 small FFTs. Prime95 Small FFTs is the absolute hardest thing a CPU can run and outputs the most heat, so if your CPU is stable in this, it's stable in everything. Problem with it is that it's a very unrealistic workload and will require a bit more voltage to make 100% stable. I'd still want my system to be stable in Prime95 though if it's a workstation that needs 99.9999999% uptime, though if you're more concerned with temps and power consumption than about 99.9999999% uptime you can always skip this without too much worry. Linpack Xtreme is still a very hard workload to run, but it's a lot easier than Prime95 and actually somewhat realistic in the type of workload it is. Pick whichever one you want to stress test with (both is an option), and try to run it for a set amount of time (I'd say 1 hour at the minimum, 3-4 preferred, with the upper limit realistically being whatever the most amount of time you can leave it to with diminishing returns definitely being a thing). Have HWiNFO64 open in the background to make sure the clock speeds are staying where they're supposed to and the thermals look good. If it crashes on one or more cores, up the voltage 10mV until it'll run for the amount of time you want.

 

Once it's run for that amount of time, your system will be about as fast as it was before but should be using a bit less power and running cooler. You can also do the same thing as above but increasing the frequency a bit (add 100-200MHz to what you were trying to achieve) and effectively overclocking it, getting more performance out of it but still likely having lower temps overall compared to stock. 

Link to comment
Share on other sites

Link to post
Share on other sites

26 minutes ago, RONOTHAN## said:

I see two possibilities for what you can do for this.

  1. Undervolt with PBO
  2. Static frequency with static voltage. 

 

WOW! Thank you very much for the walkthrough! I am very thankful! Tomorrow I'll have the time to test it, and I'll report back with the results.

Just out of curiosity, how would possibility #1 work? The PBO method? Do you have some sources where I can find out more about that method?

Thank you very much!

Link to comment
Share on other sites

Link to post
Share on other sites

51 minutes ago, CapoGhatto said:

WOW! Thank you very much for the walkthrough! I am very thankful! Tomorrow I'll have the time to test it, and I'll report back with the results.

Just out of curiosity, how would possibility #1 work? The PBO method? Do you have some sources where I can find out more about that method?

Thank you very much!

PBO is just weird to work with. There are a couple different methods for how to do it, doing custom power limits with it, just doing a straight voltage offset, doing it with Ryzen Master, and probably one that I'm forgetting. I don't do a lot with PBO, with the chips I deal with the extra 100MHz or 5-10C you can save aren't usually the worth the time or effort to stress test it IMO. There are a ton of places that have info on how to do it, find one (Ryzen 3000/5000 tutorials work just as well, the algorithm is the same), I just don't know any good ones off the top of my head. 

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, RONOTHAN## said:

PBO is just weird to work with. There are a couple different methods for how to do it, doing custom power limits with it, just doing a straight voltage offset, doing it with Ryzen Master, and probably one that I'm forgetting. I don't do a lot with PBO, with the chips I deal with the extra 100MHz or 5-10C you can save aren't usually the worth the time or effort to stress test it IMO. There are a ton of places that have info on how to do it, find one (Ryzen 3000/5000 tutorials work just as well, the algorithm is the same), I just don't know any good ones off the top of my head. 

Does Ryzen master work on Threadripper? It has the auto Curve Optimizer.

 

@CapoGhatto If Eyzen master works on ThreadRipper, the auto CO seems to work quite well, it takes a multi hour manual process and turns it into a 30 minute "while you drink your coffee" process. It managed to get me a -29 which saved a fair bit of power and heat, while keeping my performance at or above what was stock.

 

 

Screenshot 2022-06-29 091100.jpg

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, Blue4130 said:

Does Ryzen master work on Threadripper?

Last I checked it does. 

 

1 minute ago, Blue4130 said:

If Eyzen master works on ThreadRipper, the auto CO seems to work quite well, it takes a multi hour manual process and turns it into a 30 minute "while you drink your coffee" process. It managed to get me a -29 which saved a fair bit of power and heat, while keeping my performance at or above what was stock.

The problem with Curve Optimizer is that it isn't perfect. I have seen issues on some of my own chips with crashing at idle, and from what I've seen online it's not that uncommon an issue. It might be worth a shot, but it's very hard to diagnose issues with it if they do come so I'd have a hard time recommending it for a workstation. 

Link to comment
Share on other sites

Link to post
Share on other sites

Slightly different beast but I've gotten really good results running a power limit on my 2700X (140W in my case) and then setting the other boost settings moderately aggressive. I get good single core boost clocks, I get almost the same all core boost speed, but at 40-50W less power draw than just letting it run uncapped...and I still get like 90% the same performance I was getting before. That extra 100-200mhz it'll try to get makes A LOT of extra heat and just is not worth it 99% of the time unless you're doing Cinebench 'drag runs' for who's got the best benchmark numbers lol.

 

Prime95 small FFT is a great thermal stress benchmark for testing cooling and power draw, I've found it can catch some instability as well and pretty quickly if it will catch it. I've also had stability problems it didn't catch and I've found the blend test to be the best all around at catching stability issues outside of pure core issues. Memory has a big impact on stability and when you're tinkering with the last 100mhz you're also bound to be messing with the memory speeds and timings and the IMC voltages as well. Blend has been great to me for helping to narrow down if it's a core or memory issue by seeing what kind of stress failed out a thread then running more tests like that to narrow the issue down.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×