Raspberry Pi – Techniques d’optimisation de votre système

Pol, un lecteur du site, m’a contacté pour me parler de problèmes de performances qu’il rencontre avec son Raspberry Pi. Le problème quasiment résolu, il m’a dit que ça pourrait être une idée de parler des outils et méthodes pour optimiser son Raspberry Pi.

linux_cpu_usage

Faire un article complet sur le sujet ne me semble pas réaliste. Alors je vais donner les outils et méthodes que j’utilise de mon coté. Si vous en avez d’autres n’hésitez pas à partager, je mettrai à jour l’article.

Le processeur

Lors des installations des outils, la limite du processeur ARM peut vite être attente. Une solution proposée par la fondation est l’overclock. Autant vous le dire, je ne suis pas fan de ce genre de méthode. Je me dis toujours que si ca consomme de trop il faut revoir la façon dont le soft travaille plutôt que de booster le CPU. Malgré tout c’est une possibilité et en plus c’est compris dans la garantie (jusqu’à 1Ghz si je ne me trompe pas) !

Le meilleur moyen d’overclocker votre Raspberry Pi c’est avec l’outil raspi-config. Installer par défaut sur certaines distributions, s’il n’est pas présent vous utilisez simplement

apt-get install raspi-config

Choisissez l’option 7 pour l’overclock puis la fréquence voulue :

Choisir votre fréquence d'overclock avec raspi-config

Choisir votre fréquence d’overclock avec raspi-config

Une autre méthode consiste aussi à déjà identifier ce qui va consommer de la ressource. J’utilise le grand classique : top. Installé en standard dans nos distributions, il permet d’afficher les processus en cours d’exécution et de les trier suivant certains critères.

Voici par exemple ce que la commande retourne sur mon serveur :

Capture_d_écran_15_06_13_23_13

Par défaut, la commande va trier les programmes par leur occupation CPU. Vous pouvez changer le tri avec les raccourcis suivants : ‘f’ pour sélectionner les champs à afficher, puis vous vous déplacez avec les flèches. La touche espace pour afficher ou non un champ puis ‘s’ pour utiliser le champ comme tri par défaut.

Vous pouvez alors identifier rapidement qui fait quoi, est-ce que votre système est vraiment sur les genoux, etc.

La mémoire

Pour connaitre votre occupation mémoire, vous pouvez utiliser la commande top comme j’en ai parlé un peu plus haut. Vous pouvez aussi utiliser la commande free qui pourra vous donner l’utilisation de votre mémoire :

Occupation mémoire du Raspberry Pi avec la commande free

Occupation mémoire du Raspberry Pi avec la commande free. L’option -m affiche des Mo

Un moyen de récupérer un peu de mémoire est de réduire la RAM disponible pour le GPU. Attention ça va dépendre de l’utilisation de votre machine. Mon serveur n’utilise pas d’interface graphique. Le GPU n’est alors pas « utile » et j’ai donc diminué au maximum la RAM qui lui est allouée.

Pour changer ce paramètre, vous pouvez mettre à jour la valeur de gpu_mem dans le fichier /boot/config.txt ou bien passer par l’outil raspi-config dans le menu Advanced Options puis A3 :

Capture_d_écran_16_06_13_22_57

Modifier la mémoire allouée au GPU à 1Mo c’est possible ! Donc testez et réglez la valeur en fonction de vos besoins.

Un autre outil qui peut être utile est vmstat. En paramètre le nombre de secondes entre chaque exécution puis le nombre d’exécution :

Capture_d_écran_17_06_13_18_57

Vous trouverez plus d’informations sur cet outil assez puissant sur la page de man ou ici.

Les accès disque

Les accès disques peuvent vitre être une source de dégradation de vos performances. Pourtant, là aussi il existe des moyens simples de contrôles.

Mais avant tout, un des problèmes les plus souvent rencontrés est celui du drivers. Les personnes ajoutent un disque externe formaté en NTFS et se retrouve avec des accès très lent. Un moyen simple est de formatter le disque en ext4. Votre CPU vous dira merci !

Coté outils, on en retrouve deux principaux : iostat qui donne des statistiques sur les entrées sorties des disques. Pour l’installer :

apt-get install sysstat

Avec cet outil vous pouvez voir (entre autre) les volumes d’écritures sur un disque ou une partition :

Capture_d_écran_17_06_13_19_04

Et encore vmstat en mode disque avec l’option ‘-p <partition>’ :

Capture_d_écran_17_06_13_18_59-3

Le résultat vous permet de voir la progression des lectures et écritures pendant le temps d’exécution de la commande

Les fichiers de log

Pour consulter les traces du système, il y a un endroit magique : /var/log. Vous y trouverez toutes les traces des programmes qui tournent sur votre système (pour ceux qui en génèrent bien sur).

Capture_d_écran_17_06_13_19_31-2

Vous avez sur ma machine de test les traces du serveur ftp, de mysql, de php. Tout ce qui peut aider soit pour des erreurs d’exécution, soit des messages d’alerte. La commande dmesg permet de liste le contenu d’une de ces logs, qui correspond aux messages du système en lui-même depuis le boot et pendant l’exécution y compris lors de l’insertion/détection de périphérique.

Capture_d_écran_17_06_13_19_35

 

Dans ces traces vous pouvez lire des informations techniques. Prenez le temps de les comprendre en cherchant sur Google ou dans les commentaires. Vous apprendrez plein de choses sur ce qui se passe à l’arrière de la boutique.

Le monitoring de la machine

Monitorer votre machine dans le temps peut aussi être un moyen d’identifier une source de problème, ralentissement, perte de mémoire, etc. Pour cela vous avez différents outils qui peuvent donner des informations précises. Je vous laisse lire les articles sur Monitorix ou Zabbix.

Les logiciels

Faire ici une liste des softs les plus adaptés au Raspberry Pi serait utopique et totalement subjectif. Juste quelques conseils avant d’installer un outil :

  • Est-il vraiment adapté à votre usage ? Par exemple Citadel qui fait serveur mail mais qui est lourd en installation. Peut être que Postfix, beaucoup plus léger, suffirait.
  • Y a-t-il d’autres alternatives qui répondent à votre besoin ? Un serveur Web très connu (oui Apache) peut fonctionner sur le Raspberry Pi. Pourtant il existe d’autres alternatives plus légères comme Lighttpd, Nginx et certainement d’autres.
  • Est-il compatible avec les autres outils qui vont être installés ? Certains soft vont installer par exemple leur propre serveur Web alors que vous en avez déjà un pour un autre outil. Idem pour les DB avec MySQL, SQLite, etc. Le plus connu n’est pas le meilleur (pas de troll sur Windows ou Apple svp 🙂 )
  • Y a-t-il une communauté supportant l’outil ? Ici c’est pour deux raisons : la première est l’aide que vous pourriez trouver en cas de problèmes d’installation ou configuration. La seconde c’est la sécurité. Dans certains cas installer un outil exotique peut permettre de gagner des ressources mais va ouvrir des portes sur votre système.

Voilà. A défaut d’avoir donner toutes les réponses, j’espère que vous avez maintenant des pistes pour optimiser votre système. N’hésitez pas à partager vos expériences et vos astuces !

Vous aimez cet article ? Supportez-moi sur Patreon!

Vous aimerez aussi...