Login
Newsletter
Werbung

Di, 7. Februar 2006, 12:09

Linux-Speichermanagement verstehen

Nach Ansicht von Autor Percy Blakeney scheinen viele GNOME- und KDE-Programme in Sachen Speicherverbrauch aufgeblähter als sie tatsächlich sind.
Von ThomasS

In einem Blog setzt sich der Autor mit dem häufig gehörten Vorwurf auseinander, dass GNOME- und KDE-Programme zunehmend zu "Bloatware", also ineffizienten Speicherfressern werden. Schuld an diesem Vorwurf ist für Blakeney unter anderem die irreführende Ausgabe von Tools wie ps, die den Benutzern ein verzerrtes Bild vom tatsächlichen Speicherverbrauch liefern. Statt sich wie gewöhnlich auf die Angaben von ps zu verlassen, hat der Autor den realen Speicherverbrauch von KEdit mit dem Tool pmap getestet und kommt zu dem Ergebnis, dass ps eigentlich keine verlässlichen Daten zur Abschätzung des tatsächlichen Speicherverbrauchs eines Programms ausgibt. Der Grund dafür ist, dass ps nicht den tatsächlichen Speicherverbrauch einer Applikation misst, sondern nur den Speicherverbrauch anzeigt, den sie als einzig laufendes Programm in Anspruch nehmen würde. Dies hängt nach seiner Ansicht unmittelbar mit den Bibiliotheken zusammen, die im Speicher gehalten und von vielen Programmen gleichzeitig genutzt werden können. Auf diese Weise ist es möglich, dass z.B. KEdit mit jedem anderen Programm unter KDE Daten austauschen kann.

Am deutlichsten wird dies am Beispiel der C-Bibliothek, libc, die eine Kopie im Speicher hält und verschiedenen GNU-Programmen einen Tausch von Daten ermöglicht. Dieser Trick des Betriebssystems wird allerdings von Tools zum Messen des Speicherverbrauchs wie ps überhaupt nicht wahrgenommen. Sie melden einfach nur, wieviel Speicher, eingerechnet den Verbrauch durch geteilte Bibliotheken, von einem Programm genutzt wird, ohne allerdings in Betracht zu ziehen, welche anderen Programme ebenfalls von der selben Bibliothek Gebrauch machen.

Ein weiteres Problem ist für Blakeney auch, ob man den Ressourcenverbrauch geteilter Bibliotheken, auch wenn sie nur von einem Programm in Anspruch genommen werden, zu seinem realen Speicherverbrauch hinzu oder getrennt zu zählen ist. Mit pmap hat der Autor ein Tool gefunden, das ihm verlässlichere Daten liefert. Die Ausgabe von pmap zum realen Speicherverbrauch von KEdit zeigt, dass die geteilten Bibliotheken mit jeweils zwei Instanzen, einmal für das Code- und das zweite Mal für das Datensegment, aufgelistet werden. Einzig die letzte Zeile der Ausgabe von pmap, 'writeable/private: xxxkb' gibt Aufschluss über den realen Speicherverbrauch von KEdit. Während also ps einen Speicherverbrauch zwischen 14-15 MB für KEdit registriert, reduziert sich sein tatsächlicher Verbrauch auf 2 MB. Dies sind die inkrementellen Kosten in Sachen Speicherverbrauch, also der in Anspruch genommene Speicher, der nur dem Prozess KEdit zurechenbar ist.

Das Fazit seiner Betrachtung ist, dass das Messen des realen Speicherverbrauchs einzelner Prozesse unter Linux eine komplizierte Angelegenheit ist. Unmittelbar ergibt sich jedoch aus den Ergebnissen seiner kleinen Untersuchung, dass etwa Nutzer von GNOME-Programmen unter KDE (oder umgekehrt) viel Speicher verschwenden. Jedes GNOME- oder KDE-Programm in der jeweils anderen Desktopumgebung gestartet, muss auch die spezifischen geteilten Bibliotheken laden, um überhaupt lauffähig zu sein. Daher empfiehlt er allen Linux-Nutzern, soweit wie möglich innerhalb einer der beiden Desktops nur die jeweils spezifischen Programme zu nutzen, um der ineffizienten Nutzung von Speicher entgegenzutreten.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung