web-dev-qa-db-fra.com

Comment vérifier quel processus utilise le plus de mémoire

Lorsque je vérifie free sur l'un des serveurs Prod, cela indique que 70% de la mémoire est utilisée:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

Mais je n'ai pas trouvé quel processus utilise la mémoire, j'ai essayé la commande top et elle montre le processus utilisant la mémoire uniquement 1.1 et 5.4%

Comment savoir quel processus utilise la mémoire?

Voici les meilleurs résultats de commande:

15085 couchbas  25   0 2784m 2.4g  40m S 183.7  1.5 299597:00 beam.smp
28248 tibco     18   0  124m 100m 3440 S 20.9  0.1   2721:45 tibemsd
15334 couchbas  15   0 9114m 8.6g 3288 S  9.0  5.4  12996:28 memcached
15335 couchbas  18   0  6024  600  468 S  2.0  0.0   1704:54 sigar_port
15319 couchbas  15   0  775m 2516  944 S  0.7  0.0 269:13.41 i386-linux-godu
12167 tibco     16   0 11284 1464  784 R  0.3  0.0   0:00.04 top
12701 root      15   0  451m 427m 2140 S  0.3  0.3  18:25.02 controller
13163 root      11  -5     0    0    0 S  0.3  0.0 289:58.58 vxglm_thread
40
sandeep

Cela vous montrera les 10 principaux processus utilisant le plus de mémoire:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

en utilisant top: lorsque vous avez ouvert top, appuyez sur m raccourcira le processus en fonction de l'utilisation de la mémoire.

Mais cela ne résoudra pas votre problème, sous Linux tout est fichier ou processus. de sorte que les fichiers que vous avez ouverts consommeront également la mémoire. donc cela n'aidera pas.

lsof vous donnera tous les fichiers ouverts avec la taille du fichier ou le décalage du fichier en octets.

57
Hackaholic

Votre bélier n'est pas réellement utilisé. Linux met simplement en cache ce qui se trouve sur votre disque par défaut, et place ce qu'il met en cache dans la section "utilisée" de ram.

Si vous chargez des applications qui utilisent réellement cette RAM, ce sera leur utilisation.

Voir http://www.linuxatemyram.com/

9

Vous pouvez diriger ps et sort pour obtenir le processus en utilisant le plus de mémoire. Il vous permettra également de spécifier d'autres détails de processus que vous souhaitez voir avec:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PS: ce qui précède suppose que votre colonne de mémoire est d'abord "sort -k 1 -n -r"

6
Hynk

Vous pouvez utiliser la commande slabtop pour afficher les objets slab utilisés par le noyau.
Vous pouvez également vérifier la sortie de/proc/meminfo

Recherchez ces 2 lignes dans la sortie

Slab:              68136 kB
SReclaimable:      21208 kB 

L'exemple ci-dessus montre que 68 Mo de cache de dalle sont utilisés par le noyau et 21 Mo peuvent être récupérés. Pour récupérer, vous pouvez utiliser la technique décrite ici https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/#s-memory-tunables

echo 2 > /proc/sys/vm/drop_caches  
3
Dmitry Zayats

Pour une analyse interactive, vous pouvez utiliser htop , puis appuyer sur la touche de fonction F6 pour choisir l'ordre de tri, par exemple PERCENT_CPU (utilisation de la mémoire en pourcentage), M_RESIDENT (taille de la mémoire résidente, mémoire réelle utilisée), M_SIZE (taille de la mémoire virtuelle) ou M_SHARE (taille de la mémoire partagée). Les deux premiers sont les nombres pertinents .

Les lignes vertes sont des fils. Appuyez sur (majuscules) K et H pour les masquer.

1
Marc Wäckerlin