Optimierung des Linux -Speicherverbrauchs

Optimierung des Linux -Speicherverbrauchs
In Teil 1 dieser Serie haben wir uns den Swap -Raum genauer angesehen und sich mit Tools und Befehlen befasste, um den Speicher zu verwalten. Jetzt werden wir verschiedene Parameter und Strategien zur Optimierung des Gedächtnisses und seiner Verwendung im Allgemeinen diskutieren. Dies deckt die Menge an Speicher, die Beschleunigung des Zugangs und die interne Nutzungsstrategie ab.

Speichermenge

Wie bereits in Teil eins diskutiert, wird das gesamte Gedächtnis als virtuelles Gedächtnis bezeichnet und besteht sowohl aus dem physischen Gedächtnis als auch aus dem Austauschraum. Die Verfügbarkeit des physischen Speichers hängt von der Hardware ab, die in die Maschine integriert ist, sowie davon, wie viel Speicher der Prozessor tatsächlich ansprechen kann. Als Beispiel haben 32 -Bit -Betriebssysteme nur eine Grenze von 4G Speicher (2^32bit), während Betriebssysteme basierend auf 64 -Bit -Basis bis zu 16 EB (2^64bit) zulassen.

Um genau zu sein, ist die Einschränkung das Motherboard mit dem Prozessor selbst, den Speichermodulen, die von diesem Motherboard unterstützt werden, und die spezifischen Speichermodule, die in die Speicherplätze auf dem Motherboard angeschlossen sind. Eine Möglichkeit, den verfügbaren Speicher des Systems zu maximieren. Der zweite Weg besteht darin, den Swap -Speicher zu verwenden, wie bereits in Teil eins erläutert.

Zugriff auf den Speicher

Als nächstes wird eine Verbesserung der Zugangsgeschwindigkeit des Speichers berücksichtigt. Zunächst wird die physische Grenze durch das Speichermodul selbst angegeben. Sie können nicht unter die physischen Grenzen der Hardware gehen. Um den zweiten Platz kann ein Ramdisk und bei dritter Stelle die Verwendung von ZRAM den Speicherzugriff beschleunigen. Wir werden diese beiden Technologien detaillierter diskutieren.

Erstellen eines Ramdisks

Ein RAMDISK ist ein Speicherblock, den das Betriebssystem wie ein physisches Gerät verarbeitet. Dieses temporäre Gerät existiert, sobald das System startet und die RamDisk ermöglicht, und das System deaktiviert entweder die Ramdisk oder schalt. Denken Sie daran, dass die Daten, die Sie auf einem solchen Ramdisk speichern.

Sie können über ein TMPFS -Dateisystem und über das RAMFS -Dateisystem ein dynamisches RAMDisk erstellen. Beide Technologien unterscheiden sich signifikant voneinander. Erstens bedeutet dynamisch, dass der Speicher für die RamDisk basierend auf seiner Verwendung zugewiesen wird (wahr für beide Methoden). Solange Sie keine Daten darauf speichern, beträgt die Größe des Ramdisk 0.

Das Erstellen einer dynamischen Ramdisk über TMPFS ist wie folgt:

# Mkdir /Media /Ramdisk
# Mount -t tmpfs keine /media /ramdisk

Das Erstellen eines dynamischen RAMDisk über RAMFS ist wie folgt:

# Mkdir /Media /Ramdisk
# Mount -t RAMFS RAMFS /Media /Ramdisk

Zweitens ist die Verwendung von TMPFs und sofern die Größe des RamDisks nicht explizit angegeben, auf 50% des physischen Speichers begrenzt. Im Gegensatz dazu hat ein RAMDisk, der auf RAMFS basiert.

Das Erstellen einer dynamischen Ramdisk über TMPFs mit einer relativen Größe von 20% des physischen Speichers ist wie folgt:

# Mkdir /Media /Ramdisk
# montieren -t tmpfs -o size = 20% keine /medien /ramdisk

Das Erstellen eines dynamischen Ramdisks über TMPFs mit einer festen Größe von 200 m physischem Speicher ist wie folgt:

# Mkdir /Media /Ramdisk
# montieren -t tmpfs -o size = 200m keine /media /ramdisk

Drittens können beide Methoden auf andere Weise tauschen. Wenn das System die Speichergrenze eines RamDisk basierend auf TMPFs erreicht, werden Daten aus dem RamDisk getauscht. Dies vereitelt die Idee des schnellen Zugangs. Andererseits priorisiert das Betriebssystem sowohl den Inhalt als auch die angeforderten Speicherpages eines RAMDisk basierend auf RAMFs, behält dies im Speicher und wechselt verbleibende Speicherseiten auf die Festplatte.

In den obigen Beispielen haben wir verwendet /Media/Ramdisk als Mountspunkt. In Bezug /tmp. Dieses Verzeichnis speichert nur temporäre Daten, die nicht bestehen bleiben. Erstellen einer dauerhaften RAMDisk, die das /TMP -Dateisystem speichert /etc/fstab wie folgt (basierend auf RAMFS):

RAMFS /TMP RAMFS Standards 0 0

Wenn Sie Ihr Linux -System das nächste Mal starten, wird der RamDisk automatisch aktiviert.

Mit ZRAM

ZRAM bezeichnet virtuell in RAM komprimiert und erstellt ein komprimiertes Blockgerät direkt im physischen Speicher. ZRAM tritt in Aktion (Verwendung), sobald auf dem System keine physischen Speicherseiten mehr verfügbar sind. Dann versucht der Linux -Kernel, Seiten als komprimierte Daten auf dem ZRAM -Gerät zu speichern.

Derzeit gibt es kein Paket für Debian GNU/Linux, aber Ubuntu. Es heißt Zram-Config. Installieren Sie das Paket und richten Sie ein ZRAM -Gerät ein, indem Sie den gemäß Systemd Service wie folgt starten:

# SystemCtrl Start Zram-Config

Wie durch die Ausgabe von gegeben Swapon -S, Das Gerät ist als zusätzliche Tauschpartition aktiv. Automatisch wird eine Größe von 50% des Speichers für ZRAM zugewiesen (siehe Abbildung 1). Derzeit gibt es keine Möglichkeit, einen anderen Wert für die Zuordnung von ZRAM anzugeben.

Um weitere Details zur komprimierten Swap -Partition zu sehen, verwenden Sie den Befehl Zramctl. Abbildung 2 zeigt den Gerätenamen, den Komprimierungsalgorithmus (LZO), die Größe der Swap -Partition, die Größe der Daten auf der Festplatte und deren Druckgröße sowie die Anzahl der Komprimierungsströme (Standardwert: 1).

Nutzungsstrategie

Als nächstes konzentrieren wir uns auf die Strategie der Gedächtnisnutzung. Es gibt einige Parameter, um das Verhalten der Speicherverwendung und -verteilung zu beeinflussen. Dies schließt die Größe der Speicherseiten ein - auf 64 -Bit -Systemen ist es 4m. Als nächstes spielt der Parameter -Swappin eine Rolle. Wie bereits in Teil eins erläutert, steuert dieser Parameter das relative Gewicht, das dem Rennzeitspeicher ausgetauscht wird, anstatt Speicherseiten aus dem Systemseiten -Cache fallen zu lassen. Außerdem sollten wir sowohl das Caching- als auch die Speicherseiteausrichtung nicht vergessen.

Verwenden Sie Programme, die weniger Speicher benötigen

Last but not least hängt die Verwendung des Gedächtnisses von den Programmen selbst ab. Die meisten von ihnen sind mit der Standard -C -Bibliothek (Standard LIBC) verknüpft. Als Entwickler erwägen Sie, Ihren Binärcode zu minimieren, um eine Alternative und stattdessen eine viel kleinere C -Bibliothek zu verwenden. Zum Beispiel gibt es DietLibc [1], UCLIBC [2] und Musl Lib C [3]. Die Website des Entwicklers von Musl Lib C enthält einen umfassenden Vergleich [4] in Bezug auf diese Bibliotheken in Bezug.

Als Benutzer müssen Sie Ihre Programme möglicherweise nicht kompilieren. Suchen Sie nach kleineren Programmen und verschiedenen Frameworks, die weniger Ressourcen erfordern. Als Beispiel können Sie die XFCE -Desktop -Umgebung anstelle von KDE oder GNOME verwenden.

Abschluss

Es gibt einige Optionen, um die Verwendung des Gedächtnisses zum Besseren zu ändern. Dies reicht von Swap bis Komprimierung basierend auf ZRAM sowie das Einrichten eines Ramdisks oder die Auswahl eines anderen Frameworks.

Links und Referenzen

  • [1] Dietlibc, https: // www.FEFE.DE/dietlibc/
  • [2] UCLIBC, https: // uclibc.org/
  • [3] Musl Lib C, http: // www.Musl-Libc.org/
  • [4] Vergleich von C -Bibliotheken, http: // www.Etalabs.net/compare_libcs.html

Linux Memory Management -Serie

  • Teil 1: Linux Kernel Memory Management: Swap Space
  • Teil 2: Befehle zum Verwalten von Linux -Speicher
  • Teil 3: Optimierung der Linux -Speicherverwendung

Anerkennung

Der Autor bedankt sich bei Axel Beckert und Gerold Rupprecht für seine Unterstützung, während er diesen Artikel vorbereitet.