Cet article montre comment vérifier l'utilisation de l'échange de chaque processus, en répondant "Comment puis-je savoir quel processus consommerait le plus d'espace d'échange ?"
Pour tous les noyaux
L'utilisation de swap est affichée comme "Swap ” colonnes dans /proc/[PID]/smaps . Cela indique la taille de la mémoire échangée de chaque plage de mémoire, ainsi la somme de toutes ces valeurs montre l'utilisation totale de l'échange du processus.
Par exemple, le script simple ci-dessous calcule l'utilisation totale d'échange du processus dont le PID =1027 :
# echo $((`grep Swap /proc/1027/smaps | awk '{ print $2; }' | tr '\n' '+'`0))
Pour les noyaux UEK2(2.6.39) ou ultérieurs
Il est plus facile de vérifier l'utilisation du swap d'un processus spécifique, il suffit de cocher "VmSwap ” colonne dans /proc/[PID]/status . Cela indique l'utilisation totale de l'espace d'échange sous la forme d'une seule valeur. Cette colonne n'existe pas dans /proc/[PID]/status avec le noyau < 2.6.39. Par exemple, pour trier les processus avec l'utilisation de l'échange à partir de la plus grande, exécutez un script ci-dessous :
# for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | more
La valeur affichée/calculée dans cet article n'indique pas une taille précise de l'espace de swap utilisé, mais indique simplement une approximation approximative. Certains (comme la bibliothèque partagée) peuvent être comptés deux fois, et d'autres (comme le cache d'échange) ne sont pas vraiment échangés.