Sous Linux, comment faire pour savoir combien de mémoire sont les processus à l'aide?
Je pense que j'ai peut-être une fuite de mémoire dans ma LAMPE à l'application (mémoire utilisée, swap commence à s'habituer, etc.). Si je pouvais voir combien de mémoire les différents processus à l'aide, il pourrait m'aider à résoudre mon problème. Est-il un moyen pour moi de voir cette information sous *nix?
Vous devez vous connecter pour publier un commentaire.
Obtenir le droit d'utilisation de la mémoire est plus compliqué qu'on pourrait le penser. La meilleure façon que j'ai pu trouver est:
Où "PROCESSUS" est le nom du processus que vous voulez inspecter et "TYPE" en est un:
Rss
: résident de l'utilisation de la mémoire, toute la mémoire du processus, y compris toutes les mémoire de ce processus de partage avec d'autres processus. Il ne comprend pas de swap;Shared
: mémoire que ce processus de partage avec d'autres processus;Private
: privé de la mémoire utilisée par ce processus, vous pouvez rechercher des fuites de mémoire ici;Swap
: swap de la mémoire utilisée par le processus;Pss
: Proportionnelle de la Taille de l'Ensemble, un bon indicateur de mémoire. Il est le Rss ajusté pour le partage: si un processus a 1MiB privé et 20MiB partagé entre 10 de processus, Pss est 1 + 20/10 = 3MiBD'autres valeurs valides sont
Size
(c'est à dire la taille virtuelle, qui est presque vide de sens) etReferenced
(la quantité de mémoire actuellement sélectionné comme référence ou d'accès).Vous pouvez utiliser
watch
ou certains autres bash-script-fu pour garder un œil sur ces valeurs pour les processus que vous souhaitez surveiller.Pour plus d'informations sur
smaps
: http://www.kernel.org/doc/Documentation/filesystems/proc.txt.echo 0 $(sudo awk '/TYPE/ {print "+", $2}' /proc/PID/smaps) | bc
`pidof PROCESS`
avec le PID, il examinera un processus unique de l'utilisation de la RAM.ps -ef | grep -i $NAME_OF_PROCESS | grep -v grep | gawk '{print "-p "$2 }'
awk
au lieu de passer àbc
?awk 'BEGIN { used=0 }; /TYPE/ { used += $2 } END { print used }' /proc/PID/smaps
va vous donner la taille en KO.Je ne sais pas pourquoi la réponse semble si compliqué... Il semble assez simple de le faire avec
ps
:Exemple d'utilisation:
.zshrc
rss
colonne utilisée pour le calcul (Resident Set Size) comprend une mémoire de bibliothèques partagées, il en sera de jeter les numéros. Dans mon cas, les processus ont été à l'aide de plus de mémoire que le système avait à sa disposition.Utilisation
ps
pour trouver l'id de processus de l'application, puis utiliseztop -p1010
(substitut 1010 pour le real id de processus).Le RES colonne est le physique de la mémoire et de la VIRT colonne est utilisé de la mémoire virtuelle - y compris les bibliothèques et échangé mémoire.
Plus d'informations peuvent être trouvées à l'aide de "l'homme supérieur"
top -p`ps -ef | grep -i $NAME_OF_PROCESS | grep -v grep | gawk '{print $2}'`
De la première à obtenir le pid:
Et puis:
Vous pouvez regarder les différents processus dans le même temps:
Vous pouvez utiliser pmap rapport à l'utilisation de la mémoire.
Synopsis:
pmap $(pgrep -f -u username /usr/bin/gnome-shell) | sed -n -e 's/ total \+//p' | numfmt --from=iec
1724678144Plus élégant approche:
Grâce. J'ai utilisé pour créer cette simple script bash qui peut être utilisé pour surveiller un processus et son utilisation de la mémoire:
$ watch watchmypid.sh
Utilisation
top
ouhtop
et de prêter attention à la "RES" (résident de la taille de la mémoire) de la colonne.L'outil que vous voulez, c'est le ps.
Pour obtenir des informations sur ce que les programmes java sont en train de faire:
Pour obtenir des informations sur http:
Si votre programme se termine avant d'avoir une chance pour l'exécution de ces, ouvrez un autre terminal et exécutez:
Vous pouvez utiliser
pmap
+awk
.Le plus probable, nous nous intéressons au
RSS
de la mémoire qui est la 3ème colonne de la dernière ligne de l'exemplepmap
de sortie ci-dessous (82564).Awk est ensuite utilisé pour extraire cette valeur.
La
pmap
les valeurs sont exprimées en kilo-octets. Si nous le voulions, en mégaoctets, nous pourrions faire quelque chose comme cela.Dans le cas où vous n'avez pas de courant ou de processus d'exécution long de la piste, vous pouvez utiliser
/usr/bin/time
.Ce n'est pas le même que Bash
time
(comme vous le verrez).Par exemple
C'est "Maximum résident taille de l'ensemble du processus au cours de sa durée de vie, exprimée en kilo-octets" (extrait de la page de man). C'est le même que RES dans
top
et coll.Il y a beaucoup plus que vous pouvez obtenir à partir d'
/usr/bin/time
.gnu-time
paquet. Il installe un utilitaire appelégtime
qui fait quoi vous parlez.Pourquoi tous ces complexes réponses avec les différents scripts shell?
Utilisation htop, il modifie automatiquement les tailles et vous pouvez sélectionner les informations que vous souhaitez montré et il fonctionne dans le terminal, de sorte qu'il ne nécessite pas un ordinateur de bureau.
Exemple: htop -d8
Utilisation
Exemple: