Was sind RSS und VSZ in der Linux-Speicherverwaltung? Wie können beide in einer Multithreading-Umgebung verwaltet und nachverfolgt werden?
Antworten
Zu viele Anzeigen?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.
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
- See previous answers
- Weitere Antworten anzeigen