1. version : en
3 years after the undervolting of my laptop (which improved its performances) I finally unlocked another level of performance. I stumbled upon some thermal pad : a 2-3mm thick fragile silicon-like sticky material, I found on the dead body of another laptop.
I opened my Asus UX305 CA series laptop from 2015 (the one I use since the creation of this blog) and applied the thermal pad to the heat producing components : CPU cooler, RAM chips, SSD… Then I removed the plastic sticker of the aluminium bottom shell of the computer and closed it with the thermal pad touching directly this aluminium external shell.
I even did not got the computer out of it sleeping state (s2idle) doing so. The CPU temperature became lower than 35°C (instead of 45°) while idling awake.
Then I tried a stress test of the CPU (just the yes
command) and watched for temperatures raise. As the results where good I rushed to the /etc/intel-undervolt.conf
file and focused on the power package
line.
My default settings here where like : power package 15/0.002 7/28
Meaning 15w allowed for 2ms and 7w allowed for 28s, then temperature-throttling regime.
I tested several configurations in a progressive manner to reach a virtually fully unlimiting configuration : power package 30/32 20/192
For a 15w CPU it fills unlimited.
Then I restarted my stress test and witnessed that the temperatures don’t go upper than 79°C. It is noticeable on the leg that support the machine (the lap-top), but not unbearable.
The result ? The CPU runs indefinitely at 2,4GHz instead 1,4GHz. My best overclocking, ever.
Then I remembered the CPU scaling governor existence and switched it from powersave
to performance
(having no other choices available) and got the machine running at the official 3,1GHz when doing nothing, then 2,90GHz for around 30s (reaching 90°C) and then slowly decreasing to 2,60GHz to maintain the 90°C (on temperature throttling regime).
Now, sure, we’re at pick performance, and I only regret not having done this before, long before… (and to be true, the computer emits a small coil whine so I keep using the powersave
governor, no luck).
# cat /sys/devices/system/cpu/cpufreq/policy3/scaling_governor (1)
powersave performance
# echo powersave > /sys/devices/system/cpu/cpufreq/policy3/scaling_governor (2)
1 | List possible scaling governors (it exists policy{0,3} don’t know why it’s 3 that works) |
2 | Tells the kernel we want the powersave CPU energy policy |
Bonus: Now, when waking the machine from a long enough sleep, I get the room temperature as CPU temperature.
2. version : fr
3 ans après le sous-voltage de mon portable (qui avait amélioré les performances) j’ai finalement mis la main sur des morceaux de feuilles de gélatine thermique (thermal pad) : il s’agit d’un matériaux souple comme du silicone et un peu collant, présenté sous forme de petites plaques et agissant comme de la pâte thermique épaisse.
Je me suis alors décidé à ouvrir mon Asus UX305 série CA de 2015 (celui que j’utilise depuis la création de ce blog) et coller les "gélatines" thermiques sur les parties chauffantes : le cuivre du radiateur du CPU, les puces de la RAM, le SSD… J’ai également retiré la feuille plastique collée à l’intérieur de la coque en aluminium de la machine avant de la refermer, plaquée sur les "gélatines" thermiques.
Je n’ai même pas pris la peine d’éteindre la machine pour faire ça, elle est restée en veille (s2idle). En sortie de veille la température de la machine au repos étaient passées de 45°C à 35°C.
J’ai alors lancé un petit test de montée en charge (en lançant un yes
dans une console) et observé attentivement la température du CPU qui montait. Comme le résultat était très bon, je me suis précipité sur le fichier /etc/intel-undervolt.conf
en me concentrant sur la liste power package
.
Le réglage par défaut était : power package 15/0.002 7/28
Ce qui signifie que 15w sont autorisés pendant 2ms puis 7w pendant 28s, avant de débouché sur une limite plus guidée que par la température.
J’ai testé progressivement plusieurs configurations jusqu’à arriver à une configuration virtuellement illimitée : power package 30/32 20/192
Pour un CPU de 15w c’est sensé ne rien brider.
J’ai alors relancé le test de montée en charge et j’ai pu constater que la température du CPU ne dépassait pas 79°C ce qui reste supportable une fois arrivé sur ma cuisse.
Le résultat ? Le CPU tourne indéfiniment à 2,4GHz au lieu de 1,4GHz. Mon meilleur overclocking.
Et puis je me suis souvenu de l’existence des politique de multi-fréquences des micro-processeurs et ai basculé la mienne de powersave
à performance
(vu que je n’ai aucun choix intermédiaire sur cette machine) et j’ai enfin revu les 3,1GHz officiels du CPU (qui reste coincé à cette fréquence même quand il ne fait rien pour ne pas perdre de temps à ré-accélérer quand il y a besoin), puis j’ai obtenu du 2,9GHz pendant environ 30s, jusqu’à atteindre 90°C et que le CPU retrouve un équilibre à 2,60GHz et 90°C.
Cette fois c’est sûr, on est au top des performances de la machine et je regrette amèrement de ne pas avoir fais ça plus tôt (toutefois, je suis repassé en politique powersave
pour m’éviter le couinement émis par la machine quand le CPU tourne à 3,10GHz).
# cat /sys/devices/system/cpu/cpufreq/policy3/scaling_governor (1)
powersave performance
# echo powersave > /sys/devices/system/cpu/cpufreq/policy3/scaling_governor (2)
1 | Liste les politiques énergétiques disponibles pour le CPU (il existe des policy{0,3} je ne sais pas pourquoi c’est la 3 qui fonctionne) |
2 | Indique au noyau d’activer le mode powersave du CPU |
Bonus : Désormais la température du CPU en sortie d’une longue veille est tout simplement la température de la pièce.