Je dépanne une machine dont les ralentissements sont dus à une utilisation intensive de la permutation après plusieurs jours d'utilisation. Le système dispose de 16 Go de RAM et devrait normalement fonctionner normalement, sauf qu'un volume important de la RAM est utilisé par le cache et n'est pas libéré si nécessaire. Une utilisation continue bloquera le système jusqu'à ce que jusqu'à 12 Go soient bloqués dans le cache.
Avant que vous ne le mentionniez, je connais bien Linux a mangé mon bélier .
Un affichage typique de free après 3 à 4 jours de course est:
total used free shared buff/cache available
Mem: 15G 4.4G 184M 280M 10G 116M
Swap: 15G 7.8G 8.1G
Pour résoudre ce problème, je suis tombé à zéro swapiness.
$ cat /proc/sys/vm/swappiness
0
De plus, je ne parviens pas à appeler manuellement un vidage de mémoire cache avec un effet significatif.
$ Sudo su -c "free -h && sync && echo 3 > /proc/sys/vm/drop_caches && free -h"
total used free shared buff/cache available
Mem: 15G 4.4G 166M 280M 10G 104M
Swap: 15G 7.8G 8.1G
total used free shared buff/cache available
Mem: 15G 4.4G 186M 280M 10G 115M
Swap: 15G 7.8G 8.1G
Je me demande si cela a un rapport avec la vidéo intégrée avec Skylake. Quoi qu'il en soit, je ne sais pas comment continuer à décrire le problème, la plupart des ressources Internet affirmant que l'utilisation du cache est normale et qu'elle sera libérée si nécessaire - alors que ce n'est clairement pas le cas. Où devrais-je regarder ensuite?
Pour en savoir plus sur le "cache mémoire", utilisez slabtop
, utilisez -s
pour trier la sortie et c
correspond à la taille du cache. Utilisez:
Sudo slabtop -s c
Pour moi, la majeure partie du cache est liée à inode_cache
Et à propos de "swap", vous pouvez utiliser le fichier status
de chaque répertoire de processus dans /proc
pour savoir lequel d’entre eux utilise le swap.
Pour programme spécifique:
cd /proc/$(pgrep -x programname)
grep -i swap status
Pour obtenir une liste de toutes les tailles de cache de processus:
cd /proc
find -maxdepth 2 -iname status -exec grep -i -e name -e swap {} \; -exec echo "---" \;
la sortie serait semblable à:
---
Name: atd
VmSwap: 0 kB
---
Name: rsyslogd
VmSwap: 0 kB
---
Name: cron
VmSwap: 0 kB