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-monitorzeigt standardmäßig nur "Meine Prozesse" an. rootKlicken 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 -
atopheute installieren 8-)
1. Wird im Vergleich zum verfügbaren System-RAM als einzelne Nummer verwendet
Ich sehe deine Ruby - Code Subtraktionen MemAvailableaus 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-monitoroder Ihre manuelle Berechnung zu verwenden, zumindest als erste Annäherung. Die MemAvailableNummer enthält im Grunde den gesamten zurückforderbaren "Cache". Dh MemAvailableenthä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 ShmemTeil ist kein Cache. Die Verwirrung tritt auf, weil Shmemsie mit dem "Seiten-Cache" des Kernels geschickt implementiert wurde.
Eine andere Möglichkeit, schnell "verfügbar" zu überprüfen, ist free -h.
Der freeBefehl 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
freeBefehl enthält (derzeit) nicht "freigegeben". Dies kann sehr verwirrend sein. Ignorieren Sie das Feld "verwendet" .
- Der von angezeigte "zwischengespeicherte" Wert
freeleidet unter dem oben angegebenen Problem.
- Wenn
freenicht "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 MemAvailabledie 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 meminfohaben Sie AnonPages: 924844 kB(0,9 GB). AnonPagesist einer der Begriffe, die reduziert MemAvailable.
Wenn dies AnonPageszunimmt, 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 smemBefehl 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 tailTeil 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 rootBenutzer 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 -mEs 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. ).
ShmemEnthält Dateien auf gemountet tmpfs. Sie können alle gemounteten tmpfsmit überprüfen df -t tmpfs.
Abhängig von Ihrem System Shmemkö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 ShmemSpeicherverluste 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 atopheute 8-)
smemkö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-monitormö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 ...
atopist 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 -Rzeigt "PSIZE" (gleiche Bedeutung wie "PSS"). Das atopPaket 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.