Dies ist eine kanonische Frage dazu, wie Unix-Betriebssysteme die Speichernutzung melden.
Ähnliche Fragen:
Ich habe einen Produktionsserver, auf dem Debian 6.0.6 Squeeze läuft
#uname -a
Linux debsrv 2.6.32-5-xen-amd64 #1 SMP Sun Sep 23 13:49:30 UTC 2012 x86_64 GNU/Linux
Jeden Tag führt cron ein Backup-Skript als root aus:
#crontab -e
0 5 * * * /root/sites_backup.sh > /dev/null 2>&1
#nano /root/sites_backup.sh
#!/bin/bash
str=`date +%Y-%m-%d-%H-%M-%S`
tar pzcf /home/backups/sites/mysite-$str.tar.gz /var/sites/mysite/public_html/www
mysqldump -u mysite -pmypass mysite | gzip -9 > /home/backups/sites/mysite-$str.sql.gz
cd /home/backups/sites/
sha512sum mysite-$str* > /home/backups/sites/mysite-$str.tar.gz.DIGESTS
cd ~
Alles funktioniert einwandfrei, aber ich stelle fest, dass Munins Speichergraph eine Erhöhung des Cache und der Puffer nach dem Backup anzeigt .
Dann lade ich einfach Sicherungsdateien herunter und lösche sie. Nach dem Löschen bringt Munins Speichergraph den Cache und die Puffer in den Zustand vor dem Backup zurück.
Hier ist Munin Graph:
Das extern gehostete Bild war ein toter Link.
linux
unix
memory-usage
Gemeinschaft
quelle
quelle
Antworten:
Dies ist das gleiche "Problem", da der Server die Verwendung der Swap-Partition und einiger anderer ähnlicher Fragen auf dieser Site ablehnt . ( Hohe Speichernutzung auf Linux Server , Speichernutzung in LINUX , Web Server Ausführen von Low Speichern , etc.)
Achten Sie darauf, dass der Speicherverbrauch aus dem Cache stammt . Dies bedeutet, dass eine Datei im Speicher bleibt. Der zwischengespeicherte Speicher ist "freier" Speicher. Anstatt den Speicherblock leer zu lassen, speichert Ihr Betriebssystem die zuletzt gelesenen Dateien in diesem Bereich. Wenn eine Anwendung diesen Speicher benötigt, wird er von der Anwendung verwendet. Bis dahin haben Sie die Möglichkeit, zu vermeiden, dass Sie eine Datei erneut von der Festplatte lesen müssen, wenn häufig darauf verwiesen wird.
Gemäß diesem Diagramm hat sich Ihr effektiver Speicherverbrauch während der gesamten Dauer des Diagramms überhaupt nicht geändert.
quelle
sync; echo 3 > /proc/sys/vm/drop_caches
nach dem Backup ausgeführt werden?Sie haben das Problem mit Linux Ate My Ram .
Keine Panik.
Das ist kein Problem.
Ihr System arbeitet wie vorgesehen.
Das Problem ist nicht Ihr Betriebssystem - das Problem ist, dass Sie verstehen, was "freier" Speicher ist.
Unix-Systeme verwenden Speicher nicht nur zum Ausführen von Programmen. Speicher kann verwendet werden für:
Es folgt eine kurze (und weitgehend unvollständige) Übersicht darüber, wie moderne Unix-Systeme die RAM-Auslastung melden.
Was ist freier Speicher (die Betriebssystemdefinition) ?
Wenn ein Unix-System RAM als frei meldet , bedeutet dies "Ich benutze diesen RAM für nichts".
Freier RAM ist praktisch wertlos - Es beschleunigt Ihr System nicht, es sitzt nur da und ist "frei", falls etwas benötigt wird. Das könnte eines der drei anderen Dinge sein, die ich oben erwähnt habe.
Was sind Cache- und Pufferspeicher?
Cache und Pufferspeicher sind RAM, die das Betriebssystem verwendet, um Ihr System schneller zu machen.
Dieser Speicher wird derzeit nicht zum Ausführen von Programmen benötigt , daher verwendet Ihr Betriebssystem ihn, um häufig benötigte Daten zu speichern. Beispielsweise wird die C-Bibliothek (die von so gut wie jedem ausgeführten Programm benötigt wird) fast immer im
cache
Speicher gespeichert Das System muss nicht zur Festplatte gehen, um die Anweisungen zum Drucken von "Hello World" auf dem Bildschirm zu finden.Eigentlich ist es viel komplizierter - es gibt Shared Memory, Wired Memory usw. - aber für unsere Zwecke ist diese einfache Erklärung ausreichend.
Was ist aktiver Speicher?
Aktiver Speicher ist Teil von "verwendetem" Speicher - RAM, das von Anwendungen verwendet wird - Sortieren von Arbeitsblättern, Bereitstellen von Webseiten, Bearbeiten von Grafiken usw.
Aktiver Speicher war in letzter Zeit "aktiv". - das Programm behauptet, es habe seinen Inhalt verwendet (Lesen oder Schreiben), und es wird nicht als guter Kandidat für das Auswechseln angesehen.
Was ist inaktiver Speicher?
Wie der aktive Speicher ist der inaktive Speicher der Arbeitsspeicher, den die Anwendungen für ihre Zwecke verwenden. Der Unterschied besteht darin, dass auf diesen Speicher seit einiger Zeit nicht mehr zugegriffen wurde. Wenn also Push kommt, denkt das Betriebssystem, dass er auf die Festplatte ausgelagert werden kann, und (mit etwas Glück) das Programm, das behauptet, dass es nicht mehr danach fragt werde es nie bemerken.
Was ist "Verwendeter" Speicher (die MENSCHLICHE Definition)
Was Sie und ich als "belegten" Speicher betrachten, ist im Wesentlichen die Summe aus aktivem und inaktivem Speicher. Der gesamte RAM, der derzeit von Anwendungen für ihre Verwendung beansprucht wird.
Solange Sie mehr Arbeitsspeicher installiert haben als die Summe aus aktivem und inaktivem Arbeitsspeicher (plus einem Sicherheitsspielraum von 512-1024 MB), sind Sie in Ordnung: Ihr Betriebssystem wird wahrscheinlich die Swap- und Kill-Leistung nicht beeinträchtigen .
Was ist "freier" Speicher (die MENSCHLICHE Definition) ?
Was Sie und ich als "freien" Speicher betrachten, ist der Speicher, der zum Ausführen von Programmen zur Verfügung steht.
Dies ist etwas komplizierter als nur die Zahl "Kostenlos", die Ihr Betriebssystem ausgibt. Wenn ein Programm nach RAM fragt, versucht das Betriebssystem, den RAM so störungsfrei wie möglich abzurufen:
(Dies ist ungefähr der Punkt, an dem die Leistung normalerweise den Hunden zukommt: Jedes Mal, wenn ein Programm die CPU einschaltet, müssen die ausgelagerten Bits in den RAM zurückgebracht werden, was bedeutet , dass der aktive Speicher eines anderen Programms ausgelagert werden muss - der hoher Swap-Umsatz wird als Thrashing bezeichnet )
malloc()
wird versagen. Dies ist das POSIX-konforme Verhalten. Das Betriebssystem teilt dem nach RAM fragenden Programm mit, dass die Anforderung nicht erfüllt werden kann.Das Programm kann entweder nach weniger RAM fragen oder wenn es mit einem kleineren Speicherblock nicht auskommt, kann es aufräumen und beenden. (Wenn das Programm schlecht geschrieben ist, stürzt es einfach ab.)
Falls Sie anhand meiner Beschreibung hier und meiner Antwort auf die verknüpfte Frage nicht sagen können, halte ich dies für einen schrecklichen Weg, um das Problem zu lösen.
Warum steigt der freie Arbeitsspeicher beim Löschen von Dateien an?
In dem Beispiel aus der Frage hier haben Sie bemerkt, dass es möglich ist, RAM durch Löschen der Sicherungsdatei "freizugeben" - die Erklärung dafür ist ziemlich einfach: Da diese Datei von niemandem verwendet wird (keine offenen Datei-Handles) und von wo aus nicht mehr zugegriffen werden kann das Dateisystem (nicht verbunden) Das Betriebssystem weiß, dass niemand jemals wieder auf diese Daten zugreifen wird, und löscht die Daten aus dem Dateisystem-Cache.
Dadurch meldet das Betriebssystem mehr freien Speicher, hat jedoch keine Auswirkungen auf die Systemleistung.
quelle
top
Free / Wired / Active / Inactive RAM ist und dies meldet.Noch etwas, um zu überprüfen, ob die oben genannten Probleme auftreten:
Von: https://stackoverflow.com/a/5467207
quelle