Verstehen Sie einfach Ihre Linux-RAM-Nutzung mit Smem

0
73
fatmawati achmad zaenuri/Shutterstock

Linux-Speichernutzung kann schwierig zu interpretieren und schwer zu verstehen sein. Mit smem ist es einfach herauszufinden, welchen Speicher ein Prozess verwendet und welche Prozesse am meisten verwenden.

Speichernutzung

Linux bietet Ihnen viele Möglichkeiten, um zu überprüfen, was mit dem Arbeitsspeicher Ihres Computers passiert. Das Problem ist, dass die Speicherverwaltung eine komplizierte Herausforderung für Ihr Betriebssystem darstellt. Es muss mit physischem RAM, virtuellem RAM in Form von Auslagerungsspeicher und den Anforderungen der verschiedenen Arten von Prozessen, die gleichzeitig ausgeführt werden, jonglieren.

VERWANDTEWie viel RAM benötigt Ihr Computer für PC-Spiele?

Prozesse verbrauchen RAM, wenn sie sich selbst in den Speicher laden. Sie fordern dann mehr RAM an, damit sie Platz haben, um alle Aufgaben auszuführen, für die sie entwickelt wurden. Einige Prozesse wirken sich kaum auf den Arbeitsspeicher aus, andere sind sehr speicherhungrig.

Der Kernel und der Rest des Betriebssystems, Ihre Desktop-Umgebung und jede Anwendung oder Befehlszeilensitzung, die Sie ausführen, verlangen alle nach einem Teil der begrenzten Menge an RAM, die in Ihrem Computer installiert ist. Einige Prozesse erzeugen andere Prozesse. Einige Prozesse teilen RAM mit anderen Prozessen.

VERWANDTE So überprüfen Sie die Speichernutzung vom Linux-Terminal

Der Versuch, all dies zu entschlüsseln und eine einfache Antwort auf die Frage zu finden: “Wie viel RAM verwendet dieses Programm oder dieser Prozess?” kann eine überraschende Herausforderung sein. Granularität ist großartig und hat ihren Platz, aber ebenso kann ein Overkill an Informationen ein Hindernis sein.

Anzeige

Wenn Sie beispielsweise cat verwenden, um einen Blick in das Pseudo-Dateisystem /proc/meminfo zu werfen, wurden 50 Zeilen an Ausgabe zurückgegeben die Maschine, mit der dieser Artikel recherchiert wurde. Wo fangen Sie an?

cat /proc/meminfo

Und einige Linux-Dienstprogramme geben unterschiedliche Antworten. Auf unserer Testmaschine hatten wir eine weniger ausgeführte Instanz mit der Prozess-ID 2183.

Wir können das Dienstprogramm pmap mit der Option -x (erweitert) verwenden, um ein vollständiges Bild der Speichernutzung eines Prozesses zu erhalten. Wir verwenden es mit der Prozess-ID unserer Instanz von less:

pmap -x 2183

Am Ende der Ausgabe erhalten wir eine Summe für die Resident Set Size, die die Menge an verwendetem Haupt-RAM ist.

Wir haben dann das Dienstprogramm ps mit der Option -o (Ausgabe) verwendet, die RSS-Spalte ausgewählt und ihr das übergeben Prozess-ID derselben Instanz von less:

ps -o rss 2183

Wir erhalten ein anderes Ergebnis. Dies ist eine Designentscheidung seitens der ps-Autoren. Dies ist von der ps-Manpage:

Die Felder SIZE und RSS zählen einige Teile eines Prozesses nicht, einschließlich der Seitentabellen, des Kernel-Stacks, der Struktur thread_info und der Struktur task_struct. Dies sind in der Regel mindestens 20 KiB Arbeitsspeicher, der immer resident ist. SIZE ist die virtuelle Größe des Prozesses (Code+Daten+Stack). Werbung

Die Autoren anderer Dienstprogramme haben ihre eigenen Ansichten darüber, wie man die RAM-Nutzung misst.

Der RSS, der USS und der PSS< /h2>

Die Resident Set Size (RSS) ist die Menge an RAM, die einem Prozess zugewiesen wird, ohne Auslagerungsspeicher, aber einschließlich jeglichem RAM, das von gemeinsam genutzten Bibliotheken benötigt wird, die der Prozess verwendet.

VERWANDTEWarum es gut ist, dass der Arbeitsspeicher Ihres Computers voll ist

RSS gibt fast immer zu viel RAM-Nutzung aus. Wenn zwei oder mehr Prozesse eine oder mehrere gemeinsam genutzte Bibliotheken verwenden, fügt RSS einfach die RAM-Nutzung jeder Bibliothek zu ihrer Zählung der RAM-Nutzung für jeden dieser Prozesse hinzu. Neben der Ungenauigkeit steckt darin auch eine gewisse Ironie. Gemeinsam genutzte Bibliotheken bedeuten, dass nicht jeder Prozess seine eigene private Instanz einer Bibliothek laden muss. Wenn sich die Bibliothek bereits im Speicher befindet, wird sie diese gemeinsam nutzen und den RAM-Overhead reduzieren.

Die Proportional Set Size versucht, dies zu beheben, indem die Menge des gemeinsam genutzten Speichers auf die Prozesse aufgeteilt wird, die ihn gemeinsam nutzen. Wenn vier Prozesse Arbeitsspeicher gemeinsam nutzen, meldet PSS, dass 25 % des gemeinsam genutzten Arbeitsspeichers von jedem dieser Prozesse verwendet wird. Dies ist eine Annäherung, aber es ähnelt eher dem, was vor sich geht, als dem Bild, das RSS zeichnet.

Die eindeutige Satzgröße ist die RAM-Menge, die ausschließlich von einem Prozess verwendet wird, unabhängig davon, ob sie direkt von dem Prozess verbraucht wird oder von Bibliotheken verwendet wird, die ausschließlich von dem Prozess verwendet werden. Auch hier wird der Auslagerungsbereich ignoriert. Es ist nur an echtem, physischem RAM interessiert.

USS und PSS sind Begriffe und Konzepte, die von Matt Mackall, dem Autor von smem, vorgeschlagen wurden.

Das smem-Dienstprogramm

Das smem-Dienstprogramm meldet den Speicher, der von Prozessen, Benutzern, Zuordnungen oder systemweit verwendet wird. Bei allen von uns getesteten Distributionen musste es installiert werden. Um es unter Ubuntu zu installieren, verwenden Sie diesen Befehl:

sudo apt install smem

Um smem auf Fedora zu installieren, müssen Sie Folgendes eingeben:

sudo dnf install smem

Um smem auf Manjaro zu installieren, verwenden Sie:

sudo pacman -Sy smem

Werbung

Wenn Sie smem ohne Optionen verwenden, erhalten Sie eine Liste von die Prozesse, die RAM verwenden.

smem

Eine Informationstabelle wird im Terminalfenster angezeigt.

Die Spalten sind:

  • PID : Die Prozess-ID des Prozesses, der den Speicher verwendet.
  • Benutzer: Der Benutzername des Benutzers, dem der Prozess gehört.
  • Befehl: Die Befehlszeile, die den Prozess gestartet hat.
  • Swap: Wie viel Auslagerungsspeicher der Prozess verwendet.
  • USS: Die eindeutige Satzgröße.
  • PSS: Der proportionale Satz Größe.
  • RSS: Die Resident Set-Größe.

Um die Größen in Prozent ausgedrückt anzuzeigen, verwenden Sie die Option -p (Prozent). .

smem -p

Die Größen in Bytes wurden ersetzt mit Prozentsätzen.

Um die Abbildungen in einer menschenfreundlicheren Form anzuzeigen, verwenden Sie das -k ( abkürzen) Option. Dadurch werden die Zahlen verkleinert und Einheitenindikatoren hinzugefügt.

smem -k

Anstelle von rohen Bytes werden die Größen in Megabyte, Gigabyte usw. angezeigt.

Werbung

Um eine Summenzeile hinzuzufügen, verwenden Sie die Option -t (Totals).

smem -k -t

Die letzte Zeile der Ausgabe zeigt Summen für jede Spalte.

Verfeinerung des Berichts

Sie können smem bitten, über die Speichernutzung durch Benutzer, Mapping (Bibliotheken) oder systemweit zu berichten. Um die Ausgabe nach Benutzer zu filtern, verwenden Sie die Option -u (Benutzer). Beachten Sie, dass Sie smem mit sudo ausführen müssen, wenn Sie mehr als nur Ihre eigene Nutzung sehen möchten.

smem -u sudo smem -u

Wie Sie sehen können, wird die Ausgabe bei Benutzernamen mit mehr als acht Zeichen verbogen.

To Sehen Sie sich die Verwendung an, die den verwendeten Bibliotheken zugeordnet ist, unabhängig davon, welche Prozesse die Bibliotheken verwenden oder welche Benutzer diese Prozesse besitzen, verwenden Sie die Option -m (Zuordnung).

smem -m -k -t

Wir haben auch nach menschenlesbaren Werten und einer Gesamtsumme gefragt.

Um die systemweite Speichernutzung anzuzeigen, verwenden Sie die Option -w (systemweit).

smem -w -k -t

Berichte über ein einzelnes Programm

Mit ein wenig Befehlszeilenmagie können wir Berichte über ein einzelnes Programm und alle seine Unterprozesse erstellen. Wir leiten die Ausgabe von smem an tail weiter und bitten tail, nur die letzte Zeile anzuzeigen. Wir weisen smem an, von Menschen lesbare Werte zu verwenden und eine Gesamtzahl anzugeben. Die Summe wird die letzte Zeile sein, und das ist das Zeilenende, das für uns angezeigt wird.

Werbung

Wir verwenden die Option -c (Spalten) mit smem und teilen ihr mit, welche Spalten in unsere Ausgabe aufgenommen werden sollen. Wir beschränken dies auf die Spalte “Proportionale Satzgröße”. Die Option -P (Prozessfilter) ermöglicht es uns, smem eine Suchzeichenfolge zu geben. Nur übereinstimmende Ausgabezeilen werden eingeschlossen.

smem -c pss -P firefox -k -t | tail -n 1

Das ist eine schnelle und übersichtliche Methode zum Auffinden den RAM-Verbrauch eines Programms und seiner untergeordneten Prozesse ermitteln.

Graphen generieren

Sie können die Optionen –pie oder –bar übergeben, damit smem Diagramme generiert. Es muss gesagt werden, dass bei zu vielen Kategorien die Grafiken schnell unverständlich werden, aber für einen schnellen visuellen Überblick können sie nützlich sein.

Das Befehlsformat ist:

smem –pie name -s uss

Das Tortendiagramm erscheint in einem eigenen Anzeigefenster.

Um andere Diagramme anzuzeigen, verwenden Sie pss oder rss anstelle von uss. Um ein Balkendiagramm anzuzeigen, verwenden Sie –bar anstelle von –pie.

Werbung

Damit dies funktioniert, müssen Sie Python zusammen mit der matplotlib-Bibliothek installiert haben. Diese waren bereits auf den von uns getesteten Ubuntu-, Fedora- und Manjaro-Distributionen installiert.

Gute Dinge kommen in kleinen Paketen

Die smem Utility hat noch ein paar Tricks im Ärmel, und Sie werden ermutigt, sich seine Manpage anzusehen. Sein Hauptrepertoire ist das, was wir hier skizziert haben, und es ist ein großartiges kleines Tool, das Sie in Ihrer CLI-Toolbox haben sollten.

VERWANDTE ART: 37 Wichtig Linux-Befehle, die Sie kennen sollten

WEITER LESEN

  • › Beenden Sie das Herunterfahren Ihres Windows-PCs
  • › So reinigen Sie den Ladeanschluss Ihres iPhones
  • › Erinnerung an VRML: The Metaverse of 1995
  • › Was bedeutet “BB” Mean, und wie verwende ich es?
  • › So fügen Sie Ihrem Router weitere Ethernet-Ports hinzu
  • › 6 Tipps zum Erstellen von Microsoft Excel-Diagrammen, die auffallen