Question Comment puis-je surveiller l'utilisation de la mémoire?


j'ai utilisé top pour voir l'utilisation de la mémoire pour le moment. Mais je voudrais surveiller l'utilisation de la mémoire sur une période de temps. E.g démarre la surveillance puis exécute quelques commandes et arrête définitivement la surveillance pour voir la quantité de mémoire utilisée pendant la période.

Comment puis-je le faire sur Ubuntu Server?

Je suppose que je pourrais lancer un travail cron toutes les 5 secondes environ et invoquer une commande qui enregistre l'utilisation actuelle de la mémoire dans un fichier texte. Mais quelle commande dois-je utiliser pour obtenir l'utilisation actuelle de la mémoire dans un format facile à connecter à un fichier texte?


235
2017-10-26 16:50


origine




Réponses:


Je recommande de combiner les réponses précédentes

watch -n 5 free -m

Notez que Linux aime utiliser de la mémoire supplémentaire pour cache les blocs de disque dur. Donc, vous ne voulez pas regarder seulement le gratuit Mem. Vous voulez regarder le free colonne de la -/+ buffers/cache: rangée. Cela montre combien de mémoire est disponible pour les applications. Donc je viens de courir free -m et obtenu ceci:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

Je sais que j'utilise 1528 Mo et avoir 2170 Mo gratuit.

Remarque: Pour arrêter ça watch cycle, vous pouvez simplement appuyer sur Ctrl+C.


290
2017-10-26 17:40



Merci, c'est instructif. Mais sur la colonne utilisée, vous avez d'abord 2896 et alors 1528 pour les tampons, cela ne signifie-t-il pas que vous utilisez 2896 + 1528? - Jonas
Mem: used est votre mémoire totale utilisée. -/+ buffers/cache: used est votre mémoire totale utilisée moins tampons et cache. Je sais que la sortie a l'air drôle, mais aucune arithmétique n'est requise ici. Vous recherchez juste / libre dans la ligne - / + buffers / cache. - Justin Force
L'option -h est beaucoup plus agréable - frmdstryr
@frmdstryr Bon point! -h / - l'homme n'existait pas quand j'ai écrit ceci, cependant. gitlab.com/procps-ng/procps/commit/… - Justin Force
@ cbradsh1 Vous pouvez juste faire free -h, par exemple. watch -n 5 free -h pour obtenir une sortie "lisible par l'homme", par ex. 2.1G au lieu de 2170 dans la sortie. - Justin Force


je pense htop est la meilleure solution.

  • sudo apt-get install htop

De cette façon, vous remarquerez quels programmes utilisent le plus de RAM. et vous pouvez facilement en résilier un si vous le souhaitez. Voici une capture d'écran!


191
2018-05-18 00:11



htop est bien parce que c'est plus "graphique" et peut-être plus facile à lire free. - mjswensen
Je ne comprends pas le résultat. Est RES la mémoire utilisée par cette application en MB? Alors qu'est-ce que c'est SHR? - faizal
@faizal: mémoire virtuelle, réservée et partagée. - WitchCraft
comment fait htop vous montrer «l'utilisation de la mémoire sur une période de temps»? - dangel
htop -s M_SHARE htop -s TIME - Tomachi


Si vous cherchez une bonne ventilation de la mémoire utilisée par chaque processus en cours, alors je vous recommande de vérifier ps_mem.py (a trouvé ici sur pixelbeat.org).

Je sais dans les commentaires ci-dessus, vous avez mentionné vouloir un instantané d'une ligne de gratuit, mais je pensais que d'autres pourraient trouver cela utile.

Exemple de sortie:

user@system:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

La seule partie que je n'aime pas est le fait que le script exige des privilèges root. Je n'ai pas encore eu l'occasion de voir exactement pourquoi c'est le cas.


38
2017-10-26 17:19



Je me demande si la mémoire est partagée entre les threads. Il est partagé entre les processus, n'est-ce pas? Au moins sous Windows ... - Thomas Weller
Dans ce cas, la mémoire partagée fait référence à des pages mappées par plusieurs processus sous la forme de bibliothèques partagées. En outre, dans le contexte d'applications multithread, tout l'espace mémoire de processus est accessible par tous les threads de ce processus. - Jason Mock
Maintenant disponible dans PyPI (pip install ps_mem) et sur GitHub. - Leif Arne Storset
@ThomasWeller: Oui, les threads partagent toujours la mémoire, alors que les processus peuvent en partager tout ou partie sous certaines conditions. - Leif Arne Storset
pour cela j'utilise gnome-system-monitor - jms


Utilisez le gratuit commander. Par exemple, ceci est la sortie de free -m:

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+ ne renverra que la deuxième ligne:

-/+ buffers/cache:        947       1064

22
2017-10-26 17:27



Merci, a fière allure. Donc ça 947 est l'utilisation de la mémoire moins la mémoire utilisée pour les tampons et les caches? - Jonas


le regarder commande peut être utile. Essayer watch -n 5 free surveiller l'utilisation de la mémoire avec des mises à jour toutes les cinq secondes.


9
2018-01-19 20:09



Merci, c'était génial! Cependant, je préférerais utiliser la mémoire sur une seule ligne, il est donc facile de se connecter à un fichier texte. - Jonas


Pour un contrôle visuel de l’utilisation globale de la RAM, si vous utilisez Byobu, cela gardera votre utilisation de la mémoire dans le coin inférieur droit du terminal et fonctionnera pendant que vous êtes dans une session de terminal.

Comme vous pouvez le voir sur la capture d'écran, ma machine virtuelle a un temps de disponibilité de 1h3m, une charge de 0,00, un processeur (virtuel) de 2,8 GHz et 994 Mo (21%) de RAM disponibles sur le système.

Byobu in use


4
2018-04-16 19:15





Vous pouvez le faire en utilisant cat /proc/meminfo.

enter image description here


3
2017-09-27 13:30



L'ajout de watch à l'avant de cette commande le rend génial! un péché watch cat /proc/meminfo - Elder Geek
le free commande prend ses informations de /proc/meminfo et les présente de manière compacte. Utilisation free -h pour une sortie lisible par l'homme. - LoMaPh


Solution de ligne unique et sortie:

free -m | grep "Mem:"

Voici un exemple du résultat attendu:

enter image description here


3
2017-10-26 18:01



Cela vous permettra également de voir l'utilisation de la mémoire pour le moment ... - mook765


j'utiliserais Cactus. Cela représentera graphiquement votre utilisation de la mémoire, etc. sur une période donnée, et vous pourrez vérifier votre utilisation à l'aide de votre navigateur Web.


1
2017-10-22 15:32





Surveillance de l'utilisation de la mémoire

Je suis plus en phase avec l'un des articles précédents qui mentionnait Cacti comme un excellent moyen de surveiller l'utilisation de la mémoire. Cependant, comme il semble que les cactus ne soient plus populaires dans le grand public, il existe une autre application graphique appelée Graphite.

Graphite est relativement facile à installer sur un serveur Ubuntu et à installer, vous pouvez consultez ce lien pour les procédures d'installation faciles à suivre.

Une fois le graphite installé, vous pouvez lui envoyer des métriques de mémoire, selon l’intervalle souhaité; toutes les 5 secondes, toutes les minutes, toutes les heures, etc.

Pour représenter graphiquement les métriques de mémoire, comme cela a déjà été suggéré dans les articles précédents, vous pouvez écrire votre propre script à l'aide des outils système pour collecter les informations de mémoire nécessaires. Ou, vous pouvez utiliser un plugin prédéfini snmp qui fera tout le travail pour vous.

Si vous souhaitez écrire votre propre script de mémoire, assurez-vous de prendre en compte la mémoire mise en mémoire tampon et mise en cache lors du calcul de la mémoire utilisée, sinon vous risquez de collecter de fausses données.

Si vous souhaitez utiliser à la place un plug-in snmp qui effectue déjà tous les calculs nécessaires, voici un lien vers celui qui fonctionne plutôt bien: checkMemoryviaSNMP.

Avantages de SNMP:

J'ai installé snmp sur tous les noeuds distants que je surveille. Cela me permet de surveiller tous mes systèmes à partir de un serveur central, sans avoir à copier ou à mettre un plugin sur les noeuds distants.

Contre de SNMP:

Vous devez vous assurer que agent snmp est installé sur chacun des nœuds distants sur lesquels vous souhaitez surveiller la mémoire. Cependant, cette installation sera un contrat unique. Si vous utilisez des outils d'automatisation tels que chef, marionnette ou des outils similaires dans votre environnement, cela ne pose aucun problème.

Configuration de l'agent SNMP sur le ou les nœuds distants:

Une fois l'agent snmp installé, il vous suffit de vi / /cd/snmpd/snmpd.conf et d'y ajouter cette ligne:

rocommunity  (specify-a-community-string-aka-password-here)

Puis redémarrez l'agent snmpd, avec:

/etc/init.d/snmpd restart

Ensuite, sur votre serveur central, à partir duquel vous surveillez tous vos autres serveurs, vous pouvez exécuter la commande suivante:

$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ].  System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].

real    0m0.23s
user    0m0.03s
sys     0m0.02s

1