Vraag Hoe kan ik het geheugengebruik controleren?


ik heb gebruikt top om het geheugengebruik op dit moment te zien. Maar ik zou graag het geheugengebruik in de loop van de tijd willen volgen. Neem bijvoorbeeld de bewaking en voer vervolgens enkele opdrachten uit, en stop de monitoring definitief en kijk hoeveel geheugen er gedurende de periode is gebruikt.

Hoe kan ik dit op Ubuntu Server doen?

Ik denk dat ik om de 5 seconden een cronjob zou kunnen starten en een commando kan oproepen dat het huidige geheugengebruik in een tekstbestand registreert. Maar welk commando moet ik gebruiken om het huidige geheugengebruik in een formaat te krijgen dat eenvoudig te loggen is naar een tekstbestand?


235
2017-10-26 16:50


oorsprong




antwoorden:


Ik raad aan de eerdere antwoorden te combineren

watch -n 5 free -m

Merk op dat Linux graag extra geheugen gebruikt cache vaste-schijfblokken. Dus je wilt niet alleen naar de gratis kijken Mem. U wilt naar de free kolom van de -/+ buffers/cache: rij. Dit laat zien hoeveel geheugen beschikbaar is voor applicaties. Dus ik rende gewoon weg free -m en heb dit:

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

Ik weet dat ik gebruik 1528 MB en hebben 2170 MB gratis.

Notitie: Om dit te stoppen watch cyclus kun je gewoon op drukken Ctrl+C.


290
2017-10-26 17:40



Bedankt, dat is informatief. Maar op de gebruikte kolom die je eerst hebt 2896 en dan 1528 voor buffers, betekent dit niet dat u gebruikt 2896 + 1528? - Jonas
Mem: used is je totale gebruikte geheugen. -/+ buffers/cache: used is je totale gebruikte geheugen minus buffers en cache. Ik weet dat de uitvoer er leuk uitziet, maar hier is geen rekenmethode vereist. Je zoekt gewoon naar gebruikt / gratis in de - / + buffers / cache rij. - Justin Force
De optie -h is een stuk leuker - frmdstryr
@frmdstryr Goed punt! -h / - mens bestond niet toen ik dit schreef. gitlab.com/procps-ng/procps/commit/... - Justin Force
@ cbradsh1 Je kunt het gewoon doen free -hb.v. watch -n 5 free -h om "door mensen leesbare" uitvoer te verkrijgen, b.v. 2.1G in plaats van 2170 in de uitvoer. - Justin Force


I denk htop is de beste oplossing.

  • sudo apt-get install htop

Op deze manier zult u merken welke programma's de meeste RAM gebruiken. en je kunt er gemakkelijk een beëindigen als je dat wilt. Hier is een screenshot!


191
2018-05-18 00:11



htop is leuk omdat het meer "grafisch" is en mogelijk gemakkelijker te lezen dan free. - mjswensen
ik begrijp de uitvoer niet. is RES het geheugen dat door die toepassing in MB wordt gebruikt? Wat is dat dan SHR? - faizal
@faizal: virtueel, gereserveerd en gedeeld geheugen. - WitchCraft
hoe gaat dat htop laat je het 'het geheugengebruik over een bepaalde periode' zien? - dangel
htop -s M_SHARE htop -s TIJD - Tomachi


Als u op zoek bent naar een goed overzicht van het geheugen dat door elk lopend proces wordt gebruikt, raad ik u aan om uit te checken ps_mem.py (gevonden hier op pixelbeat.org).

Ik weet dat je in de bovenstaande opmerkingen hebt gezegd dat je een snapshot van één regel wilt gratis, maar ik dacht dat anderen dit misschien handig zouden vinden.

Voorbeelduitvoer:

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

Het enige deel dat ik niet leuk vind, is het feit dat het script beweert root-rechten te vereisen. Ik heb nog geen gelegenheid gehad om precies te zien waarom dit het geval is.


38
2017-10-26 17:19



Ik vraag me af of het geheugen wordt gedeeld tussen threads. Het wordt gedeeld tussen processen, is het niet? In ieder geval op Windows ... - Thomas Weller
In dit geval verwijst het gedeelde geheugen naar pagina's die door meerdere processen zijn toegewezen in de vorm van gedeelde bibliotheken. Bovendien is in de context van toepassingen met meerdere threads de gehele procesgeheugenruimte toegankelijk voor alle threads in dat proces. - Jason Mock
Nu beschikbaar in PyPI (pip install ps_mem) en op GitHub. - Leif Arne Storset
@ThomasWeller: Ja, threads delen altijd geheugen, terwijl processen sommige of alle delen onder bepaalde voorwaarden kunnen delen. - Leif Arne Storset
hiervoor gebruik ik gnome-systeem-monitor - jms


Gebruik de gratis opdracht. Dit is bijvoorbeeld de uitkomst van 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 /+ zal alleen de tweede regel retourneren:

-/+ buffers/cache:        947       1064

22
2017-10-26 17:27



Bedankt, ziet er goed uit. Dus dit 947 is geheugengebruik minus het geheugen dat wordt gebruikt voor buffers en caches? - Jonas


De kijk maar commando kan handig zijn. Proberen watch -n 5 free om het geheugengebruik elke vijf seconden te controleren met updates.


9
2018-01-19 20:09



Bedankt, dit was geweldig! Ik zou echter liever het geheugengebruik op één regel krijgen, dus het is eenvoudig om in een tekstbestand te loggen. - Jonas


Voor visuele controle van algehele RAM-gebruik, als je gebruikt byobu, het houdt uw geheugengebruik in de rechterbenedenhoek van de terminal en zal worden uitgevoerd terwijl u zich in een terminalsessie bevindt.

Zoals u kunt zien aan de hand van screenshot, heeft mijn virtuele machine een uptime van 1h3m, 0,00 load, heeft een 2,8 GHz (virtuele) processor en 994MB (21%) RAM beschikbaar op het systeem.

Byobu in use


4
2018-04-16 19:15





Je kunt het gebruiken met cat /proc/meminfo.

enter image description here


3
2017-09-27 13:30



het toevoegen van een horloge aan de voorkant van deze opdracht maakt het geweldig! als in watch cat /proc/meminfo - Elder Geek
De free commando haalt zijn informatie uit /proc/meminfo en presenteert ze op een compacte manier. Gebruik free -h voor door mensen leesbare uitvoer. - LoMaPh


Eén lijn oplossing en uitvoer:

free -m | grep "Mem:"

Hier is een voorbeeld van de verwachte output:

enter image description here


3
2017-10-26 18:01



Dit laat je ook het geheugengebruik zien op het moment ... - mook765