View previous topic :: View next topic |
Author |
Message |
Vortex375 Veteran
![Veteran Veteran](/images/ranks/rank_rect_5_vet.gif)
![](images/avatars/8411107174242ae2405552.jpg)
Joined: 03 Mar 2005 Posts: 1739 Location: Deutschland
|
Posted: Fri Aug 08, 2008 7:30 pm Post subject: Prozess-Speichernutzung (RES/SHR) |
|
|
Hallo zusammen,
zeigt man sich die Speichernutzung eines Prozesses zum Beispiel mit top an, dann gibt es da mehrere Werte.
Unklar ist mir hier die Bedeutung der Werte RES (Resources) und SHR (Shared) zueinander. Start ich beispielsweise ein Programm, dass die Grafik-Bibliothek Qt benutzt und danach ein weiteres Qt-Programm, dann nehme ich mal an, dass die Bibliothek sich nur einmal im Speicher befindet.
Die typische Speichernutzung eines solchen Programms sieht dann etwa so aus:
Bedeutet das nun, dass der Prozess effektiv nur 4MB Speicher verbraucht, weil die restlichen 19MB mit anderen (Qt-) Anwendungen geteilt werden können, oder bedeutet das, dass der Prozess zusätzlich zu den 19MB Shared-Memory noch 25MB "eigene" Daten im Speicher hat?
Oder ist das etwa ganz anders?
Vielen Dank schonmal. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Hilefoks l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 29 Jan 2003 Posts: 849 Location: Emden / Deutschland
|
Posted: Fri Aug 08, 2008 8:38 pm Post subject: |
|
|
Von http://wiki.debianforum.de/LinuxSpeichermanagement
Quote: | Die Unterschiede zwischen VIRT, RES und SHR in top
VIRT steht für die virtuelle Größe eines Prozesses und ist die Summe seines aktuell belegten Speichers, von Speicher, den der Prozess in seinen Speicherbereich eingeblendet hat (beispielsweise Grafikkartenspeicher für den X-Server), von Dateien auf der Festplatte, die der Prozess eingeblendet hat (besonders "Shared Libraries") und von Speicher der mit anderen Prozessen geteilt wird. VIRT steht somit für die Speichermenge, auf die ein Programm momentan Zugriff hat.
RES steht für "Resident Size" und damit für genau die Menge an physichem Speicher, die momentan von einem Prozess belegt wird. Hieraus ergibt sich auch die im Bezug auf den verfügbaren Speicher angegebene prozentuale Speichernutzung in der %MEM-Spalte. Dieser Wert wird praktisch immer niedriger sein als der virtuelle Speicherverbrauch eines Prozesses (VIRT), da die meisten Programme zumindest von der C-Library abhängen.
SHR schließlich besagt, wie viel des virtuell belegten Speichers (VIRT) "shareable" ist, also mit anderen Prozessen geteilt werden kann. Benutzt ein Prozess beispielsweise eine bestimmte Library, so heißt dies nicht zwangsläufig, dass sich auch die gesamte Bibliothek tatsächlich im Speicher befindet. Verwendet der Prozess nur einige Funktionen der Bibliothek, so wird zwar die gesamte Bibliothek als Datei auf der Festplatte eingeblendet und sowohl unter VIRT, als auch unter SHR mitgerechnet, aber nur die Teile der Library, aus denen auch Funktionen benutzt werden, befinden sich wirklich im Speicher und zählen somit unter RES.
|
Mit diesen Werten ist es aber nicht wirklich möglich den realen Speicherverbrauch einer beliebigen Anwendung zu messen. Gerne vergessen wird z.B. das einige Bibliotheken und auch viele Anwendungen (besonders solche die in Programmiersprachen mit automatischer Speicherbereinigung geschrieben sind) mehr Speicher allokieren als sie tatsächlich verwenden. Da sie diesen Speicher aber auch an das System zurückgeben, sollte der Speicher knapp werden, sollte dieser Speicher also nicht mitgezählt werden.
MfG,
Hilefoks _________________ - Der Computer rechnet vor allem damit, dass der Mensch denkt. - |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|