
Ich bin mir dieser Frage bewussthttps://stackoverflow.com/questions/41224738/wie-berechnen-sie-den-systemspeicherverbrauch-von-proc-meminfo-like-htop Die Antwort scheint hinsichtlich der Speichernutzung veraltet und diese Frage scheint komplexer.
htop berechnet jetzt definitiv nicht mehr den Gesamtspeicher über MemTotal - MemFree
. Eshttps://access.redhat.com/solutions/406773Ich habe eine Lösung gefunden, die passen könnte. Demnach würde es über berechnet, MemTotal - MemFree - Buffers - Cached - Slab
was aber im Vergleich zu htop zu einem zu geringen Speicherverbrauch führt.
Der Speicherverbrauch in htop scheint ziemlich verwandt zu sein, wie free -m
in der Zelle gezeigt wirdMem: used
Wenn Sie jedoch eine Ramdisk erstellen, ändert sich einiges:
mkdir mnt
sudo mount -t tmpfs none mnt
cd mnt
sudo dd if=/dev/urandom of=test bs=32M status=progress
Oben wird eine RAM-Disk mit 50 % der Größe des installierten Speichers erstellt und gefüllt.
htop zeigt nun etwas mehr als die Hälfte des verwendeten physischen RAM an, im Testfall 3,82 GB von 7,44 GB. free -m
Es werden jedoch immer noch nur 104 MB verwendet, verglichen mit 102 MB vor dem Erstellen und Füllen der RAM-Disk. Die Angabe von 104 MB ist also definitiv falsch, da die Hälfte des physischen Systemspeichers nicht mehr verfügbar sein kann, da sie von der RAM-Disk verwendet wird.
Die /proc/meminfo
Größe der RAM-Disk scheint darin enthalten zu sein Cached
, daher sollte der zwischengespeicherte Speicher bei der Berechnung nicht abgezogen werden.
Warum also meldet free -m einen so falschen Wert für den freien Speicher? Standardmäßig gibt es bei Distributionen wie Debian oder Ubuntu verschiedene tmpfs, was bedeutet, dass free -m einen falschen Eindruck vom freien Speicher vermittelt.
Die Speicherberechnung von htop scheint recht sinnvoll. Wie kann also der htop-Wert daraus berechnet werden /proc/meminfo
?