Statistically overclocking an android phone
I keep coming back to looking for opportunities to teach experimental design in a different manner than “one variable at a time.” Today’s example is overclocking an android phone.
Once you have rooted your device (the Android equivalent of the iPhone jailbreak) you can start to play with the CPU settings in order to squeeze every last drop of speed / performance out of the handset. This is commonly called overclocking – and it has a long heritage in the PC community.
Sure it can go wrong, kill the phone and eat batteries alive — but that’s part of the fun of getting the settings right. So…..
You can change:
- Minimum CPU speed
- Maximum CPU speed
- CPU Governor (how fast the cpu changes up or down in speed)
- I/O Scheduler (how the CPU organises memory read / writes)
- SD Card Cache (how much “buffer” memory is used to smooth out SD card read / writes)
I wanted to explore each factor at 3 possible levels as I felt this would lead to reasonable understanding of what’s happening and it is the least number of levels to see if there are any “non linear” effects.
5 factors at 3 levels needs 3^5 or 243 experiments to cover every combination of factor and level. As a good experimenter I want to also complete x3 replicates — 729 experiments. Not only will I loose the will to live before I complete them all, I am also likely to kill my phone handset after so many changes.
I need another way.
A Taguchi Orthogonal Array is the way forward
This allows you to assess the Main Effects of a larger number of factors quickly, in the minimum number of experiments. In fact my 243 is reduced to 27. With x3 replicates, that is a manageable 81 experiments.


