Title
Feedback on plan for stress testing

Motivation

I recently fried an i7-14700k by stress testing it for hundreds of hours. This extended testing was the wisdom of the day last time I had a new CPU. However, the more I tested the less stable it got, which in turn prompted more testing. Hoping that I'd have a better experience overall with a better binned chip, I now own an i9 (after all, my i7-E made for a painless experience and has lasted over 10 years); and not wanting to repeat my mistake, I decided to plan out my test and what success looks like.

I'm hoping that you all, the people of Reddit, might critique this plan of mine.

Existing Guides

I am aware of this guide, and others, but they don't quite work for me. They juggle voltage and frequency, which is in part what got me into trouble. If chip degradation weren't a concern, as was the case when I OC'ed the hell out of my current Ivy Bridge-E, then the guides I've found would be great, but unnecessary as I've done this many times before. Here, I fix power settings, and go from there.

Goals

The ultimate goal is to find the maximum performance at a fixed, low voltage and verify its stability while minimizing degradation of the CPU in the testing process. My office gets very hot in summer and so I will be sticking to the 125W PL1, so the best way to maximize performance is to minimize voltage. Also, I hope that extends the chip’s life. To be more concrete in what I expect to achieve:

  • 5.4/4.2 GHz on the P-/E-cores
  • Ring bus of 4.8GHz
  • A minimal negative Vcore offset (on my board, "auto" sometimes applies a positive offset, which scares me.)
  • Minimal AC_LLC
  • VID Behavior "typical"
  • IMC/RAM "1 rung lower" than the best it can do.

So this can be summed up as "the best I can do with an AC_LLC of 0.01, LLC of 3 (though for long-term stability I'll use LLC 4), and CPU offset of about 0V". Which is not going to be fast at all, but it also shouldn't be terribly power hungry or prone to degradation. I expect to be trading -10% performance for -50% power and +100% sanity.

Known Limitations

I exclusively use Linux, but hold no illusions that it has its own shortcomings. Two in particular are relevant here.
* There is no way to monitor the Ring Bus frequency
* Though I can get live voltage readings, they are garbled
I'm not too concerned about the last one as I am sticking strictly to undervolting. The first item is problematic, but I think I can work around it well enough.

Methodology

Hardware

  • Intel Core i9-14900k
  • ASUS ROG Strix Z790-A Gaming WiFi II
  • EK Nucleus 360mm AIO
  • 850W Super Flower Leadex Titanium
  • Team Group T-Create DDR5-7200 CL34
    ## Basic Tests
  • Run stressapptest -W -s 60, as this is a quick, reasonably low-stress test that's reportedly good at finding memory-related errors. This takes 60 seconds.
  • Compile the Linux kernel on all cores with the default configurations (as provided by make defconfig). This is a medium stress test with a real-world work load. This should take about a minute.
  • Run Linpack with a 50k sized problem on even numbered physical cores, then odd numbered physical cores. This is a heavy AVX2 workload which can heat up a system even better than Prime95, but here I'm running it on half the cores to limit that heat and also ensure the cores can reach their target frequency despite power restrictions. This takes about 3 minutes per run to complete.
  • Run MPrime (Prime95 for Linux) with a non-AVX2 workload at all three sizes for three minutes each, alternating between AVX1 and non-AVX. The main issue here is that it can't run the cores up to their max frequency without pushing more power through the CPU than I'm comfortable with. This is a three minute test.
  • Run 7zip benchmark twice. A multi-threaded integer test. Should take a minute.
  • RHash benchmarks… all of them. Run on each core as it's single threaded. Takes about 30 seconds each time.

Running all tests subjects the processor to about 30 minutes of intense stress plus several more of lesser strain.

Establish a base

P-Cores

The first step is to set
* PL1=PL2=200W
* AC_LLC = 0.01 ohms
* 54 multipliers for the P-cores
* Disable E-Cores
* A negative Core, Cache, and CPU voltage offset at the minimum
* VID Behavior "typical"

Note, the default LLC is 3. For now, I'm keeping that! Also, the voltage settings are pretty low, but failure is faster than success.

My goals should be sufficiently conservative that this should be pretty close to stable already. I'll confirm this by running my basic tests sans MPrime since it can't max out the cores anyway. While trying to find limits, I intend on only running Linpack on one group of CPUs. If Linpack can't max out the cores by grouping them in 2 groups, try 4 groups instead.

Once I think I've found the max, I'll run all six tests in full, sans MPrime.

E-cores

Enable E-cores, and set the multiplier to 42 to start with and reduce the P-core multiplier by 2, then repeat the above, though where possible, limit tests to just the E-cores. Once the max E-core multiplier has been found, increase the P-core multiplier by 2 and run the standard tests in full.

Cache/Ring

Next I'll set the Cache/Ring maximum multiplier to 45, the default if I'm not mistaken. I'll then repeat the previous process of increasing or decreasing this multiplier to work within the confines of the voltage limits.

Now, there is a snag in that I can't confirm via monitoring tools that it actually is hitting this value, so before I call it good, I'll need to also set the minimum multiplier to match the max multiplier then retest.

IMC/RAM

And now I set XMP, adjusting downwards as needed as I run MemTest86. MemTest86 isn't particularly good at catching memory issues, but it's low stress. Then I actually go into the OS to run the standard tests.

Once done, reset the min Cache/Ring multi to Auto and run StressAppTest for 20 minutes without -W.

Expected Stress

In total, I expect this stage to put 2 hours worth of heavy stress on the CPU, which is more than I'm comfortable with, but way less than I had been subjecting it to.

Stress testing

Now that I've established a baseline, let's move on to actually stressing the components beyond what I intend on using long-term. The logic here is that by testing at higher frequencies, I can do so for much shorter and thus reduce the amount of degradation.

I'll be sticking with LLC 4 from this point onward, including once I'm done.

Bump up speeds

Increase max current and power by 20 amps and watts respectively, and reduce the IMC/RAM speed by one slower on the list.

I'll now try increasing the speed of first the Cores, and then the max Cache/Ring, by +200MHz, rerunning tests as per the previous section. If they can be pushed further with LLC 4, great, but I'm not going to try! I'm also leaving the voltage offsets alone. As before, the minimum Cache/Ring multiplier needs to be set to match the maximum before concluding.

Once that's done return the IMC/RAM back to whatever it was before. Retest.

Stressful Testing

Now it's time to put the CPU through its paces. I'll increase the power so that PL1=PL2=253W, the current is 300A, and leave min Cache = max Cache. Skip the usual tests save for 7zip and RHash. Run 5m StressAppTest, MPrime runs that each last 6m. Compile the kernel with make allyesconfig.

Return the minimum Cache multiplier to Auto and set PL1=240W.

Compile the kernel in a loop 30 times with make allnoconfig on all cores with sleep 1 before and after, and run Linpack with a problem size of 15k 14 times per CPU group. Then run RHash benchmarks alongside Linpack loops on whatever cores Linpack is using.

Expected Stress

For the actual stress testing, I expect the processor to be exposed to under 3 hours of stressful testing during the actual stress testing part of this.

Long-term testing

What's left is to test long-term. This is done by using it. I don't yet trust it with my work or back-ups, but everything else seems reasonable at this point.

Set:
* PL1 = 125W and PL2 = 200W
* Max CPU current to 250A
* Reduce core and cache frequencies by 100MHz
* Drop the RAM/IMC down a notch

Conclusion

That's the best I could come up with. I whittled the total amount of especially heavy testing down to a total of about 5 hours. This is divided over three "difficulty levels", if you will, each representing a different potential for degradation. What's more, at no point should the power go out of spec.

Does that look safe for the CPU? Is it sufficient to ensure long-term stability? Might I cut it back somewhere?

1 Comment

  1. DartinBlaze448

    you must have had a really shit CPU if you managed to fry it with just a few hours of stress testing, and you should have claimed warranty for it. Modern CPUs are capable of running at TJ Max(100 degrees C) for years on end. At best you’d take a few years out of the already ridiculous life spans of the silicon (around 25 years). If your only real goal is to optimize for longevity, I would simply reset the bios settings to default, disable any bios optimized settings presets(e.g Asus performance enhancement) to use Intel’s stock power limits, which also prevents using much higher voltage than required. test out your system a bit, your long power limit should be whatever your system can keep under 95 degrees in steady state, and short should be same as Intel spec.(253W) 125 watts will hamper the performance of that card pretty significantly. You are cutting performance for no real reason by underestimating the capabilities of your chip. Intel CPUs have 3 years of warranty, running within product specification. i.e even if you run at 253 watts at 99 degrees C for 3 years straight 24/7, you’re still running it perfectly within spec, as Intel rates it to run at these conditions. If it doesn’t it’s simple a defective product.

Write A Comment