Erreur duniter sur Raspberry Pi 4 - 2 Go de RAM

Au lancement de cette version :

  GNU nano 7.2                  docker-compose.yml                            
version: "3.5"

services:
  duniter-mirror:
    image: duniter/duniter-v2s-gdev-800:900-0.9.2
    restart: unless-stopped
    ports:
      # Prometheus endpoint
      - 9615:9615
      # rpc
      - 9944:9944
      # p2p
      - 30333:30333
    volumes:
      - data-mirror:/var/lib/duniter/
    environment:
      - DUNITER_CHAIN_NAME=gdev
      - DUNITER_NODE_NAME=Dieudodev-mirror

volumes:
  data-mirror:


J’ai ces erreurs :

2025-03-29 17:17:48 ✌️  version 0.10.0-unknown    
2025-03-29 17:17:48 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2025    
2025-03-29 17:17:48 đź“‹ Chain specification: ÄžDev    
2025-03-29 17:17:48 🏷  Node name: Dieudodev-mirror    
2025-03-29 17:17:48 👤 Role: FULL    
2025-03-29 17:17:48 đź’ľ Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
2025-03-29 17:17:49 Cannot create a runtime error=Other("cannot create the wasmtime engine: failed to create memory pool mapping: mmap failed to allocate 0x6080000000 bytes: Cannot allocate memory (os error 12)")
Error: Service(Client(VersionInvalid("Other error happened while constructing the runtime: cannot create the wasmtime engine: failed to create memory pool mapping: mmap failed to allocate 0x6080000000 bytes: Cannot allocate memory (os error 12)")))

L’image 64 bits que tu utilises n’est pas compatible avec la plateforme Arm.

Il y a des images construites pour la plateforme linux/arm64/v8

Le RPi 4 a une architecture ARM v8

Je ne sais pas si en spécifiant la plateforme en dessous du champ image: fonctionne :

platform: linux/arm64/v8

C’est tout de même étrange; docker ne devrait-il pas choisir lui même la bonne architecture d’image quand elle existe pour pour le tag spécifié?

Et s’il avait choisi l’image amd64; ça ne devrais pas du tout démarrer…

1 Like

Oui, je me suis posé la question de savoir si Docker choisissait automatiquement l’architecture. À creuser.

Peut-être que l’image amd64 a été choisie et que la partie wasm/runtime n’est pas fonctionnelle entre archi. Sinon, l’image arm a été choisie, mais ça n’est pas exactement la même archi ARM, alors ça n’arrive pas à allouer de la mémoire.

1 Like

Lors de la récupération de l’image, l’architecture/la plateforme semble être sélectionnée automatiquement.

Pour en avoir le cœur sûr, @dieudo, peux-tu nous donner le retour de :

docker image inspect docker.io/duniter/duniter-v2s-gdev-800:900-0.9.2  | grep Archi

Je cherchais un peu pour voir l’architecture du RPi 4, normalement c’est bien ARMv8; mais ça discute d’un soucis quand l’OS installé dessus est en 32bits; le cpu est mentionné comme étant ARMv7…

https://forums.raspberrypi.com/viewtopic.php?t=293692

Est-ce que @dieudo pourrait vérifier quelle version de l’OS est installée et l’architecture ARM qui est rapportée par l’OS ?

Edit: autre post qui parle du même soucis - et avec les commandes pour voir si l’OS est en aarch64 ou pas: raspberry pi4 - Confusion regarding ARM architecture used in Raspberry_Pi 4 Model B - Stack Overflow

1 Like

Je viens d’augmenter la mémoire SWAP (de 200 à 512 Mo) comme indiqué ici :

https://siebert.ovh/gnu_linux:raspberry:augmenter_la_taille_du_swap_sur_le_raspberry_pi

C’était recommandé dans le Diagnostic du serveur fournit par Yunohost :


=================================
Ressources système (systemresources)
=================================

[SUCCESS] Le système dispose encore de 1.3 GiB (71%) de RAM sur 1.8 GiB.

[INFO] Le système ne dispose que de 200 MiB de swap. Vous devez envisager d'avoir au moins 512 MiB pour éviter les situations où le système manque de mémoire.

Mais ça ne semble pas avoir réglé le problème.

Ci-dessous la fin de la réponse à la requête :
docker compose logs -f

duniter-mirror-1  | 2025-03-31 13:03:45 Duniter    
duniter-mirror-1  | 2025-03-31 13:03:45 ✌️  version 0.9.2-unknown    
duniter-mirror-1  | 2025-03-31 13:03:45 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2025    
duniter-mirror-1  | 2025-03-31 13:03:45 đź“‹ Chain specification: ÄžDev    
duniter-mirror-1  | 2025-03-31 13:03:45 🏷  Node name: Dieudodev-mirror    
duniter-mirror-1  | 2025-03-31 13:03:45 👤 Role: FULL    
duniter-mirror-1  | 2025-03-31 13:03:45 đź’ľ Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
duniter-mirror-1  | 2025-03-31 13:03:46 Cannot create a runtime error=Other("cannot create the wasmtime engine: failed to create memory pool mapping: mmap failed to allocate 0x6080000000 bytes: Cannot allocate memory (os error 12)")
duniter-mirror-1  | Error: Service(Client(VersionInvalid("Other error happened while constructing the runtime: cannot create the wasmtime engine: failed to create memory pool mapping: mmap failed to allocate 0x6080000000 bytes: Cannot allocate memory (os error 12)")))

Voilà la réponse :

    "Architecture": "arm64",

C’est une installation standard via Yunohost :

=================================
Système de base (basesystem)

[INFO] L’architecture du serveur est bare-metal arm64

  • Le modèle/architecture du serveur est Raspberry Pi 4 Model B Rev 1.5

[INFO] Le serveur utilise le noyau Linux 6.6.74+rpt-rpi-v8

[INFO] Le serveur utilise Debian 12.10

[INFO] Le serveur utilise YunoHost 12.0.12 (stable)

  • yunohost version : 12.0.12 (stable)
  • yunohost-admin version : 12.0.7 (stable)
  • yunohost-portal version : 12.0.10 (stable)
  • moulinette version : 12.0.4 (stable)
  • ssowat version : 12.0.3 (stable)

Ça suffit pour répondre à la question ?

En parcourant la suite du mĂŞme document (les logs de diagnostic du serveur) je tombe sur ceci :

=================================
Ressources système (systemresources)

[SUCCESS] Le système dispose encore de 1.3 GiB (71%) de RAM sur 1.8 GiB.

[INFO] Le système ne dispose que de 200 MiB de swap. Vous devez envisager d’avoir au moins 512 MiB pour éviter les situations où le système manque de mémoire.

Ok, je me suis dit que si la bonne architecture de l’image avait été sélectionnée, c’était un problème de mémoire, car les 2Go de ram peuvent devenir limitantes.

J’ai cru que d’augmenter la SWAP avait suffit à régler le problème, mais en fait non.

Pour avoir une idée de l’utilisation mémoire; voici une vue de mes données grafana pour mon serveur SMITH GDev quand je l’ai ajouté (forte utilisation CPU pendant la synchronisation, et ensuite usage “normal”)

Le “memory usage” reste en dessous de 1GB; le “Memory Cached” monte jusque 2.10GB.

Si tu as assez d’espace disque; il pourrait être nécessaire de mettre 2GB de swap (qui vont probablement être utilisés pendant la synchro).

1 Like

J’ajoute la vue globale des stats depuis la création (± 3 mois)

Le CPU est armv8 mais Raspbian est en armv7, parce que pourquoi pas. :unicorn: :rainbow:

Je ne sais pas si ça fait exactement ce à quoi on peut s’attendre, mais on peut changer une ligne de la config de boot pour passer en armv8. Ça doit activer plus d’instructions 64 bits. En tout cas ça reste compatible avec un OS armv7 32 bits.

1 Like

J’ai assez de place sur le disque (1 SSD de 1To) mais il y a cette mise en garde de Yunohost dans le fichier de Diagnostic :

  • Soyez averti et conscient que si vous hĂ©bergez une partition SWAP sur une carte SD ou un disque SSD, cela risque de rĂ©duire considĂ©rablement l’espĂ©rance de vie de celui-ci.

Merci de l’indication, mais je n’ai aucune idée de comment faire, ni de comment dépanner si ne marche pas. Mais je peux demander à @1000i100 . Je le vois demain

J’ai mis 2 Go de swap, mais j’ai toujours la même erreur :

duniter-mirror-1  | 2025-03-31 16:46:00 Duniter    
duniter-mirror-1  | 2025-03-31 16:46:00 ✌️  version 0.9.2-unknown    
duniter-mirror-1  | 2025-03-31 16:46:00 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2025    
duniter-mirror-1  | 2025-03-31 16:46:00 đź“‹ Chain specification: ÄžDev    
duniter-mirror-1  | 2025-03-31 16:46:00 🏷  Node name: Dieudodev-mirror    
duniter-mirror-1  | 2025-03-31 16:46:00 👤 Role: FULL    
duniter-mirror-1  | 2025-03-31 16:46:00 đź’ľ Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
duniter-mirror-1  | 2025-03-31 16:46:01 Cannot create a runtime error=Other("cannot create the wasmtime engine: failed to create memory pool mapping: mmap failed to allocate 0x6080000000 bytes: Cannot allocate memory (os error 12)")
duniter-mirror-1  | Error: Service(Client(VersionInvalid("Other error happened while constructing the runtime: cannot create the wasmtime engine: failed to create memory pool mapping: mmap failed to allocate 0x6080000000 bytes: Cannot allocate memory (os error 12)")))