2014-03-13 12 views
36

Ich las eine Erklärung über VSS/RSS/PSS/USS:Ist diese Erklärung über VSS/RSS/PSS/USS genau?


Das Ziel dieses Beitrags ist es, Informationen zu liefern, die bei der Interpretation Speicher Berichte von verschiedenen Werkzeugen so die wahren Speichernutzung für Linux Prozesse unterstützen und Das System kann bestimmt werden.

Android hat ein Tool namens procrank (/ system/xbin/procrank), das die Speicherauslastung von Linux-Prozessen in der Reihenfolge von der höchsten zur niedrigsten Verwendung auflistet. Die pro Prozess angegebenen Größen sind VSS, RSS, PSS und USS.

Aus Gründen der Einfachheit in dieser Beschreibung wird Speicher in Seiten und nicht als Bytes ausgedrückt. Linux-Systeme wie unseres verwalten Speicher in 4096-Byte-Seiten auf der untersten Ebene.

VSS (als VSZ von ps gemeldet) ist der gesamte zugängliche Adressraum eines Prozesses. Diese Größe umfasst auch Speicher, der nicht im RAM resident ist, wie Mallocs, die zugewiesen, aber nicht beschrieben wurden. VSS ist für die Bestimmung der tatsächlichen Speichernutzung eines Prozesses sehr wenig nützlich.

RSS ist der Gesamtspeicher, der tatsächlich für einen Prozess im RAM gehalten wird. RSS kann irreführend sein, da es die Summe aller vom Prozess verwendeten gemeinsam genutzten Bibliotheken meldet, obwohl eine gemeinsam genutzte Bibliothek nur einmal in den Speicher geladen wird, unabhängig davon, wie viele Prozesse sie verwenden. RSS ist keine genaue Darstellung der Speichernutzung für einen einzelnen Prozess.

PSS unterscheidet sich von RSS darin, dass es die proportionale Größe seiner gemeinsamen Bibliotheken meldet, dh wenn drei Prozesse alle eine gemeinsam genutzte Bibliothek mit 30 Seiten verwenden, trägt diese Bibliothek nur 10 Seiten zu der PSS bei, die für jede von ihnen gemeldet wird die drei Prozesse. PSS ist eine sehr nützliche Nummer, denn wenn die PSS für alle Prozesse im System zusammengeführt wird, ist das eine gute Repräsentation für die gesamte Speicherbelegung im System. Wenn ein Prozess beendet wird, werden die gemeinsam genutzten Bibliotheken, die zu seiner PSS beigetragen haben, proportional auf die PSS-Summen für die verbleibenden Prozesse verteilt, die diese Bibliothek weiterhin verwenden. Auf diese Weise kann PSS leicht irreführend sein, denn wenn ein Prozess beendet wird, repräsentiert PSS nicht genau den Speicher, der an das Gesamtsystem zurückgegeben wird.

USS ist der gesamte private Speicher für einen Prozess, d. H. Der Speicher, der für diesen Prozess vollständig eindeutig ist. USS ist eine äußerst nützliche Zahl, da sie die wahren zusätzlichen Kosten für die Ausführung eines bestimmten Prozesses angibt. Wenn ein Prozess beendet wird, ist die USS der Gesamtspeicher, der tatsächlich an das System zurückgegeben wird. USS ist die beste Nummer, die beobachtet werden muss, wenn in einem Prozess zunächst verdächtige Speicherlecks auftreten.

Für Systeme, die Python verfügbar haben, gibt es auch ein nettes Werkzeug namens smem, das Speicherstatistiken einschließlich all dieser Kategorien meldet.

# procrank 
procrank 
PID  Vss  Rss   Pss   Uss cmdline 
481 31536K 30936K 14337K 9956K system_server 
475 26128K 26128K 10046K 5992K zygote 
526 25108K 25108K 9225K 5384K android.process.acore 
523 22388K 22388K 7166K 3432K com.android.phone 
574 21632K 21632K 6109K 2468K com.android.settings 
521 20816K 20816K 6050K 2776K jp.co.omronsoft.openwnn 
474 3304K 3304K 1097K  624K /system/bin/mediaserver 
37  304K  304K  289K  288K /sbin/adbd 
29  720K  720K  261K  212K /system/bin/rild 
601  412K  412K  225K  216K procrank 
    1  204K  204K  185K  184K /init 
35  388K  388K  182K  172K /system/bin/qemud 
284  384K  384K  160K  148K top 
27  376K  376K  148K  136K /system/bin/vold 
261  332K  332K  123K  112K logcat 
33  396K  396K  105K  80K /system/bin/keystore 
32  316K  316K  100K  88K /system/bin/installd 
269  328K  328K  95K  72K /system/bin/sh 
26  280K  280K  93K  84K /system/bin/servicemanager 
45  304K  304K  91K  80K /system/bin/qemu-props 
34  324K  324K  91K  68K /system/bin/sh 
260  324K  324K  91K  68K /system/bin/sh 
600  324K  324K  91K  68K /system/bin/sh 
25  308K  308K  88K  68K /system/bin/sh 
28  232K  232K  67K  60K /system/bin/debuggerd 
# 

Aber ich kann nicht das Original dieses Artikels finden, und ich möchte wissen, ob diese Erklärung richtig ist.

+0

Ich bin gespannt ... wo du hast Kopieren/Einfügen dieser Info aus? – Skeets

Antwort

17

Das ist richtig und auch Linien mit der Beschreibung hier klingt: http://elinux.org/Android_Memory_Usage

Von der Seite ...

  • Vss = virtuelle Set Größe
  • Rss = Resident Set Size
  • Pss = proportional Satzgröße
  • Uss = einzigartige Set Größe