[FUTURE APP] Overclocking/Undervolting stability test & power efficiency optimizer
Here is the description of a potential app that might be developed under an open source license by united developers.
The app has several intents we may discuss:
1/ Validate the CPU stability
- Rare defective devices are not stable with manufacturer's Frequency, voltage and governor configuration.
- With overclocked devices, stability is far more challenging and as difficult to verify.
CPU stability is influenced by a lot of parameters, like
- Frequency table
- Voltage table
- Governor used
- Quality of the voltage regulation & switching implementation (hardware and software)
- Environmental heat, by other components (GPU, battery, screen) or the external temperature especially with black devices under the sun.
2/ Validate the GPU stability
Same thing here, most of our devices GPU can be overclocked but so far there is no good tool to validate its stability.
3/ Validate the system stability
Torture test: CPU + GPU + screen at 100% stability & charging at the same time
This is quite a common scenario when phone or tablets are used as gaming devices.
4/ Provide help to optimize the power efficiency
Today many OC users tend also to reduce the power efficiency of their device by setting inappropriate minimal and maximal frequencies (reduces efficiency) or by configuring too high voltages.
The best OC in general, or at least the most energy efficient consist of increasing the frequencies without changing the voltages.
Even if a higher frequency increases the power envelope, it only improve the power efficiency.
Also, undervolting for reduced frequency / power energy states improve power efficiency.
Future: automatic OC optimizer with profiles
- Best power efficiency without overclocking (undervolting only)
- Best power efficiency
- Max performance
With this feature, It could become the master of every OC tool.
Of course it will require the ability to speak to each existing sysfs controls formats, which is not such a big deal as most are quite cleanly implemented!
However it would make a few apps obsolete & also few people mad, which is definitely a negative point.
Another idea for this optimizer could be to allow for other OC apps to use the stability test engine and do the optimization themselves.
Good old stability stability test traditionally has been trying to make your CPU hot. As hot as possible, consume the most power, see if it crashes, and that's pretty much all.
While this approach could work with old PC CPU, it's now totally outdated.
Even if an excess of heat is still capable of making a CPU crash, modern CPU have quite complex usage behaviors like
- Switching Frequency and Voltage all the time.
- Entering and leaving sleep over and over, each time you lock/unlock your device, of the baseband wake it up by receiving a message, etc.
Like in every low level hardware stuff, the most delicate operations are switch of states, so, what a stress-test needs to do contains:
For me the reference test is "Intel Linpack" x86 implementation like you see in IntelBurnTest
. I heard linpack binary is what they use in factory to determine which is the frequency rating of each CPU.
I don't know if it's true but I've always been impressed by the short time needed to detect an unstable PC system reliably where other tools like "prime95" could run for hours without giving usable result.
The ability to let the CPU (or GPU) switch frequencies
It can be done:
- by varying the CPU load. CPU governor will do its thing all alone.
- by "force" modifying the CPU frequency directly
Let the device enter sleep and wake it up
Many OC devices seems to work well but suffer from "sleep of death" issue. IE never wake up.
Sometimes even non-OC device have the same problem if you use ondemand governor instead of conservative.
I guess this is definitely something that can be implemented in the stability test
Detect non-fatal calculation errors
Like Intel Linpack test, errors detecting before a crash is smart and much safer.
It also allow to reduce dramatically the required test run time.
told me about the existing app named StabilityTest
In the description the implementation looks very good, with the ability to detect non-crashing calculation errors.
However after about 20 minutes of test at a known unstable frequency on my phone, I get no error.
However if I keep the same OC'ed frequency, starting an OpenGL game, or let the phone enter sleep and waking it up a bit later leads to an unrecoverable freeze.
So, this app looks good but its implementation seems to lack the full stress ability required to simulate a real usage pattern.