2008-08-04 5 views
22

Wie lautet die korrekte Methode zum Abrufen der Prozessgröße unter Solaris, HP-UX und AIX? Sollten wir top oder ps -o vsz oder etwas anderes verwenden?Prozessgröße unter UNIX

Antwort

17

Die genauen Definitionen von vsize, rss, rprvt, rshrd und anderen obskuren aussehenden Abkürzungen von OS OS variieren. Die Manpages für die Befehle top und ps werden eine Art Beschreibung haben, aber alle diese Beschreibungen sind stark vereinfacht (oder basieren auf lang erloschenen Kernelimplementierungen).
"Prozessgröße" als ein Konzept ist im allgemeinen Fall teuflisch schwer festzumachen. Die Antworten in bestimmten Fällen hängen stark von der tatsächlichen Speicherverwaltungsimplementierung im Betriebssystem ab und sind selten so zufriedenstellend wie das saubere "Prozessgrößen" -Konzept, das in den Köpfen der meisten Benutzer (und der meisten Entwickler) existiert.

Zum Beispiel kann keine dieser Zahlen (noch, wahrscheinlich, irgendeine Kombination davon) verwendet werden, um Ihnen genau zu sagen, wie viele solcher Prozesse gleichzeitig in einer bestimmten Menge an freiem Speicher ausgeführt werden können. Aber am besten ist es, von diesem Ende an zu kommen: Warum willst du diese Nummer, und wofür benutzt du sie? Angesichts dieser Informationen werden Sie mehr nützliche Antworten erhalten.

3

Ja, Sie haben Recht, an der VSZ zu sperren.

ps u gibt Ihnen die VSZ und RSS, die die Größe des virtuellen Arbeitsspeichers und resident festgelegt sind. Der RSS gibt an, wie viel physischer Speicher dem Prozess zugewiesen wurde, und der VSZ ist die Größe des virtuellen Speichers des Prozesses. Wenn mehrere Kopien eines Programms ausgeführt werden, wird viel Speicherplatz im VSZ zwischen diesen Prozessen aufgeteilt.

+3

Die VSZ Zahl nutzlos ist, wenn, was Sie interessiert sind in den Speicherverbrauch ist. VSZ misst, wie viel des * virtuellen * Arbeitsspeichers des Prozesses durch den Prozess als Arbeitsspeicher markiert wurde, der vom Betriebssystem zugeordnet werden sollte, wenn der Prozess es zufällig berührt. Aber es hat nichts damit zu tun, ob diese Erinnerung tatsächlich berührt und benutzt wurde. VSZ ist ein internes Detail darüber, wie ein Prozess die Speicherzuweisung durchführt - wie groß ein Stück unbenutzten Speicher gleichzeitig ist. Sehen Sie in RSS nach, wie viele Speicherseiten tatsächlich verwendet wurden. –

5

Unter Solaris können Sie detaillierte Informationen zur Speicherbelegung eines Prozesses mit dem Befehl pmap abrufen. Insbesondere zeigt pmap -x <pid>, wie viel Speicher eines Prozesses gemeinsam genutzt wird und wie viel von diesem Prozess verwendet wird. Dies ist nützlich, um die "marginale" Speichernutzung eines Prozesses zu berechnen - mit dieser Technik können Sie vermeiden, dass geteilte Bibliotheken doppelt gezählt werden.

2

summierte ich so die Resident Set Größe für alle Prozesse bis (als root):

ps ax -o rss | awk '{rss += $1;} END { print rss}'