RPI 4 : swap à zéro

Hello à tous,

Je me joins à la discussion.
Même souci de mon côté sur mon RPI4 depuis mon passage à Debian 11 (en tout cas les premiers soucis de swap sont apparus juste après. Redémarrage tous les 15 jours environ. Une idée pour identifier le plugin qui pourrait être la cause (hormis les désactiver l’un après l’autre :slight_smile:) ?

Ma page santé suite redémarrage hier :

La liste de mes plugins :


Merci d’avance pour vos idées

La solution ne relancer le démon ne suffit pas j’ai l’impression, je dois désactiver et réactiver le plugin pour libérer du swap.
Ce comportement est vraiment anormal tout de même non?

Bonjour,
je me glisse dans ce fil car j’ai le souci d’une diminution du swap régulière.
Mais je suis sur un Odroid C2.
Je suis obligé de redémarrer Jeedom pour retrouver 100% puis il des des jours (environ 5/6 jours) je retrouve 50%
Je suis sur 4.3.19
ma santé:


mes plugins;

Merci pour vos indications
Bonne journée

J’essaie d’avancer mais il y a un truc que je ne pige pas. Je pensais que le swap était là en débordement de la mémoire lorsque celle-ci venait à saturer !

Or j’ai du redémarrer mon RPi4 hier car swap à moins de 25% et ralentissements importants :

Mais j’ai pris le temps de faire un htop avant reboot :

Et on voit que la mémoire utilisée était à peine à 15% de la mémoire totale !
Une bonne âme pour m’expliquer ? :innocent: :innocent: :innocent:

Merci d’avance,

Bonjour,

Lien instructif :

Tu as un swapiness de combien ?

@naif : avec ton swapiness de 100 c’est normal que ton swap augmente à vue d’œil.

Merci ! je vais lire ca à tête reposé.
Swap passé de 1Go à 2Go récemment
Swapiness à 10%

Et pour info, je passe de 100% à 60% 10 min après le redémarrage

J’ai réussi à lister les process qui consomment du swap avec la commande :

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

Voici les principaux : (je vais essayer de suivre au fur et à mesure du remplissage)

mariadbd 232052 kB
node 53104 kB
homebridge-conf 50968 kB
node 42044 kB
python3 41496 kB
homebridge 40132 kB
pcmanfm 24988 kB
packagekitd 24720 kB
node 24612 kB
node 24076 kB
Xorg 21440 kB
nodejs 19540 kB
mutter 17576 kB
applet.py 17116 kB
lxpanel 15924 kB
php 14916 kB
unattended-upgr 9040 kB
fail2ban-server 8364 kB
php 8152 kB
php 8132 kB
php 8012 kB
php 7980 kB
php 7908 kB
python3 7568 kB
php 7412 kB
php 7324 kB
php 6956 kB
php 6792 kB
apache2 5932 kB
apache2 5616 kB
apache2 5592 kB
apache2 5572 kB
apache2 5396 kB
apache2 5376 kB
apache2 5352 kB
apache2 5276 kB
apache2 5108 kB
apache2 5080 kB
apache2 5032 kB
pulseaudio 4856 kB
(sd-pam) 3004 kB
systemd-udevd 2656 kB
colord 2504 kB
polkitd 2136 kB
lxsession 1844 kB
udisksd 1748 kB
systemd 1640 kB
bash 1568 kB
ModemManager 1508 kB
cups-browsed 1472 kB
pipewire-media- 1288 kB
lxpolkit 1244 kB
rsyslogd 1228 kB
bluetoothd 1216 kB
pipewire 1204 kB
cupsd 1096 kB
gvfsd-trash 1088 kB
gvfs-udisks2-vo 1048 kB
gvfs-gphoto2-vo 996 kB
lightdm 992 kB
gvfs-afc-volume 964 kB
gvfsd 956 kB

@Madcow
Bonjour,
Merci pour ta réponse mais comment peut on diminuer le swapiness : je ne suis pas à l’aise dans ces manip
Merci pour ton aide
Bonne journée

Bonjour,

Définir une valeur de : 25

sudo nano /etc/sysctl.conf

Ajouter le bloc suivant à la fin (si pas présent sinon modifier la ligne existante) :

vm.swappiness = 25

Ctrl + o pour sauver
Ctrl + x pour quitter

On redémarre ensuite.

@Madcow
Merci.
Penses tu que 25 pour le swapiness suffise ?

Normalement oui.
Ça dépend aussi de la taille de ta RAM.
Ça va swapper quand il ne te restera que 25% de ta RAM dispo.

Après tu testes :blush:

Un swapiness faible recule le moment où le kernel va commencer à libérer de la mémoire en déplaçant des pages dans le swap. C’est un peu comme commencer à freiner plus tard quand tu as un mur en face. Ça passe ou ça casse tout dépend de la vitesse à laquelle ton utilisation mémoire augmente. Le kernel aura le temps de libérer la mémoire ou pas.

L’avantage d’un swapiness faible est que tu freineras moins souvent et, en général, l’utilisation mémoire augmente suffisamment calmement pour que le freinage tardif soit suffisant.

un swapiness de 25 ne signifie pas le kernel va commencer à swaper lorsqu’il reste 25% de de RAM. Je ne connais pas le détail de algorithme mais je sais qu’il tient compte de plusieurs paramètre pour décider s’il doit déplacer un page mémoire dans le swap ou pas.

Le fait qu’une partie du swap soit utilisé ne signifie pas forcément qu’il y a un manque de mémoire pour le bon fonctionnement de l’os. Il peux y avoir des pages mémoire qui ont été placée dans le swap et y reste longtemps parce le system ou les processe n’en ont pas besoin.

Par contre, une augmentation régulière de l’utilisation du swap est un signe. Il y a probablement un process qui a une fuite mémoire et augmente donc le besoin global en mémoire. Le process responsable n’est pas forcément un de ceux qui utilise le plus de swap. Il est possible que d’autres process se retrouvent avec des page mémoires dans le swap pour faire de la place au process gourment.

Il faut donc chercher un process dont l’utilisation de la mémoire augmente régulièrement indépendamment
de sont utilisation de swap.

5 « J'aime »

Bonjour,

J’ai simplifié :sweat_smile:

Merci pour tes explications toujours détaillées. C’est comme ça qu’on reconnaît un vrai linuxien :+1::blush:

@Madcow
Bonjour,
J’ai fait la manip que tu m’as indiqué sans problème (encore merci pour sa simplicité) toutefois après quelques jours, je constate que le swap initialement à 100 est arrivé aujourd’hui à 65 : est normal ?
Bonne journée

Bonjour,

Tant que tout fonctionne : oui c’est normal.
Tu manques juste un peu de RAM pour certaines actions, c’est tout ce qu’il y a de plus banal.
Il ne faut pas cependant que le swap ne fasse que monter.

Lis la réponse de ktn qui détaille mieux que moi.

@Madcow
OK merci
Mais comment (si cela existe) détecte t on le process qui prend beaucoup. Par ailleurs je comprends pas bien, si mon swap est à 100: c’est bon par contre s’il est à 10 ou plus bas c’est pas bon
bonne journée

Il y a indiqué « swap disponible ».
Donc avec 100% de dispo il y a 0% occupé :wink:

Il faut surtout regarder « mémoire suffisante ». Si différent de zéro alors tu manques (parfois) de mémoire.

@Madcow
donc tout va bien puisque la rubrique « mémoire suffisante » est à zéro quant au swap disponible, il est à 68%.
Néanmoins, peut on détecter qui est gourmand en mémoire ?

À priori (jamais testé) avec smem.

https://www.cyberciti.biz/faq/linux-which-process-is-using-swap/#ref2

Je ne suis pas certain que cela te soit utile s’il n’y a pas de problème.

Non en ce moment pas de problème.
Cependant il y a quelques mois mon Odroid C2 a planté 2 fois sans raison apparente sauf peut être le swap mais impossible à voir puisque j’ai redémarré la machine manuellement.
Merci pour tes infos et bonne journée