Optimiser la consommation CPU et mémoire de votre RaspBerry Pi
Aujourd’hui j’ai cherché plusieurs façons d’optimiser la consommation de mon RaspBerry Pi.
En effet, votre rpi ne possède pas de ressources illimités, c’est pourquoi il faut absolument gérer sa consommation (mémoire et CPU).
Au fil des pages, j’ai trouvé plusieurs astuces que je regroupe ici.
J’espère que cela vous sera pratique.
Remplacer OpenSSH avec DropBear
Le simple fait de remplacer OpenSSH avec DropBear vous permettra de gagner environ 10Mb de mémoire. Il faut tout de même savoir que cette manipulation supprime le logging SSH ainsi que le port forwarding.
Tout d’abord, on installe le client openssh et DropBear puis on arrête le service SSH
apt-get install dropbear openssh-client
/etc/init.d/ssh stop
Puis on lance DropBear au démarrage du RaspBerryPi
sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropbear
Optionnel: prevenir des connections root
sed -i 's/DROPBEAR_EXTRA_ARGS=/DROPBEAR_EXTRA_ARGS="-w"/g' /etc/default/dropbear
Optionnel: prévenir des connections et des mots de passe root
sed -i 's/DROPBEAR_EXTRA_ARGS=/DROPBEAR_EXTRA_ARGS="-w -s"/g' /etc/default/dropbear
Optionnel: changer le port d’écoute
sed -i 's/DROPBEAR_PORT=22/DROPBEAR_PORT=2222/g' /etc/default/dropbear
Ensuite il suffit de démarrer DropBear et de supprimer OpenSSH Server
/etc/init.d/dropbear start
apt-get purge openssh-server
Supprimer extra tty / getty
Cette manipulation va désactiver tty2-tty6, vous laissant uniquement tty1 et vous fera gagner environ 4Mb de RAM.
sed -i '/[2-6]:23:respawn:\/sbin\/getty 38400 tty[2-6]/s%^%#%g' /etc/inittab
Optionnel: vous pouvez également désinstaller getty
sed -i '/T0:23:respawn:\/sbin\/getty -L ttyAMA0 115200 vt100/s%^%#%g' /etc/inittab
Remplacer Bash Shell avec Dash Shell
Le fait de remplacer votre shell Bash par le Dash va améliorer les performances de votre machine et vous faire gagner environ 1Mb de mémoire.
De plus, votre RaspBerry démarrera plus rapidement et votre utiliserez moins d’espace disque.
dpkg-reconfigure dash
Use dash as the default system shell (/bin/sh)? Yes
Utiliser 512Mb de Swap
Plusieurs tests ont révélés que votre RaspBerry Pi est le plus performant lorsqu’il utilise 512 Mb de swap.
echo "CONF_SWAPSIZE=512" > /etc/dphys-swapfile
Ensuite il suffit de l’initialiser et de l’activer:
dphys-swapfile setup
dphys-swapfile swapon
Optionnel: vous pouvez améliorer les performances de votre swap grâce à la commande suivante:
sed -i 's/sortstrategy = 3/sortstrategy = 0/g' /etc/preload.conf
Optimiser le montage du système
Pour optimiser le temps de montage du système installé sur votre RaspBerry Pi, vous pouvez utiliser la commande suivante:
sed -i 's/defaults,noatime/defaults,noatime,nodiratime/g' /etc/fstab
Désactiver IPv6
Si vous n’utilisez pas les fonctionnalités d’IPv6, vous pouvez le désactiver ce qui économisera les ressources de votre RaspBerry Pi et qui améliorera ses vitesses de connection.
echo "net.ipv6.conf.all.disable_ipv6=1" > /etc/sysctl.d/disableipv6.conf
echo 'blacklist ipv6' >> /etc/modprobe.d/blacklist
sed -i '/::/s%^%#%g' /etc/hosts
Pensez à redémarrer votre RaspBerry:
shutdown -r now
Remplacer le Deadline Scheduler avec le NOOP Scheduler
Le plannificateur NOOP est plus approprié lorsque l’on utilise un disque SSD ou une carte Flash pour stocker le système d’exploitation:
sed -i 's/deadline/noop/g' /boot/cmdline.txt
shutdown -r now
Remplacer rsyslogd par inetutils-syslogd
Le remplacement de rsyslogd par inetutils-syslogd et la suppression des logs inutiles permet la consommation mémoire et l’utilisation cpu.
apt-get -y remove --purge rsyslog
apt-get -y install inetutils-syslogd
service inetutils-syslogd stop
Vous pouvez supprimer les fichiers de logs obsolètes:
for file in /var/log/*.log /var/log/mail.* /var/log/debug /var/log/syslog; do [ -f "$file" ] && rm -f "$file"; done
for dir in fsck news; do [ -d "/var/log/$dir" ] && rm -rf "/var/log/$dir"; done
Il faut ensuite créer une fichier de configuration puis de démarrer le service:
echo -e "*.*;mail.none;cron.none\t -/var/log/messages\ncron.*\t -/var/log/cron\nmail.*\t -/var/log/mail" > /etc/syslog.conf
mkdir -p /etc/logrotate.d
echo -e "/var/log/cron\n/var/log/mail\n/var/log/messages {\n\trotate 4\n\tweekly\n\tmissingok\n\tnotifempty\n\tcompress\n\tsharedscripts\n\tpostrotate\n\t/etc/init.d/inetutils-syslogd reload >/dev/null\n\tendscript\n}" > /etc/logrotate.d/inetutils-syslogd
service inetutils-syslogd start
Passer en IP Fixe et supprime le DHCP-Client
Passer en IP Fixe réduira votre consommation mémoire et cpu.
Tout d’abord créez un fichier de backup:
cp -f /etc/network/interfaces /etc/network/interfaces.dhcp-backup
Ensuite éditez le fichier /etc/network/interfaces et remplacez:
iface eth0 inet dhcp
par:
iface eth0 inet static
#set your static IP below
address 192.168.1.107
#set your default gateway IP here
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
Pour que les changements soient effectifs, il suffit de redémarrer votre RaspBerry Pi:
shutdown -r now
Hi,
I’v got an error message about this :
for file in /var/log/*.log /var/log/mail.* /var/log/debug /var/log/syslog; do [ -f “$file” ] && rm -f “$file”; done
Message : “do” synthax error
Can you tell me what do you think of it ?
Thanks.
You need to use dos2unix to convert the script file to unix format.
Collection très utile, efficace et dans un format super pratique à utiliser, merci !
Il me semble avoir vu ailleurs qu’on peut gagner un peu de temps au démarrage avec une autre console que la version colorée par défaut, qui serait lente, est-ce vrai ?…
Ca ne me dit mais je vais chercher. Si je trouve quelque chose je mettrai a jour le sujet