Wie VmRSS und resident set-Größe passen?
Ich parse die Daten aus /proc/[pid]/statm
um eine Ahnung, die Speicherauslastung von einem bestimmten Prozess. man proc
besagt, dass resident set-Größe(gemessen in 'Seiten') ist das gleiche wie VmRSS (KB??) in /proc/[pid]/status
. Da Sie unterschiedliche Werte haben, würde ich gerne verstehen, den Zusammenhang zwischen diesen Werten. Gibt es sowas wie einen Faktor kann ich das irgendwo gelesen in /proc
(ich dachte, der VmPTE aber seine sth. else...)? Welche von beiden sollte ich analysieren, um die Größe des belegten Speicherplatzes für einen bestimmten Prozess?
#ex 1782 = firefox
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
~$ cat /proc/1782/status | grep Vm
VmPeak: 935584 kB
VmSize: 898484 kB
VmLck: 0 kB
VmHWM: 257608 kB
VmRSS: 186812 kB
VmData: 394328 kB
VmStk: 220 kB
VmExe: 44 kB
VmLib: 61544 kB
VmPTE: 1224 kB
VmSwap: 0 kB
InformationsquelleAutor lupz | 2012-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Verständnis ist, dass VM die Größe des virtuellen Speichers und RSS ist, wie viel es ist resident im Speicher. So,
virtueller Speicher = Teil im physikalischen Speicher + Teil auf der Festplatte
Den Teil im physikalischen Speicher ist RSS. So, VSS sollte größer sein, als RSS. Wenn Sie sind nahe zu gleich, das bedeutet, dass Ihr Prozess sitzen gemütlich in Erinnerung. Wenn VSS ist viel größer, das heißt, es ist nicht genug Speicher und Teile davon werden auf die Festplatte ausgelagert (D. H., weil von einem konkurrierenden Prozess, etc.).
Auf meinem system kann ich tun "Mann proc" und es listet die folgenden:
Wenn Sie berichten wollen, dass die Speichernutzung, dann wollen Sie wahrscheinlich den virtuellen Speicher, die aussieht wie VmPeak.
Hoffe, das hilft!
Ja, viele dieser Werte sind vom system abhängt. In einigen Systemen mit denen ich gearbeitet habe, werden einige dieser Werte wird immer eine 0, weil die Unterstützung nicht in den kernel kompiliert. Also ja, glaube nicht, was mein Mann Seiten sagen, wie Sie möglicherweise nicht relevant für Ihr system.
Tatsächlich, virtueller Speicher = Teil im RAM + Teil auf der Festplatte + virtuelle Adresse Speicherplatz nicht zugeordnet auf den physikalischen Speicher + memory-mapped-Dateien + shared memory. So Messen Speicherverbrauch, VmSize ist ziemlich nutzlos. Siehe die erste Antwort auf stackoverflow.com/questions/13308684/...
InformationsquelleAutor Ray
Den RSS-Wert
/proc/<pid>/stat
ist die Anzahl der Seiten, in der Erwägung, dass die VmRSS Wert von/proc/<pid>/status
ist in kB.In Ihrem Fall, 46703 * 4 kB (Seitengröße) = 186812 kB.
InformationsquelleAutor Takashi Oguma
Mann Seite
proc
Mitgliedstaaten nach der instatm
KontextAber was es nicht Staat ist, dass
size
undresident
sind ausgedrückt in der Anzahl der Seiten.So
46703
ist resident set-Größe, ausgedrückt in der Anzahl der Seiten und224621
ist die Größe des Virtuellen Speichers, ausgedrückt in Anzahl der Seiten.Nun bekommen Sie im KB multiplizieren Sie Sie mit der Größe der Seite. Erhalten Sie die Seitengröße mit
getconf PAGESIZE
Befehl oder inC/C++
- Programm durch Aufrufsysconf(_SC_PAGE_SIZE)
(definiert in unistd.h). Dies wird Ihnen die Größe der Seite in bytes. Teilen Sie es mit 1024 um die Größe der Seite in KB.Beispiel :
4096/1024 = 4 KB
InformationsquelleAutor Dr. Xperience