Comment overclocker son Raspberry Pi de la manière la plus efficace et la plus sûre possible ? Surcadencer le processeur de son Raspberry Pi peut améliorer grandement les performances de celui-ci. Peu importe si vous possédez un Raspberry Pi 2 ou Raspberry Pi 3, ce guide sera valable pour chacun d’eux.

Une chose qu’il faut prendre en considération, c’est que l’architecture du Raspberry Pi 3 a grandement évolué par rapport à ses précédents modèles. À travers des techniques comme l’overclocking du processeur et le survoltage, on va pouvoir tirer un grand bénéfice de performances sur Raspberry Pi 3. Pour ce qui est du Pi 2, ne vous attendez pas à un grand gain de performances dues aux caractéristiques limitées du Raspberry Pi 2 par rapport au Pi 3.

Risques et avertissements

Avertissement 1

L’overclocking d’un processeur, quel qu’il soit est dangereux pour votre matériel. L’overclocking et le survoltage peuvent endommager à long ou court terme votre matériel. Ne tentez pas ça chez vous si vous ne savez pas ce que vous faites !

Avertissement 2

Pour le moment, il n’y a aucun support officiel pour l’overclocking sur Raspberry Pi 3. Je ne serai en aucun cas responsable de n’importe quels dommage ou dysfonctionnement de votre Raspberry Pi. Si vous suivez les instructions de ce guide, vous le faites en acceptant les risques que vous encourez vis-à-vis de votre matériel.

Avertissement 3

Overclocker son Raspberry Pi peut amener les composants de celui-ci à chauffer jusqu’à une température avoisinant les 90/100°C. Cela peut également faire planter les programmes s’exécutant sur votre Raspberry Pi et dans le plus mauvais cas endommager le CPU ou la puce mémoire. Pour prévenir cela, il est fortement recommandé de placer des dissipateurs thermiques sur les composants les plus importants du Raspberry Pi et de les refroidir grâce à un ventilateur.

Ne suivez pas ce guide sans refroidissement actif sur votre Raspberry Pi !

Équipement et matériel

Pour overclocker son Raspberry Pi, on aura besoin de trois composants essentiels :

  • Un Raspberry Pi. Pendant ce tutoriel, nous utiliserons un Raspberry Pi 3 Model B V1.2 avec Raspbian GNU/Linux 8 (Jessie).
  • Une bonne alimentation. Ici je recommande une alimentation 5V pouvant fournir au minimum 2A. Le Raspberry Pi 3 peut consommer jusqu’à 1,5A, voir plus en cas de pics de consommation. Donc 2A est le minimum. Pour ma part, je possède une alimentation 3A.
  • Un moyen de refroidir votre Raspberry Pi est essentiel pour prévenir de la surchauffe. En overclockant le CPU, sa fréquence augmentera, et il travaillera plus vite, consommera légèrement plus et chauffera plus. Je recommande de petits dissipateurs thermiques sur les composants principaux et un mini-ventilateur pour refroidir le CPU.

Raspberry Pi 3Raspberry Pi 3

Alimentation pour Raspberry Pi Aukru 3AAlimentation Micro USB 5V Aukru 3000mA pour Raspberry Pi

heatsink_RaspberryPiDissipateurs thermiques pour Raspberry Pi

 

Les dissipateurs sont à placer comme ceci :

placement_dissipateurs_rpi

Afin de placer le ventilateur au plus proche du CPU, j’ai choisi ce type de boîtier qui est adapté au montage d’un ventilateur sur Raspberry Pi (j’avais encore une vieille version qui traînait et qui n’est plus fabriquée) :

boitier_complet_ventilateur_dissipateursBoîtier complet pour refroidissement Raspberry Pi. Inclus le ventilateur + trois dissipateurs.

Une fois l’ensemble assemblé, on peut commencer à préparer notre système à l’overcloking.

Checkup du Raspberry avant overclocking

Comme d’habitude, à chaque tutoriel / explication / article… On met à jour son système ! C’est obligatoire !

Etape obligatoire !
$ sudo apt-get update && sudo apt-get dist-upgrade

C’est fait ? OK. Maintenant, la seconde chose importante à faire c’est d‘installer l’outil qui va nous permettre de surveiller les performances de notre Raspberry Pi : j’ai nommé “sysbench” !

Installer sysbench
$ sudo apt-get install sysbench

Bon, maintenant, on va passer aux commandes nous permettant de monitorer les données les plus importantes à surveiller pour l’overclocking, à savoir la fréquence du processeur et sa température.

Monitorer la température du CPU

Pour visualiser la température du processeur, on va utiliser la commande vcgencmd measure_temp. Afin de visualiser la température chaque seconde, on peut créer une boucle “while” en code bash qui intègre notre commande :

Monitorer la température CPU
$ while true ; do vcgencmd measure_temp ; sleep 1 ; done

surveillance-de-la-temperature-raspberry-pi

Cette boucle peut être interrompue avec CTRL+C.

Monitorer la fréquence du CPU

Pour savoir comment la fréquence actuelle de votre processeur est paramétrée, il vous faudra lire les différentes valeurs se trouvant dans les fichiers  cpuinfo_min_freq, cpuinfo_max_freq et cpuinfo_cur_freq qui se trouvent dans le répertoire /sys/devices/system/cpu/cpu0/cpufreq/. Chaque valeur correspond à une fréquence particulière :

  • cpuinfo_min_freq : Il s’agit de la fréquence minimale pour le mode “idle”.
  • cpuinfo_max_freq : il s’agit de la fréquence maximale du processeur.
  • cpuinfo_cur_freq : il s’agit de la fréquence actuelle du processeur.

Pour voir ces valeurs, utiliser la commande cat en mode admin :

Monitorer la fréquence CPU
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

surveillance-frequence-cpu-raspberry-pi

Paramétrer la fréquence par défaut

Le Raspberry Pi utilise un mode, dit mode “idle” qui a l’intelligence de modifier la fréquence du CPU selon le besoin. Cela a pour but de moins solliciter le CPU, de réduire la consommation et la chauffe de celui-ci. Par exemple, quand aucune tâche n’est lancée les fréquences sont de :

  • arm_freq = 600 MHz (fréquence du processeur ARM)
  • core_freq = 250 MHz (fréquence des coeurs GPU)

Si des processus sont en train de tourner et sollicitent le processeur, les fréquences sont de :

  • arm_freq = 1200 MHz
  • core_freq = 400 MHz

Pour overclocker son Raspberry Pi efficacement, nous ne voulons plus de ce mode idle (ça sera plus simple pour régler la fréquence maximale). Pour désactiver ce mode, il faut mettre ces lignes à 1 dans /boot/config.txt :

  • force_turbo = 1 (Attention ! Changer ce paramètre fera sauter la garantie de votre Raspberry Pi)
  • boot_delay = 1
Les personnes qui ont lu cet article ont aussi lu :  [PiRobot] Partie 2 – Installation de WiringPi et configuration des bibliothèques I²C

Une fois le fichier modifié, redémarrez votre Raspberry Pi et vérifiez la fréquence actuelle de votre processeur. Celle-ci devrait être bloquée à 1 200 000 KHz.

Monitorer la fréquence CPU
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

surveillance-frequence-actuelle-raspberry-pi

Premier test de performance, sans overclocking

Pour un premier test de performance, on va utiliser sysbench. Pour se faire, on va rentrer la commande suivante :

$ sysbench --test=memory --cpu-max-prime=2000 --num-threads=4 run

sysbench-sans-overclocking-raspberry-pi_v2

Ces résultats sont l’image des performances de notre CPU. Retenez bien ces valeurs, ils nous serviront plus tard pour comparer les performances de notre overclocking. On va enfin pouvoir passer à l’étape suivante : overclocker son Raspberry Pi !

Améliorons les performances : Overclocker son Raspberry Pi !

L’ensemble de la configuration concernant l’amélioration des performances du Raspberry Pi s’effectue principalement dans le fichier /boot/config.txt. Afin de réaliser l’overclocking, il faudra modifier certaines variables dans ce fichier. Il y a plusieurs façons différentes d’overclocker son Raspberry Pi :

  • Overclocker le CPU du RPi. Cela signifie de changer le paramètre “arm_freq”. Il s’agit de la fréquence du processeur ARM en MHz.
  • Overclocker le GPU du RPi. Il s’agit ici du paramètre “core_freq”. C’est la fréquence des coeurs du processeur graphique en MHz. Ce paramètre impacte les performances du processeur ARM, car le GPU pilote le cache L2.
  • Overclocker la mémoire du RPi. Pour cela, on touche au paramètre “sdram_freq”. Il s’agit de la fréquence mémoire SDRAM en MHz.
  • Additionnel : Extension de la mémoire du RPi par le biais de ZRAM. ZRAM va compresser la mémoire pour la rendre moins dense et augmenter la rapidité d’exécution.
  • Additionnel : Survoltage processeur. Il s’agit ici d’ajuster la tension du noyau processeur ARM / GPU grâce au paramètre “Over_voltage”. Cela peut aider pour maintenir la stabilité du système. Les valeurs supérieures à 6 ne sont autorisées que lorsque les paramètres “force_turbo” ou “current_limit_override” sont spécifiés.
  • Additionnel : le paramètre “Force_turbo” à 1. On l’a déjà fait. C’est recommandé pour la phase d’overclocking, car c’est plus simple d’avoir tout le temps la fréquence au maximum pour régler au mieux nos paramètres d’overclocking. Une fois les paramètres réglés, on peut remettre cette variable à 0 pour réactiver la fréquence dynamique du CPU… ou le laisser pour avoir tout le temps les performances au max ! (Attention, ce paramètre à 1 peut faire sauter la garantie de votre Raspberry Pi).

Avant de changer le moindre de ses paramètres, soyez sûr d’avoir effectué une copie du fichier /boot/config.txt.

Selon le Raspberry Pi que l’on possède (version, n°série, fabricant, etc.), les tolérances de fabrication peuvent être différentes. Ainsi, les valeurs correctes ne peuvent être déterminées qu’en essayant la plus grande variété de paramètres. Les valeurs optimales ne peuvent être trouvées qu’en les testant individuellement sur chaque carte Raspberry Pi. Cela explique notamment pourquoi toutes nos cartes sont nativement bridées par les versions officielles de Raspbian.

Comment savoir si mes paramètres sont bons ?

La grande majorité des problèmes qui surviennent avec de mauvais paramètres, et donc un mauvais overclocking, surviennent au démarrage du Raspberry Pi. Si un échec se produit au démarrage (message d’erreur, écran noir, redémarrage intempestif, etc.), débranchez votre Raspberry Pi et rebranchez-le en maintenant la touche “SHIFT” ou “MAJ” enfoncée pendant le prochain démarrage. Cela désactivera temporairement tout overclocking, ce qui vous permet de démarrer le Raspberry Pi normalement, pour modifier vos paramètres.

Overclocker les fréquences pas à pas

Pour overclocker son Raspberry Pi, il faut toujours y aller pas à pas. On augmente une valeur, on redémarre, on teste si tout va bien. Et on recommence ce processus autant de fois que nécessaire jusqu’à arriver aux limites de ce que le Raspberry Pi peut supporter. Une fois arrivé à ces limites, on pourra affiner le réglage en jouant sur le paramètre “over_voltage” qui nous permettra de stabiliser le Raspberry Pi. Pour commencer, faites comme suit :

  1. Voici les valeurs par défaut des paramètres sur le Raspberry Pi 3 :
    Valeurs par défaut RPi 3
    arm_freq=1200
    
    gpu_freq=400
    
    core_freq=400
    
    sdram_freq=450/pre>
    over_voltage_sdram=0
  2. Vous pouvez commencez à modifier le fichier /boot/config.txt avec cette configuration :
    Overclocking - 1ère étape
    arm_freq=1300
    
    gpu_freq=500
    
    sdram_freq=500/pre>
    over_voltage_sdram=0
  3. N’oubliez pas de sauvegarder votre fichier et redémarrez votre Raspberry Pi. Si ce dernier redémarre normalement, vous pouvez continuer l’overclocking. Pour ce faire, vous pouvez pousser la valeur de arm_freq jusqu’à 1500 (procédez de 50 en 50 ou de 100 en 100 pour les plus téméraires !). À chaque modification du fichier, sauvegardez et redémarrez !
  4. Si votre Raspberry Pi ne parvient pas à démarrer ou paraît instable, vous pouvez augmenter légèrement la valeur de over_voltage_sdram jusqu’à ce que le Raspberry  Pisoit stable. Pour se faire, procédez par pas de 1 (souvent la valeur finale se situera entre 4 et 6).
  5. Si l’ajustement du paramètre over_voltage_sdram n’aide pas à la stabilisation et au bon démarrage du Raspberry Pi, il faut réduire la valeur de la fréquence du processeur arm_freq. Un ajustement fin est à réaliser entre la valeur arm_freq qui doit être la plus haute possible et over_voltage_sdram qui ne doit pas être trop haute. N’oubliez pas de sauvegarder et redémarrer entre chaque changement de paramètre. Cela peut être long et fastidieux, mais pour certaines applications l’overclocking peut valoir le coup !

Amélioration des performances mémoires avec ZRAM

Voici une option supplémentaire qui vous permettra de gagner en performance sur vos applications Raspberry Pi. Cela n’impactera pas la vitesse de calcul du processeur, mais impactera les performances globales sur l’exécution d’un programme ou de plusieurs programmes en simultanées. ZRAM va en quelque sorte agrandir la zone de mémoire vive interne en créant des espaces d’échange de mémoire directement sur la carte SD du Raspberry Pi. Notez ici qu’il vaudra mieux avoir une carte SD de bonne facture pour cette opération. Ce n’est pas une étape obligatoire pour overclocker son Raspberry Pi (ici, on ne parle même pas d’overclocking ^-^).

ZRAM va utiliser des algorithmes de compression (LZ4 et LZO) pour diminuer la quantité de données passant par la mémoire RAM, la mémoire vive. Ces données seront traitées en priorités, tandis que l’espace disque “ZRAM” stockera la file de données en attente de compression.

Comment utiliser ZRAM ? En fait, ZRAM est directement intégré dans le noyau Linux. Il suffit donc de charger le module ZRAM avec la commande sudo modprobe zram. Pour vérifier que le module ZRAM est en cours d’exécution, vous pouvez utiliser la commande sudo lsmod | grep zram :

execution-de-zram

Afin de paramétrer au plus vite ZRAM sur notre Raspberry Pi, on va télécharger un script qui fera tout le travail. Ce script se nomme zram.sh du GitHub https://github.com/novaspirit/rpi_zram. Ce script va allouer un espace additionnel ZRAM pour chaque coeur CPU puis les activer (1 GB en tout). Aucune configuration supplémentaire n’est à effectuer.

Les personnes qui ont lu cet article ont aussi lu :  Réaliser son environnement de développement C++ pour Raspberry Pi [PARTIE 2/3]

Vous pouvez télécharger le script grâce à la commande :

Télécharger le script zram.sh
sudo wget -O /usr/bin/zram.sh https://raw.githubusercontent.com/novaspirit/rpi_zram/master/\zram.sh 

Ensuite, on va attribuer les droits au script zram.sh pour que celui-ci soit exécutable :

Activer l'exécution sur zram.sh
sudo chmod +x /usr/bin/zram.sh

Pour le moment la mémoire d’échange (la mémoire dite swap) de notre Raspberry Pi est de 100 MB. Cela se vérifie grâce aux commandes free -h et swapon -s :

raspberry-pi-free-h

raspberry-pi-swapon-s

Maintenant on peut exécuter notre script :

Exécution de zram.sh
sudo zram.sh

raspberry-pi-execution-zram-sh

Le script à généré 4 espaces d’échange mémoire de 232 MB chacun. Ensemble, le tout fait un peu près 1GB. Vous pouvez vérifier vos espaces swap à nouveau avec free -h et swapon -s. Les espaces mémoire auront bien évolué, leurs priorités également :

raspberry-pi-swapon-zram-sh-active

Le problème avec ce paramétrage ZRAM, c’est qu’il ne reste pas. Il faut donc que le script zram.sh soit relancé à chaque démarrage du Raspberry Pi. Pour se faire, rien de plus simple, nous allons inclure le lancement du script en arrière-plan lors du démarrage en incluant la ligne /usr/bin/zram.sh & à la fin du fichier /etc/rc.local juste avant la ligne exit 0 :

Démarrage automatique du script zram.sh dans /etc/rc.local
cat /etc/rc.local && . /etc/init.d/rc.local start
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
	printf "My IP address is %s\n" "$_IP"
fi

/usr/bin/zram.sh &
exit 0
~

Après avoir enregistré, redémarrez votre Raspberry Pi. Vérifiez une nouvelle fois vos espaces swap avec free -h et swapon -s pour vérifiez que le script se lance bien au démarrage et être sûr que ZRAM se lance bien.

Test de performance avec overclocking

Maintenant que nous avons fini chaque étape d’overclocking, on peut lancer à nouveau sysbench pour comparer nos résultats. Je vous rappelle la commande ici :

Test de performance sysbench
sysbench --test=memory --cpu-max-prime=2000 --num-threads=4 run

raspberry-pi-performances-final

On peut voir que les valeurs sont meilleures qu’avant l’overclocking. Les temps sont plus faibles. Les calculs s’effectuent plus rapidement. J’ai réalisé un petit tableau pour avoir un aperçu du gain en performance :

Résultats finaux : Overclocker son Raspberry Pi 3

Les deux données les plus importantes ici sont : Total Time, per-request statistics avg et per-request statistics approx. 95 percentile :

  • Le gain en total time représente le gain en exécution pour toute une série de calcul.
  • Le gain per-request statistics avg représente le gain moyen de temps d’exécution par calcul effectué.
  • Le gain per-request statistics approx. 95 percentile représente le gain moyen de temps d’exécution par calcul effectué où 5% des valeurs les plus éloignées ont été extraites.

On remarque aussi que les pics de calculs longs ont un temps d’exécution plus élevé. Mais cela ne nuit pas à la moyenne qui va primer dans les performances globales de notre Raspberry Pi.

Au final, on peut dire que notre gain de performance sur Raspberry Pi 3 tourne autour de 23-24%, ce qui n’est vraiment pas mal !

Comment retirer l’overclocking ?

Si vous voulez supprimer l’overclocking de votre Raspberry Pi, il vous suffit de supprimer les modifications du fichier /boot/config.txt. Si vous avez créé un fichier de sauvegarde, copiez-le simplement dans le répertoire /boot et écrasez le fichier config.txt.

En outre, vous devez supprimer la ligne /usr/bin/zram.sh qui se trouve dans le fichier /etc/rc.local.

Redémarrez votre Raspberry Pi après cela et toutes les configurations d’overclocking seront désactivées.

Conclusion et domaines d’application

Maintenant que vous avez overclocké avec succès votre Raspberry Pi, il ne vous reste plus qu’à commencer à exploiter vos différents projets sur cette carte ARM surboostée ! Beaucoup de personnes se demandent s’ils peuvent utiliser leur Raspberry Pi overclocké sur le long terme. Si vous n’êtes pas à la limite de l’instabilité, normalement votre Raspberry Pi devrait tourner sans problèmes et vous pouvez même remarquer une amélioration des performances de vos applications sur Raspberry Pi après l’overclocking (c’est un peu le but, huhu ^^).

Les domaines où l’overclocking peut être intéressant sont nombreux. Du minage de bitcoin, en passant par la réalisation d’un serveur NAS un peu plus costaud ou même l’exécution de logiciels x86 via Exagear Desktop en combinaison avec Wine… Les applications sont diverses et variées. Lorsque BenTeK.fr tournait encore sur Raspberry Pi (c’était un Pi 2 à l’époque :-D), je l’avais overclocké pour que le serveur web gagne en performance sur les requêtes PHP.. Mais le gain de performance sur Raspberry Pi 2 n’était pas aussi important que sur le Pi 3 !

Vous pouvez encore trouver plein d’exemples d’applications sur le Net :-).

Une dernière chose, si votre ventilateur fait vraiment trop de bruit, essayez de le raccorder sur une broche en 3,3 V tout en vérifiant la température du CPU avec les commandes que l’on a vu. Cela a deux avantages et un inconvénient :

  • Le ventilateur tourne moins vite, donc fait moins de bruit.
  • Si on alimente le ventilateur non pas par la broche alimentation 3,3 V, mais par une broche GPIO pouvant être commandée, on peut se faire un petit script de surveillance de température qui va activer le ventilateur lorsque le CPU chauffe de trop.
  • Inconvénient : Le CPU sera moins bien refroidi, il faut vraiment prendre ses précautions ici.

Voilà, je sais que c’était long, mais il fallait passer par pas mal de prérequis afin de pouvoir overclocker son Raspberry Pi en toute bonne conscience :-D. Si jamais vous avez des questions, n’hésitez pas à me les poser en commentaire sous cet article !

Sources : une multitude de forums anglophones et pas mal d’essais 😀

Ben.

Pin It on Pinterest

Shares
Share This