Nach der Recherche immer noch verwirrt über die Überwachung der RAM-Nutzung

Nach der Recherche immer noch verwirrt über die Überwachung der RAM-Nutzung

Ich ging durchDieser Artikel, in dem verschiedene Methoden zur Überprüfung der RAM-Nutzung erläutert werden. Ich kann die verschiedenen Methoden jedoch nicht miteinander in Einklang bringen und weiß nicht, welche die richtige ist.

Wenn ich mich zum ersten Mal anmelde, wird mir ein Bildschirm wie dieser angezeigt:

  System information as of Sun Apr 28 21:46:58 UTC 2013

  System load:  0.0               Processes:           76
  Usage of /:   15.6% of 7.87GB   Users logged in:     1
  Memory usage: 41%               IP address for eth0: 
  Swap usage:   0%

Das lässt mich vermuten, dass ich 41 % meines RAM verwende, was ziemlich viel erscheint, da der Server nicht viel tut. Oder bezieht sich diese Zahl auf etwas anderes als RAM?

Als nächstes versuche ich die free -mMethode:

ubuntu@ip-:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           590        513         76          0         67        315
-/+ buffers/cache:        130        459
Swap:            0          0          0

Laut der erklärenden Grafik im Artikel bedeutet dies, dass ich 130 MB RAM genutzt und 459 MB RAM frei habe, was bedeutet, dass ich etwa 22 % meines RAM nutze.

Als nächstes führe ich aus top:

top - 22:14:48 up 195 days, 21:30,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  77 total,   1 running,  76 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.3%us,  0.3%sy,  0.0%ni, 97.7%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    604376k total,   525692k used,    78684k free,    69124k buffers
Swap:        0k total,        0k used,        0k free,   322740k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
    1 root      20   0 24332 1864  976 S  0.0  0.3   0:08.75 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd     

Das ist am verwirrendsten, da die Zusammenfassung zeigt, dass ich 525 MB von insgesamt 604 MB verwende, aber wenn ich den interaktiven Befehl „m“ verwende, um nach dem obersten Speicher zu sortieren, verwendet der oberste Prozess nur 0,3 % des Speichers???

Schließlich psscheint der Befehl auch einen sehr geringen Speicherverbrauch aufzuweisen:

root@ip-:/home/ubuntu# ps -o command,rss
COMMAND                       RSS
ps -o command,rss             788
sudo su root                 1764
su root                      1404
bash                         2132

Ich würde mich freuen, wenn jemand meine Missverständnisse ausräumen würde, die diese offensichtlichen Konflikte verursachen.

Danke!

EDIT für Rahul

Ausgabe von cat /proc/meminfo:

MemTotal:         604376 kB
MemFree:          157564 kB
Buffers:           49640 kB
Cached:           231376 kB
SwapCached:            0 kB
Active:           290040 kB
Inactive:          97772 kB
Active(anon):     107672 kB
Inactive(anon):     4844 kB
Active(file):     182368 kB
Inactive(file):    92928 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                52 kB
Writeback:             0 kB
AnonPages:        106836 kB
Mapped:            22920 kB
Shmem:              5712 kB
Slab:              42032 kB
SReclaimable:      34016 kB
SUnreclaim:         8016 kB
KernelStack:         688 kB
PageTables:         3584 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      302188 kB
Committed_AS:     242768 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7152 kB
VmallocChunk:   34359729008 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB

Antwort1

Sie müssen nur das Speicherkonzept verstehen

Gemäß Ihrer Ausgabe von /proc/meminfo müssen Sie nur Folgendes beachten:

Puffer:- Ein Puffer ist etwas, das noch auf die Festplatte „geschrieben“ werden muss. Er gibt an, wie viel RAM für den Cache-Festplattenblock reserviert ist. „Cached“ ist ähnlich wie „Buffers“, nur dass diesmal Seiten aus dem Dateilesen zwischengespeichert werden.

Zwischengespeichert:- Ein Cache ist etwas, das von der Festplatte „gelesen“ und für die spätere Verwendung gespeichert wurde. Im Allgemeinen können Sie den Cache-Bereich als weiteren „freien“ RAM betrachten, da er schrittweise verkleinert wird, wenn die Anwendung mehr Speicher benötigt.

Es genügt zu verstehen, dass sowohl „Puffer“ als auch „Zwischengespeichert“ die Größe des Systemcaches darstellen. Sie wachsen oder schrumpfen dynamisch, je nach Anforderung des internen Linux-Kernel-Mechanismus.

Beim Webhosting wird der Cache mit dem folgenden Befehl gelöscht: (meistens in Cron konfiguriert):

sync && echo 3 > /proc/sys/vm/drop_caches

ZitatVerknüpfung

BEARBEITEN für eine weitere Anforderung, nämlich Speichernutzung pro Benutzer

#!/bin/bash
total_mem=0

printf "%-10s%-10s\n" User MemUsage

while read u m
do
        [[ $old_user != $u ]] && { printf "%-10s%-0.1f\n" $old_user $total_mem; total_mem=0; }
        total_mem=$(echo $m + $total_mem | bc);
        old_user=$u

done < <(ps --no-headers -eo user,%mem| sort -k1)

#--EOF

Bitte überprüfen Sie das obige Skript und teilen Sie mir mit, ob es richtig angezeigt wird oder nicht.

Antwort2

Gute Antwort, @RahulPatil.

Ein weiterer zu berücksichtigender Punkt bei ps oder top ist folgender

Dieses Tool [exmap] ist genauer als ps oder top, da es gemeinsam genutzte Bibliotheken berücksichtigt, die von mehreren Anwendungen verwendet werden. Wenn beispielsweise zwei Anwendungen dieselbe gemeinsam genutzte Bibliothek verwenden, die 1 MB Speicher belegt, zeigt ps beiden Anwendungen an, dass sie 1 MB zusätzlichen Speicher verwenden, während exmap korrekter anzeigt, dass jede Anwendung 500 KB verwendet. Diese höhere Genauigkeit ist insbesondere für die Bewertung von Desktopumgebungen wie KDE und GNOME wichtig, die sehr stark von gemeinsam genutzten Bibliotheken zwischen Anwendungen Gebrauch machen.

Überibm/developerworks/linux_memory

Da sich Ihre Frage auf einen Headless-Server bezieht, bin ich nicht sicher, wie viel Double Reporting top oder ps tatsächlich haben werden.

Antwort3

Ich fürchte, wir übersehen möglicherweise das Offensichtliche, weil es für die meisten von uns so selbstverständlich ist.

Jonah, verzeihen Sie mir, wenn ich falsch liege, aber Ihre Fragen klingen, als hätten Sie nicht bedacht, dass all diese Werte, insbesondere die CPU-Auslastung, normalerweise von Sekunde zu Sekunde erheblich schwanken.

Die CPU-Auslastung kann beim Starten eines neuen Prozesses sofort von einstelligen Prozentwerten auf 100 % steigen, aber (hoffentlich) schnell wieder auf unter 50 % zurückfallen.

Die Speichernutzung ändert sich langsamer, aber Linux versucht, nicht aktiv genutzten Speicher zu verwenden, indem es Prozesse zum „Caching“ von Festplattenzugriffen ausführt. Beispielsweise versucht es vorherzusagen, was als nächstes von der Festplatte gelesen werden muss, beispielsweise der Rest einer großen Datei, nachdem ein Teil gelesen wurde, und lädt es vorab in den Cache. Einige der Speichernutzungswerte umfassen sowohl den von Prozessen verwendeten Speicher als auch den für das Caching verwendeten Speicher. Auf einem System, das schon eine Weile läuft, werden die beiden Werte zusammen wahrscheinlich 80-90 % oder mehr betragen.

Bedenken Sie auch, dass der Prozess, den Sie ausführen, um die Nutzung anzuzeigen, z. B. topauch CPU und Speicher verwendet. Wenn Sie ein Skript mit einer Schleife schreiben würden, um die CPU-Nutzung kontinuierlich zu melden, würde es mit ziemlicher Sicherheit immer 100 % anzeigen, da die Meldung der Nutzung selbst (ohne einige sleep Verzögerungen) die gesamte CPU verwendet.

verwandte Informationen