477 Stimmen

Was sind RSS und VSZ in der Linux-Speicherverwaltung?

Was sind RSS und VSZ in der Linux-Speicherverwaltung? Wie können beide in einer Multithreading-Umgebung verwaltet und nachverfolgt werden?

6voto

ychaouche Punkte 4541

Zusammenfassend @jmh ausgezeichnete Antwort :

In #linux besteht der Speicher eines Prozesses aus :

  • seine eigene Binärdatei
  • seine gemeinsam genutzten Bibliotheken
  • seinen Stack und Heap

Aufgrund des Paging sind nicht alle davon immer vollständig im Speicher, sondern nur die nützlichen, zuletzt verwendeten Teile (Seiten). Andere Teile werden ausgelagert (oder ausgelagert), um Platz für andere Prozesse zu schaffen.

Die nachstehende Tabelle, die der Antwort von @jmh entnommen ist, zeigt ein Beispiel dafür, was residueller und virtueller Speicher für einen bestimmten Prozess sind.

+-------------+-------------------------+------------------------+
| portion     | actually in memory      | total (allocated) size |
|-------------+-------------------------+------------------------|
| binary      | 400K                    | 500K                   |
| shared libs | 1000K                   | 2500K                  |
| stack+heap  | 100K                    | 200K                   |
|-------------+-------------------------+------------------------|
|             | RSS (Resident Set Size) | VSZ (Virtual Set Size) |
|-------------+-------------------------+------------------------|
|             | 1500K                   | 3200K                  |
+-------------+-------------------------+------------------------+

Zusammengefasst: Der residente Speicher ist das, was sich gerade im physischen Speicher befindet, und die virtuelle Größe ist der gesamte physische Speicher, der zum Laden aller Komponenten erforderlich ist.

Natürlich addieren sich die Zahlen nicht, da Bibliotheken von mehreren Prozessen gemeinsam genutzt werden und ihr Speicher für jeden Prozess separat gezählt wird, auch wenn nur eine einzige Instanz von ihnen im Speicher vorhanden ist.

0voto

Sie werden nicht verwaltet, sondern gemessen und möglicherweise begrenzt (siehe getrlimit Systemaufruf, auch bei trlimit(2) ).

RSS bedeutet Größe des Einwohnerschlüssels (der Teil des virtuellen Adressraums, der sich im RAM befindet).

Sie können die virtueller Adressraum des Prozesses 1234 mit proc(5) con cat /proc/1234/maps und seinen Status (einschließlich Speicherverbrauch) durch cat /proc/1234/status

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X