• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Memory-Bedarf bei X-Anwendungen

Hawelka

Newbie
Hallo zusammen!

Mich erschüttert immer wieder, wie viel Memory die einzelnen KDE/Gnome-Anwendungen benötigen.

Einige Beispiele:

"kontact" -> run 50 MB
"Firefox" (ohne eine offene Seite) -> rund 36 MB
"Thunderbird" -> rund 37 MB
"quanta" -> rund 20 MB

Selbst "kamix" nimmt sich rund 6 MB.

Die Werte stammen aus der Spalte "VmRss" der Systemüberwachtung.
Addiere ich diese (so ungefähr) auf, deckt sich das auch mit dem Wert "Mem used" aus dem Programm "top" .
 
A

Anonymous

Gast
wenn das so währe, dann würde aber mein System schön zusammenbrechen. Schau dir mal den Befehl pmap an. Damit kannst du zu jedem Prozess die Speicherbereiche und Hinweise auf den jeweiligen Inhalt herauslesen. Du wirst feststellen, dass ein sehr großer Anteil auf Libs fällt. Wenn du jetzt als root mit
Code:
for i in `ps -ef | cut -c9-15` ; do pmap $i ; done
das von jedem Prozess des Systems machst und das Ergebniss in eine Datei umleitest, dann hast du einen systemweiten Überblick. Jetzt kannst du dich daran machen das ganze mit sort nach dem Speicherbereich zu sortieren, und da wirst du feststellen, dass es jede Menge Speicherbereiche gibt, die mehrfach benannt sind und in denen es immer wieder das selbe Lib und die selbe größe gibt. Inhalte von Libs werden also nur einmal in den Speicher geladen und können dann von vielen Prozessen benutzt werden. Bei der Berechnung der Verwendung des Speichers wird das allerdings nicht berücksichtigt, dass es solche mehrfach benutzte Speicherbereiche gibt. Die einzelnen Prozesse müssen immer alle Speicherbereiche mitführen die sie benutzen, das ganze funktioniert dann etwa so die Hardlinks bei Dateien (selbe INODE), erst der letzte gibt dann den Speicher wieder entgültig frei.

robi
 
OP
H

Hawelka

Newbie
Hallo robi!

Der Befehl "pmap" zeigt aber "vmSize" an. Also nicht nur den Anteil des physischen Memorys (VmRss), sondern die Gesamtgröße.

Dennoch war meine Rechnung falsch und deine Aussage richtig.
Ich dachte "VmRss" würde nur den "privaten" Memory-Anteil darstellen (ohne Shared-Memory).

Ich habe festgestellt, daß man unter /proc/$PID/status, den tatsächlichen privaten Memory-Anteil gut ermitteln kann.
Es müsste die Summe der Werte "VmData" "VmStk" und "VmExe" sein.

Der Status zu "kontact" sieht bie mir so aus:

Code:
VmSize:    80620 kB
VmLck:         0 kB
VmRSS:     30892 kB
VmData:    28236 kB
VmStk:        80 kB
VmExe:       136 kB
VmLib:     45672 kB
 
Oben