Optimisez la mémoire de vos RPi5 et RPi4B (Décembre 2024)

Bonjour,

J’ai capté ce matin une news assez intéressante pour tous ceux qui souhaitent utiliser les pleines capacités de leurs matériels DIY, en l’occurrence les Raspberry Pi5 et Pi4B, et que je souhaitais partager avec vous.

En l’occurrence, les dernières versions du firmware de ces RPi intègrent une optimisation de la gestion de la mémoire SDRAM embarquée, permettant des gains de l’ordre de 10 à 20% selon les applications.
La procédure de mise à jour est simple, prend à peu près 5’ (je l’ai faite…), et surtout elle n’engage absolument pas l’intégrité du matériel : ce n’est pas de l’overclocking, mais de l’optimisation ! Et ça ne coûte rien…

Mais avant tout, les sources :

https://www.jeffgeerling.com/blog/2024/raspberry-pi-boosts-pi-5-performance-sdram-tuning

1.- Le principe

Les paramètres par défaut appliqués jusqu’à présent sur les intervalles de rafraîchissement de la mémoire SDRAM, se sont avérés trop restrictifs par rapport aux capacités réelles de ces chips.
Les dernières versions du firmware permettent désormais la surveillance en temps réel de la température de la mémoire, ce qui permet de réduire la fréquence des cycles de rafraîchissement et donc de libérer des ressources pour les applications.

2.- La procédure

La procédure se déroule en deux temps : la mise à jour du firmware, et l’ajout d’une ligne dans un fichier de configuration.

2.1.- La mise à jour du firmware
C’est l’équivalent d’une mise à jour du BIOS ou de l’UEFI sur nos PC. Rien d’extraordinaire donc, c’est une manipulation plutôt standard et sans risques conséquents.
Néanmoins, comme pour toutes les mises à jour de firmware/BIOS/UEFI, il y a un passage par une phase critique pendant quelques secondes où toute interruption de la mise à jour (coupure de courant, reset intempestif,…) pourra occasionner des sueurs froides. Il y a toutefois moyen de récupérer une telle situation (voir plus loin si par malheur…).

En pratique :

  • Ouvrir une session SSH avec le RPi supportant Jeedom,
  • Taper la commande sudo rpi-update,

La mise à jour va s’effectuer automatiquement :

A l’issue, il faut rebooter le RPi avec sudo reboot now

Voilà, ça, c’est fait ! :slightly_smiling_face:

2.2.- Ajout d’une ligne dans le fichier de configuration

Il faut ajouter dans le fichier de configuration conf.boot cette ligne :
Pour les RPi5 :

SDRAM_BANKLOW=1

Et pour les RPi4B :

SDRAM_BANKLOW=3

A noter que cette petite modification sera intégrée par défaut dans les futures versions de ce fichier.

En pratique :

  • Ouvrir une session SSH avec le RPi supportant Jeedom,
  • Taper la commande sudo rpi-eeprom-config -e, et ajouter une des lignes ci-dessus (en fonction de votre matériel) :

image

  • Sauvegarder avec CTRL-O, et fermer l’éditeur de fichier avec CTRL-X (avec l’éditeur de texte nano). Cela va déclencher le processus de mise à jour du bootloader.

Il ne reste plus qu’à rebooter une dernière fois avec sudo reboot now.

3.- Zut, ça a foiré…(vraiment pas de bol… :tired_face:)

On peut récupérer le RPi en suivant la procédure décrite dans les logs de mise à jour.
En gros, créer avec le logiciel bien connu ‹ Raspberry Pi Imager › une image sur une carte SD avec une image du bootloader par défaut :

image

Redémarrer le RPi avec cette carte, et tentez de reconduire ces procédures.
Mais je suis sûr qu’il n’y aura pas besoin d’en passer par là…

4.- Conclusion

J’ai effectué cette petite manip sur mon RPi5 (de prod, soyons fou…), et tout c’est bien passé et jusqu’à présent tout fonctionne bien également.
Évidemment, ce n’est pas du ‹ palpable › concrètement, et ce n’est pas ça qui va révolutionner votre ressenti par rapport aux performances réelles ou supposées de votre installation.
Mais vu l’investissement (minime) en temps, ce serait dommage de s’en priver…

Dans tous les cas, je vous tiens au courant si je devais constater in situ à l’avenir de problèmes quelconques (température, vitesse, ou autres problèmes induits…) suite à cette manip ! :slightly_smiling_face:

13 « J'aime »

merci pour ce tuto

1 « J'aime »

Tout est ok
Pour info avec un NVME Patriot P320 128Go (peu cher) et une carte Pimonori NVMEbase
/dev/nvme0n1:
Timing cached reads: 7176 MB in 2.00 seconds = 3589.91 MB/sec
Timing buffered disk reads: 2512 MB in 3.00 seconds = 837.10 MB/sec

Bonjour,
Top ! Merci pour le retour !
RAS de mon côté également jusqu’à présent :blush:

Bonjour,

Erreur pour moi à la mise à jour du firmware, sur un RPI 4B+ :

pi@raspberrypi:~ $ sudo rpi-update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** We're running for the first time
 *** Backing up files (this will take a few minutes)
 *** Backing up firmware
 *** Backing up modules 6.1.21-v8+
##############################################################
WARNING: This update bumps to rpi-6.6.y linux tree
See: https://forums.raspberrypi.com/viewtopic.php?p=2191175

'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.

DO NOT use 'rpi-update' as part of a regular update process.
##############################################################
Would you like to proceed? (y/N)
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  144M  100  144M    0     0  11.4M      0  0:00:12  0:00:12 --:--:-- 10.8M
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 6.6.63-v8+
 *** depmod 6.6.63-v7+
 *** depmod 6.6.63-v7l+
 *** depmod 6.6.63-v8-16k+
 *** depmod 6.6.63+
 *** Updating VideoCore libraries
 *** Using HardFP libraries
cp: cannot stat '//root/.rpi-firmware/vc/hardfp/*': No such file or directory
pi@raspberrypi:~ $

Bonjour,

Idem avec cette heure :
cp: cannot stat '//root/.rpi-firmware/vc/softfp/*': No such file or directory

Mais cela continue de fonctionner après reboot.

Christophe

Bonjour,
Pour en avoir le cœur net, j’ai appliqué cette procédure de mise à jour du firmware sur mon RPi4B de test.
Résultat :

pi@raspberrypi:~ $ sudo rpi-update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
FW_REV:4d642c0ac9802bdd3a9b421a869309056ea394df
BOOTLOADER_REV:9621ef6a92ac3d6fd447b67b543e82587f5e0d16
 *** We're running for the first time
 *** Backing up files (this will take a few minutes)
 *** Backing up firmware
 *** Backing up modules 6.6.62+rpt-rpi-v8
WANT_32BIT:0 WANT_64BIT:1 WANT_PI4:1 WANT_PI5:1
##############################################################
WARNING: This update bumps to rpi-6.6.y linux tree
See: https://forums.raspberrypi.com/viewtopic.php?p=2191175

'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.

DO NOT use 'rpi-update' as part of a regular update process.
##############################################################
Would you like to proceed? (y/N)
Downloading bootloader tools
Downloading bootloader images
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  144M  100  144M    0     0  9316k      0  0:00:15  0:00:15 --:--:-- 8102k
*** PREPARING EEPROM UPDATES ***

BOOTLOADER: update available
   CURRENT: Thu  5 Sep 18:52:07 UTC 2024 (1725562327)
    LATEST: Mon 21 Oct 14:24:54 UTC 2024 (1729520694)
   RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2711/latest)
            Use raspi-config to change the release.

  VL805_FW: Dedicated VL805 EEPROM
     VL805: up to date
   CURRENT: 000138c0
    LATEST: 000138c0
   CURRENT: Thu  5 Sep 18:52:07 UTC 2024 (1725562327)
    UPDATE: Mon 21 Oct 14:24:54 UTC 2024 (1729520694)
    BOOTFS: /boot/firmware
'/tmp/tmp.PoxBO7dKUu' -> '/boot/firmware/pieeprom.upd'
Copying recovery.bin to /boot/firmware for EEPROM update

EEPROM updates pending. Please reboot to apply the update.
To cancel a pending update run "sudo rpi-eeprom-update -r".
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 6.6.63-v8+
 *** depmod 6.6.63-v8-16k+
 *** Updating VideoCore libraries
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to 4d642c0ac9802bdd3a9b421a869309056ea394df
 *** A reboot is needed to activate the new firmware

Et bien force est de constater que la mise à jour passe bien, et je retrouve un système fonctionnel à l’issue du reboot…
Je pense que ça un rapport avec la version Debian qui est installée : je suis sous Debian 12, et @syl9144 est en Debian 11, et sans doute pour vous aussi ?
En tout cas, ne lancez pas une commande type : sudo apt update && sudo apt full-upgrade qui risque fort de tout casser…

J’ai aussi eu cette erreur sur mon RPI4.
j’ai relancé la commande sudo rpi-update et cette fois, ça a fonctionné correctement :thinking:

La suite s’est bien passée.

1 « J'aime »

Nvme kingspec Nx 128gb

Timing cached reads: 9690 MB in 2.00 seconds = 4849.99 MB/sec
Timing buffered disk reads: 2414 MB in 3.00 seconds = 804.44 MB/sec

Bonsoir tout le monde
Je reviens sur la commande de mise a jour du firmware d’un RPI4 sudo rpi-update .
J’avais deja utilisé la commande sudo rpi-eeprom-update qui fonctionnait bien , et apres recherche sur la web ,il semblerait que ce soit cette dernier qui soit plus sur , car elle n’installe QUE le firmware
N’etant pas specialiste, je pose la question , laquelle utiliser ? de preference …
Merci et bonne soirée

Bonsoir.

Au contraire, c’est la commande qui est conseillée.

Cette commande ne fait pas de mise à jour de la version de Debian ! Elle fait simplement toutes les mises à jour du Pi, tout en restant dans sa version d’origine.
Elle permet par exemple, de passer de 11.10, à 11.12, mais toujours dans en restant en version 11.

Ce qu’il ne faut pas faire, c’est mettre à jour la distribution, cela se réalise en modifiant ce fichier manuellement :
/etc/apt/sources.list

Bonjour Fabrice,

J’ai peut-être tort, mais j’ai appris qu’avec apt sous Debian la commande apt full-upgrade (car c’est bien celle-ci qui pose problème bien entendu), provoquait la mise à jour des paquets système en supprimant d’office les paquets pouvant entrer en conflit avec la mise à jour.

Dixit cette référence :

Mais ce faisant, l’application Jeedom risquait de ne plus fonctionner si l’un des paquets supprimé était indispensable à son fonctionnement.

Du coup, je fais mes mises à jour quotidiennement et automatiquement (s’il y en a) avec une commande update puis upgrade, qui elle conserve ces paquets et ne change donc rien à l’environnement des applicatifs installés.

La commande complète, en mode silencieux : sudo apt -qq update 2>/dev/null && sudo apt -qq upgrade -y.
En évitant donc l’emploi du full-upgrade, potentiellement problématique.

Est-ce la bonne façon de faire ?

Avec cette commande, tu n’auras jamais de mise à jour du noyau, Il faudra faire, après, un apt-get dist-upgrade sans modifier, bien évidement, /etc/apt/sources.list.

Ok, merci pour l’info, j’ai encore appris un truc aujourd’hui… :+1:
Je vais me replonger dans ces subtilités, mais du coup je pense que je ferai quand même, et systématiquement, une passe avec l’option dry-run avant, juste pour être sûr et lever tous les doutes.

1 « J'aime »

Bonjour @DanielJ,

La documentation conseille d’utiliser full-upgrade :


https://www.raspberrypi.com/documentation/computers/os.html#manage-software-packages-with-apt
C’est ce que j’utilise sur tous mes Raspberry (avec ou sans Jeedom) depuis presque 10 ans et je n’ai jamais eu de soucis personnellement.

1 « J'aime »

Merci @Spine pour ces détails, quelque part ça me rassure…
Dont acte, let’s go pour du full-upgrade, je vais modifier mes commandes de mises à jour en conséquence.
Merci encore !

1 « J'aime »