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 ?
le swap se rempli sans raison
-
- 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 :
En utilisation normale l'espace occupé dans les tmpfs système (/dev, /run...) devrait être modeste.
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
- piratebab
- 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
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
Je ciens de cecevoir des barettes de RAM, je vais augmenter de 8 Go, on verra si ça change quelque choseSys. 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
-
- 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.
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.
- piratebab
- 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.
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.
- piratebab
- 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 ?
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 ?
-
- 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.
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.
- piratebab
- 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 ?
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 ?
-
- 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
Perso, je fait un :
Puis ceci pour charger la nouvelle configuration (sans reboot) :
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
Code : Tout sélectionner
# sysctl -p
-
- 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...
- piratebab
- 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:
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.
ç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:
Une explication plus détailléeFor desktop users I recommend changing swappiness to a value of 10.
For most servers I suggest setting it to a value of 25.
Avec mes 11 Go de RAM, je vais passer à 20.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.
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.
-
- 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".
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
-
- 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 :
Tu pourrais faire un truc du genre (pour un (ou plusieurs) programme(s) "Web" (...) échantillonné(s) heure par heure sur 24 heures ) :
Ou comme tu le souhaites, tout suivre :
A toi d'améliorer ça.
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
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
- piratebab
- 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.
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.
-
- 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.
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.