Sie haben sich eine Liste der Prozesse und deren Speichernutzung angesehen. Aber es gab ein Problem. Sie haben nicht die vollständige Liste angesehen.
gnome-system-monitor
zeigt standardmäßig nur "Meine Prozesse" an. root
Klicken Sie auf das Menüsymbol oben rechts (drei Punkte in einer vertikalen Linie), um Prozesse anzuzeigen, die allen Systembenutzern gehören, einschließlich des Benutzers. Ändern Sie die Auswahl von "Meine Prozesse" in "Alle Prozesse".
- Wird im Vergleich zum verfügbaren System-RAM als einzelne Nummer verwendet
- Analysieren / proc / meminfo
- Andere Tools, die Sie verwenden könnten -
atop
heute installieren 8-)
1. Wird im Vergleich zum verfügbaren System-RAM als einzelne Nummer verwendet
Ich sehe deine Ruby - Code Subtraktionen MemAvailable
aus MemTotal
. Dies ist genau die gleiche Berechnung, die von verwendet wird gnome-system-monitor
, wenn das System "1,5 GiB (41,4%) von 3,7 GiB" verwendet.
Sie haben das Recht, entweder gnome-system-monitor
oder Ihre manuelle Berechnung zu verwenden, zumindest als erste Annäherung. Die MemAvailable
Nummer enthält im Grunde den gesamten zurückforderbaren "Cache". Dh MemAvailable
enthält eine Art "Cache", der "verfügbar" ist, um zurückgefordert zu werden, sobald ein Programm mehr Speicher benötigt, als Sie frei haben.
Randnotiz: Es gibt einen anderen Typ oder eine andere Bedeutung von "Cache", die nicht zurückgefordert werden kann . Wenn Sie sich die Cache
/ "Cache" -Nummer ansehen , wird normalerweise gemeldet, dass sie Shmem
/ "shared" enthält. Der Shmem
Teil ist kein Cache. Die Verwirrung tritt auf, weil Shmem
sie mit dem "Seiten-Cache" des Kernels geschickt implementiert wurde.
Eine andere Möglichkeit, schnell "verfügbar" zu überprüfen, ist free -h
.
Der free
Befehl zeigt auch "freigegeben", Swap-Verwendung usw. an. In Ihrer Systemdokumentation sollten die Ausgabefelder und verfügbaren Optionen aufgeführt sein, z man free
. Einige der anderen Felder können irreführend sein:
- Das Feld "verwendet" im
free
Befehl enthält (derzeit) nicht "freigegeben". Dies kann sehr verwirrend sein. Ignorieren Sie das Feld "verwendet" .
- Der von angezeigte "zwischengespeicherte" Wert
free
leidet unter dem oben angegebenen Problem.
- Wenn
free
nicht "verfügbar" angezeigt wird, ist Ihr System uralt. Konsultieren Sie Ihre alte Dokumentation.
2. Analysieren von / proc / meminfo
Vielen Dank für die volle Ausgabe von cat /proc/meminfo
. Dies hilft oft dabei, bestimmte Antworten (oder überhaupt eine Antwort) zu finden. Wenn Sie sehen möchten, wie MemAvailable
die Berechnung selbst durchgeführt wird, können Sie den ersten Abschnitt meiner Antwort hier lesen: Ist der "zwischengespeicherte" Speicher de facto frei?
AnonPages
In Ihrem Beispiel meminfo
haben Sie AnonPages: 924844 kB
(0,9 GB). AnonPages
ist einer der Begriffe, die reduziert MemAvailable
.
Wenn dies AnonPages
zunimmt, sollte dies auf eine Zunahme von "RES" oder "RSS" ("Resident" in RAM "Set Size") einiger laufender Programme hinweisen. RSS kann jedoch irreführend sein, da ein Teil des Speichers gemeinsam genutzt wird:
Sie können RSS nicht addieren, da dies den gemeinsam genutzten Speicher doppelt zählen würde. Sie müssen PSS , das proportionale RSS, nach Berücksichtigung der Freigabe addieren . Der smem
Befehl kann PSS anzeigen und auch Summen berechnen. Zum Beispiel:
sudo smem -t > p; head -n1 p; echo; tail -n17 p
- Sehen Sie sich die Speichernutzung pro Prozess an. Der tail
Teil zeigt die Top 15 Prozesse, gefolgt von einer Zeile mit der gesamten PSS usw.
smem -t -U ^sourcejedi$ > U; head -n1 U; echo; tail -n17 U
- Sehen Sie sich die Speichernutzung von Prozessen an, die meinem Benutzer "sourcejedi" gehören.
sudo smem -t -u
- Sehen Sie sich den nach Benutzer gruppierten Speicher an. Dies kann nützlich sein, um Ihre Anmeldesitzungen von einigen Systemdämonen zu unterscheiden, die als eigene Benutzer ausgeführt werden. Beispielsweise wird packagekitd als root
Benutzer ausgeführt und kann Hunderte von Megabyte verwenden.
smem -t -P firefox
- Sehen Sie sich die Speichernutzung meines Webbrowsers an :-).
sudo smem -t -m > m; head -n5 m; echo; tail m
- Sehen Sie sich den Speicher an, der nach dem Zuordnungsnamen gruppiert ist - dem Namen der zwischengespeicherten Datei oder "<anonym>" oder "[Heap]" .
Der "residente" Prozessspeicher enthält sowohl "anonymen" Speicher als auch einige zwischengespeicherte Dateien. smem -m
Es können nicht alle zwischengespeicherten Dateien angezeigt werden, sondern nur bestimmte Dateitypen, die derzeit verwendet werden. Insbesondere Dateien, die ein Programm dem virtuellen Speicher zugeordnet hat. Dies umfasst Programmcode, Bibliothekscode und Dateien, die mit mmap () zugeordnet wurden.
Shmem
Sie haben auch Shmem: 374848 kB
(0,4 GB). Ich habe oben erwähnt Shmem
/ "geteilt". Dies ist ein weiterer Begriff, der den "verfügbaren" Speicher reduziert. (Es ist kein Cache zurückgefordert). Das ist ziemlich normal, aber Sie könnten versuchen zu sehen, was es ist.
Ein Teil des gemeinsam genutzten Speichers ist als Speicher einzelner Prozesse sichtbar. Wenn der gemeinsam genutzte Speicher von einem Prozess zugeordnet wird, sollte er im RSS / PSS gezählt werden. Siehe oben. Der "Zuordnungsname" kann hier manchmal nützlich sein (z smem -t -m
. B. ).
Shmem
Enthält Dateien auf gemountet tmpfs
. Sie können alle gemounteten tmpfs
mit überprüfen df -t tmpfs
.
Abhängig von Ihrem System Shmem
können einige Grafikpuffer enthalten sein. Ich habe eine Möglichkeit gefunden, die aktuelle Größe auf meinem System zu überprüfen (Intel-Grafik): Kann ich die Speichermenge anzeigen, die als GEM-Puffer zugewiesen ist? Ich würde gerne wissen, ob Sie einen anderen Weg finden, um Ihr System zu überprüfen!
Ich habe gelesen, dass Shmem
Speicherverluste in einigen anderen Grafiktreibern mit sehr großen VIRT (auch bekannt als VSIZE) für Xorg verbunden sein können. Linux verwendet den gesamten Swap und reagiert nicht mehr, solange genügend freier Arbeitsspeicher vorhanden ist
Andere Speichernutzung?
MemTotal - MemAvailable = 1796088 kB
(1,8 GB)
AnonPages: 924844 kB
(0,9 GB)
Shmem: 374848 kB
(0,4 GB)
Von den verbleibenden 0,5 GB sehe ich einige weitere kleine Anwendungen unter insgesamt 0,1 GB. Der Kernel reserviert auch ein paar Prozentpunkte Marge für sich selbst (siehe "Niedrigwassermarke"), aber ich denke, es wären 0,2 GB oder weniger auf Ihrem System. Es gibt also etwas mehr Verwendung, bei der ich mir nicht sicher bin.
Kernel-Plattenspeicher
Der Speicher "Nicht wiedergewinnbare Platte" ist ein weiterer Begriff, der reduziert wird MemAvailable
. Sie haben nicht viel: SUnreclaim: 55044 kB
(0,05 GB).
Sie können slabtop auch ausführen, um die Liste der Platten anzuzeigen. AFAICT, Slabtop gibt keine Statistiken auf Platten als zurückfordernd oder nicht zurückfordernd an. Aber ich kann normalerweise raten, und wenn es eine verdächtige Platte gibt, können Sie sie beim Namen nachschlagen.
3. Andere Tools, die Sie verwenden könnten - installieren Sie noch atop
heute 8-)
smem
könnte übertrieben sein. Manchmal ist alles, was Sie brauchen top
, oder Ihre Lieblingsalternative und zu wissen, wie man nach residentem Speicher sortiert. (Obwohl dies gnome-system-monitor
möglicherweise keine gute Wahl ist. Ich denke, es zeigt nicht wirklich genug).
Manchmal, wenn Sie ein Leistungsproblem haben, müssen Sie sich stattdessen das Lesen und Schreiben von Datenträgern ansehen. Sie könnten verwenden sudo iotop
.
Manchmal möchten Sie ein Protokoll über die Speichernutzung pro Prozess haben, damit Sie sehen können, warum Ihnen der Arbeitsspeicher ausgegangen ist und das System zu einem Crawl verlangsamt wurde ...
atop
ist ein geschicktes kleines Werkzeug, das all das kann. Wenn dies nützlich klingt, empfehle ich Ihnen, es sofort zu installieren. Dann kannst du es lernen, wenn du es brauchst :-).
sudo atop -R
zeigt "PSIZE" (gleiche Bedeutung wie "PSS"). Das atop
Paket enthält einen Hintergrunddienst, der im Abstand von zehn Minuten ausgeführt wird. Sie können atop -r ...
damit die Protokolldateien öffnen, die unter / var / log / atop / gespeichert sind.