🛠 Survivre avec 512 Mo : zram, swap compressé et services légers

Banana Pi BPI-M2 Zero (Allwinner H2+ / H3) · intermediaire · Schéma : IMG-bananapi-m2-zero-intermediaire-3-zram-memoire-512mo-m2-zero.svg — BPI-M2 Zero avec jauge de RAM à moitié pleine ; diagramme en médaillon : la RAM se scinde en applications + bloc zram compressé utilisé comme swap, la microSD reste à l'écart du swap.

Objetivos

512 MB de DDR3 compartidos con la GPU Mali-400: ese es el techo del BPI-M2 Zero, y la reseña de referencia que ejecutó Geekbench 5 en la placa tuvo que activar zram y llevarlo hasta 350 MB para completar la medición. zram crea un bloque de swap comprimido en la RAM: se ganan bytes sin desgastar la microSD (el único almacenamiento de la placa, aún más valioso que en otros casos). Vas a configurar zram correctamente, aligerar los servicios y verificar que la placa soporta una carga real.

Material

Código completo

# 1) État des lieux : y a-t-il déjà un swap ? (ne pas doubler les dispositifs)
free -h && swapon --show && lsmod | grep zram

# 2) Créer un zram de 384 Mo en LZ4 et l'activer comme swap
sudo modprobe zram
echo lz4 | sudo tee /sys/block/zram0/comp_algorithm
sudo zramctl /dev/zram0 --size 384M
sudo mkswap /dev/zram0 && sudo swapon /dev/zram0

# 3) Le rendre résistant au reboot via un service systemd
sudo tee /etc/systemd/system/zram-swap.service >/dev/null <<'EOF'
[Unit]
Before=swap.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'modprobe zram && echo lz4 > /sys/block/zram0/comp_algorithm && zramctl /dev/zram0 --size 384M && mkswap /dev/zram0 && swapon /dev/zram0'
ExecStop=/bin/sh -c 'swapoff /dev/zram0 && zramctl /dev/zram0 --reset'
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now zram-swap.service

# 4) Alléger : désactiver ce qui est inutile sur un rôle précis
systemctl list-unit-files --state=enabled | head -30
sudo systemctl disable --now bluetooth    # si le BT ne sert pas

# 5) Épreuve de feu
sudo apt install -y stress-ng && stress-ng --vm 2 --vm-bytes 200M --timeout 60s
free -h && dmesg | tail    # aucun OOM-killer sur sshd

Verificación esperada

swapon --show lista /dev/zram0 (prioridad alta, sin archivo en la SD); durante stress-ng, el swap se llena pero la sesión SSH sigue viva y dmesg no muestra el OOM-killer; zramctl muestra la compresión real (a menudo de 3 a 4×).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales