le swap se rempli sans raison

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Bonjour,
j'ai un phénomène curieux.
Il me reste un Go de RAM libre, et poutant le swap se rempli de maniére continue, Je viens de faire un test: 1,28 Go en 9 heures. et ça ne s'arrete jamais.
A part voir que c'est FF qui prends le plus de mémoire globale, je n'est pas trouvé comment investiguer plus en détails pour trouver la source du probléme.
Une idée ?
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

1,3 Go en 9 heures, cela représente un débit moyen de 40 ko/s, donc pas de quoi affecter les performances de la machine s'il est régulier. Il s'agit peut-être d'une fuite de mémoire d'un programme.

La présence simultanée d'une grande quantité de mémoire libre et de swap utilisé en quantités équivalentes peut signifier que le système a eu un gros besoin temporaire de mémoire dans le passé pour une application qui l'a conduit à swapper.

Tu peux voir la quantité de swap utilisée par les processus avec des commandes comme top. Top n'affiche pas la colonne swap par défaut, il faudra l'ajouter et trier par celle-ci avec la commande "f".

Le contenu des fichiers écrits dans les tmpfs peut aller dans le swap. Je ne connais pas de moyen direct pour connaître la quantité de swap occupée par les tmpfs, mais tu peux afficher l'espace occupé dans les tmpfs avec une commande comme df :

Code : Tout sélectionner

df -hT -t tmpfs -t devtmpfs -t ramfs
En utilisation normale l'espace occupé dans les tmpfs système (/dev, /run...) devrait être modeste.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Merci Pascal,
ce remplissage est continu et interrompu, ce qui est le plus surprenant.
Par exmple avec un uptime de 2h, j'ai déjà un swap de 280 M, alors que je n'ai que 2,95G d'utilisé sur 4 (plus 11.2M de buffers, et 547M de cache)
coté ramfs, c'est raisonnable
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
udev devtmpfs 2,0G 0 2,0G 0% /dev
tmpfs tmpfs 394M 6,3M 388M 2% /run
tmpfs tmpfs 2,0G 90M 1,9G 5% /dev/shm
tmpfs tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup
tmpfs tmpfs 394M 16K 394M 1% /run/user/1000
Je ciens de cecevoir des barettes de RAM, je vais augmenter de 8 Go, on verra si ça change quelque chose
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Est-ce que top ou équivalent permet d'identifier un processus qui utilise ce swap ?

Aussi, tu peux faire tourner vmstat en continu sur plusieurs heures avec une période de 10 secondes à une minute par exemple et enregistrer sa sortie pour étudier a posteriori les conditions de la mémoire lorsque le swap se déclenche.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

OK merci, je viens d'ajouter de la mémoire, je verrais demain matin si le swap se rempli toujours
pas trouvé avec top pour identifier qui swape. Je sais juste que c'est FF qui utilise le plus de mémoire, via plusieurs process d'ailleurs.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Depuis l'augmentation de la RAM, plus de phénomène d'augmentation de mémoire utilisée, pas même la RAM.
Et activité CPU réduite .
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

ça augmente quand même, mais plus lentement.
Je voudrais me faire un script pour suivre l'évolution de la consomation par process. Pour cela, il me faudrait une commande qui me sorte les 10 process les plus consomateurs, sous un format simple à traiter, par ex sur une ligne le nom du process et la mémoire totale consommée. Je n'ai pas trouvé de cmd qui fasse ça.
Une idée ?
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Qu'est-ce qui augmente ? L'occupation de la RAM ou du swap ?
Si c'est l'occupation du swap, ce ne sont pas forcément les processus les plus consommateurs de mémoire qui en sont la cause.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

maintenant c'est la RAM (je suis passé de 4 à 12 Go)
j'ai un process "web" fils du process firefox, qi est le plus gros consomateur.
Si je regarde via l'utilitaire GUI de KDE, j'ai cette info


Private 981696 KB (= 78620 KB clean + 903076 KB dirty)
Shared 123368 KB (= 101364 KB clean + 22004 KB dirty)

c'est quoi la RAM dirty ?
Lolo
Membre
Membre
Messages : 32
Inscription : 10 juil. 2016, 01:24
Status : Hors-ligne

Bonjour,

Un article sur la gestion de la mémoire vive et de la swap : http://geekeries.de-labrusse.fr/?p=1806
http://geekeries.de-labrusse.fr/?p=1806 a écrit :
  • vm.swappiness = 0 – Linux utilisera le HD en dernière limite pour éviter un manque de RAM.
  • vm.swappiness = 60 – Valeur par défaut de Linux : à partir de 40% d’occupation de Ram, le noyau écrit sur le disque.
  • vm.swappiness = 100 – tous les accès se font en écriture dans la SWAP.

Perso, je fait un :

Code : Tout sélectionner

# echo vm.swappiness=10 >> /etc/sysctl.conf
Puis ceci pour charger la nouvelle configuration (sans reboot) :

Code : Tout sélectionner

# sysctl -p
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Encore un article rempli de bêtises écrit par quelqu'un qui n'a visiblement rien compris au swap...
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Merci Lolo,
ça me rappelle quelque chose
J'avais bricolé cette variable il y a longtemps pour faire des tests. La valeur actuelle est bien de 60.
J'ai un peu regardé ce qui est recommandé.
https://unix.stackexchange.com/question ... by-default donne des explications détaillées sur le mécanisme.
https://scottlinux.com/2010/06/23/adjus ... wappiness/ recommande:
For desktop users I recommend changing swappiness to a value of 10.

For most servers I suggest setting it to a value of 25.
Une explication plus détaillée
vm.swappiness = 0 # The kernel will swap only to avoid an out of memory condition
vm.swappiness = 1 # Kernel version 3.5 and over, as well as kernel version 2.6.32-303 and over: Minimum amount of swapping without disabling it entirely.
vm.swappiness = 10 # This value is sometimes recommended to improve performance when sufficient memory exists in a system, this value *10* could be considered for the performance being expected.
vm.swappiness = 60 # The default value.
vm.swappiness = 100 # The kernel will swap aggressively.
Avec mes 11 Go de RAM, je vais passer à 20.
Mais cela ne me dit pas comment suivre l'évolution de la conso de RAM, et qui est le coupable de cette croissance lente mais continue.
Lolo
Membre
Membre
Messages : 32
Inscription : 10 juil. 2016, 01:24
Status : Hors-ligne

Pour suivre son taux d'occupation en live (sur le bureau), j'utilise conky (de manière visuellement basique).

Ci dessous les lignes concernant la mémoire vive et la swap de mon "~/.conkyrc".

Code : Tout sélectionner

${color1}RAM:$color $mem/$memmax ${color1}-$color $memperc% ${membar 4}
${color1}Swap:$color $swap/$swapmax ${color1}-$color $swapperc% ${swapbar 4}
${color1}Cache:$color $cached ${color1}- Buffer:$color $buffers
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

ça je sais, mais je veux suivre process par process et visualiser heure par heure par exemple
Lolo
Membre
Membre
Messages : 32
Inscription : 10 juil. 2016, 01:24
Status : Hors-ligne

Je viens de trouver ce lien très intéressant dans ton cas : https://www.vincentliefooghe.net/conten ... et-du-swap

D'après ce liens pour ce que tu cherches a faire :
https://www.vincentliefooghe.net/content/linux-gestion-la-ram-et-du-swap a écrit :for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | sort -k 3 -n

Tu pourrais faire un truc du genre (pour un (ou plusieurs) programme(s) "Web" (...) échantillonné(s) heure par heure sur 24 heures ) :

Code : Tout sélectionner

#!/bin/bash
rm suivi_*
for (( i=0 ; i<24 ; i++ )); do
  for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB  | sort -k 3 -n | grep Web | awk '{printf $3 "\n"}' >> suivi_Web
  ...
  sleep 3600
done
exit 0
Ou comme tu le souhaites, tout suivre :

Code : Tout sélectionner

#!/bin/bash
rm suivi_all*
for (( i=0 ; i<24 ; i++ )); do
  for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB  | sort -k 3 -n > suivi_all$i 
  sleep 3600
done
exit 0
A toi d'améliorer ça.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Merci, je vais regarder.
Pour la gestion du swap, j'ai fait l'erreur de modifier directement le fichier /etc/sysctl.conf. A la premiére mise à jour, fichier écrasé ..
Je vais me faire un .d pour que ma modif soit permanente et passe les mises à jour.
Lolo
Membre
Membre
Messages : 32
Inscription : 10 juil. 2016, 01:24
Status : Hors-ligne

Moi aussi, j'ai modifié directement le fichier /etc/sysctl.conf. Je n'ai encore jamais eu de soucis avec.
Au pire, ça peut faire comme pour /etc/ssh/ssh_config, ça t'indiquera probablement si tu souhaites conserver ton fichier ou le mettre le nouveau.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5877
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

je préfére utiliser les nouvelles versions de fichier de config lorsqu’elles sont proposées.
Répondre