le swap se rempli sans raison

Demande d'aide : c'est ici.
Répondre
Avatar du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

01 avr. 2018, 09:20

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 : 345
Enregistré le : 05 août 2016, 20:25
Status : Hors ligne

01 avr. 2018, 10:32

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

01 avr. 2018, 19:07

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 : 345
Enregistré le : 05 août 2016, 20:25
Status : Hors ligne

01 avr. 2018, 19:28

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

01 avr. 2018, 19:43

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

02 avr. 2018, 08:33

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

03 avr. 2018, 20:31

ç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 : 345
Enregistré le : 05 août 2016, 20:25
Status : Hors ligne

03 avr. 2018, 22:06

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

04 avr. 2018, 19:08

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 : 18
Enregistré le : 10 juil. 2016, 01:24
Status : Hors ligne

16 avr. 2018, 06:28

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 : 345
Enregistré le : 05 août 2016, 20:25
Status : Hors ligne

16 avr. 2018, 09:51

Encore un article rempli de bêtises écrit par quelqu'un qui n'a visiblement rien compris au swap...
Avatar du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

16 avr. 2018, 11:00

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 : 18
Enregistré le : 10 juil. 2016, 01:24
Status : Hors ligne

16 avr. 2018, 17:44

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

16 avr. 2018, 20:14

ça je sais, mais je veux suivre process par process et visualiser heure par heure par exemple
Lolo
Membre
Membre
Messages : 18
Enregistré le : 10 juil. 2016, 01:24
Status : Hors ligne

16 avr. 2018, 21:19

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

17 avr. 2018, 08:52

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 : 18
Enregistré le : 10 juil. 2016, 01:24
Status : Hors ligne

17 avr. 2018, 10:30

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 du membre
piratebab
Site Admin
Site Admin
Messages : 2822
Enregistré le : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

17 avr. 2018, 11:54

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