Die aktuellen Werte des Linux-Kernels und seiner Komponenten werden über eine spezielle Schnittstelle zugänglich gemacht – das Verzeichnis /proc [5]. Dies ist ein virtuelles Dateisystem, in dem die einzelnen Dateien in Echtzeit mit Werten gefüllt werden. Die Werte stellen den aktuellen Zustand dar, in dem sich der Linux-Kernel befindet. Auf die einzelnen Dateien im Verzeichnis /proc können Sie mit dem Befehl cat wie folgt zugreifen:
$ cat /proc/sys/net/core/somaxconn128
$
Einer dieser Kernel-Parameter heißt vm.Austausch. Es „steuert das relative Gewicht, das dem Auslagern des Laufzeitspeichers beigemessen wird, im Gegensatz zum Löschen von Speicherseiten aus dem Systemseiten-Cache“ [6]. Beginnend mit Linux-Kernel-Releases 2.6 dieser Wert wurde eingeführt. Es wird in der Datei /proc/sys/vm/swappiness gespeichert .
Verwenden von Swap
Die Verwendung von Swap [6] war in den frühen 1990er Jahren ein wesentlicher Bestandteil der Verwendung kleinerer UNIX-Rechner. Es ist immer noch nützlich (wie ein Ersatzreifen in Ihrem Fahrzeug zu haben), wenn unangenehme Speicherlecks Ihre Arbeit stören. Die Maschine wird langsamer, kann aber in den meisten Fällen immer noch verwendet werden, um die zugewiesene Aufgabe zu erledigen. Entwickler freier Software haben große Schritte unternommen, um Programmfehler zu reduzieren und zu eliminieren. Bevor Sie die Kernelparameter ändern, sollten Sie daher zuerst ein Update auf eine neuere Version Ihrer Anwendung und zugehöriger Bibliotheken in Betracht ziehen.
Wenn Sie zahlreiche Aufgaben ausführen, werden die inaktiven Aufgaben auf die Festplatte ausgelagert, um den Speicher mit Ihren aktiven Aufgaben besser zu nutzen. Videobearbeitung und andere speicherintensive Anwendungen haben oft die empfohlene Menge an Arbeitsspeicher und Festplattenspeicher. Wenn Sie einen älteren Computer haben, für den kein Speicherupgrade möglich ist, kann die Bereitstellung von mehr Swap eine gute vorübergehende Lösung für Sie sein (siehe [6], um mehr darüber zu erfahren).
Das Auslagern kann auf einer separaten Partition oder in einer Auslagerungsdatei erfolgen. Die Partition ist schneller und wird von vielen Datenbankanwendungen bevorzugt. Der Dateiansatz ist flexibler (siehe das Paket dphys-swapfile in Debian GNU/Linux [7]). Wenn mehr als ein physisches Gerät zum Austauschen vorhanden ist, kann der Linux-Kernel das Gerät auswählen, das am schnellsten verfügbar ist (geringere Latenz).
vm.Austausch
Der Standardwert von vm.swappiness ist 60 und repräsentiert den Prozentsatz des freien Speichers vor der Aktivierung von swap. Je niedriger der Wert, desto weniger Swapping wird verwendet und desto mehr Speicherseiten werden im physischen Speicher gehalten.
Der Wert von 60 ist ein Kompromiss, der für moderne Desktop-Systeme gut funktioniert. Ein kleinerer Wert ist stattdessen eine empfohlene Option für ein Serversystem. Wie das Red Hat Performance Tuning-Handbuch hervorhebt [8], wird ein kleinerer Swappiness-Wert für Datenbank-Workloads empfohlen. Für Oracle-Datenbanken empfiehlt Red Hat beispielsweise einen Swappiness-Wert von 10. Im Gegensatz dazu wird für MariaDB-Datenbanken empfohlen, swappiness auf einen Wert von 1 zu setzen [9].
Die Änderung des Wertes beeinflusst direkt die Leistung des Linux-Systems. Diese Werte sind definiert:
* 0: Swap ist deaktiviert
* 1: minimaler Austausch, ohne ihn vollständig zu deaktivieren
* 10: empfohlener Wert, um die Leistung zu verbessern, wenn genügend Speicher in einem System vorhanden ist
* 100: aggressives Tauschen
Wie oben gezeigt hilft der cat-Befehl beim Lesen des Wertes. Außerdem liefert der sysctl-Befehl das gleiche Ergebnis:
# sysctl-VM.Austauschvm.Wechselhaftigkeit = 60
#
Denken Sie daran, dass der Befehl sysctl nur für Administratoren verfügbar ist. Um den Wert vorübergehend festzulegen, legen Sie den Wert im /proc-Dateisystem wie folgt fest:
# echo 10 > /proc/sys/vm/swappinessAlternativ können Sie den sysctl-Befehl wie folgt verwenden:
# sysctl -w VM.Wechselhaftigkeit=10Um den Wert dauerhaft zu setzen, öffnen Sie die Datei /etc/sysctl.conf als Administrator und fügen Sie die folgende Zeile hinzu:
vm.Wechselhaftigkeit = 10Fazit
Immer mehr Linux-Benutzer verwenden virtuelle Maschinen. Jeder hat seinen eigenen Kernel zusätzlich zum Hypervisor, der tatsächlich die Hardware steuert. Für virtuelle Maschinen wurden virtuelle Festplatten erstellt, sodass das Ändern der Einstellung innerhalb der virtuellen Maschine zu unbestimmten Ergebnissen führt. Experimentieren Sie zuerst damit, die Werte des Hypervisor-Kernels zu ändern, da er tatsächlich die Hardware in Ihrem Computer steuert.
Bei älteren Maschinen, die nicht mehr aufgerüstet werden können (die bereits über den maximal unterstützten Speicher verfügen), können Sie erwägen, eine kleine Solid State Disk in die Maschine einzubauen, um sie als zusätzliches Auslagerungsgerät zu verwenden. Dies wird offensichtlich zu einem Verbrauchsmaterial, da Speicherzellen aufgrund vieler Schreibvorgänge ausfallen, kann jedoch die Lebensdauer einer Maschine für sehr geringe Kosten um ein Jahr oder mehr verlängern. Die niedrigere Latenz und die schnellen Lesevorgänge bieten eine viel bessere Leistung als das Auslagern auf eine normale Festplatte, was zu Zwischenergebnissen für den RAM führt. Dies sollte es Ihnen ermöglichen, etwas niedrigere vm zu verwenden.Austauschbarkeitswerte für optimale Leistung. Sie müssen experimentieren. SSD-Geräte ändern sich schnell.
Wenn Sie mehr als ein Swap-Gerät haben, sollten Sie es in Erwägung ziehen, es zu einem RAID-Gerät zu machen, um Daten über die verfügbaren Geräte zu verteilen.
Sie können Änderungen an der Swappiness vornehmen, ohne den Computer neu starten zu müssen, ein großer Vorteil gegenüber anderen Betriebssystemen.
Versuchen Sie, nur die Dienstleistungen aufzunehmen, die Sie für Ihr Unternehmen benötigen. Dies reduziert den Speicherbedarf, verbessert die Leistung und hält alles einfacher.
Eine letzte Anmerkung: Sie werden Ihre Swap-Geräte belastet. Sie werden die Temperaturen von ihnen überwachen wollen. Ein überhitztes System senkt seine CPU-Frequenz und verlangsamt sich.
Danksagung
Besonderer Dank gilt Gerold Rupprecht und Zoleka Hatitongwe für ihre kritischen Anmerkungen und Kommentare bei der Vorbereitung dieses Artikels.
Links und Referenzen
* [1] Linux-Kernel-Tutorial für Anfänger, https://linuxhint.com/linux-kernel-tutorial-anfänger/
* [2] Derek Molloy: Schreiben eines Linux-Kernel-Moduls - Teil 1: Einführung, http://derekmolloy.ie/writing-a-linux-kernel-module-part-1-introduction/
* [3] Derek Molloy: Schreiben eines Linux-Kernel-Moduls - Teil 2: Ein Zeichengerät, http://derekmolloy.ie/schreiben-ein-linux-kernel-modul-teil-2-ein-zeichen-gerät/
* [4] Derek Molloy: Schreiben eines Linux-Kernel-Moduls - Teil 3: Schaltflächen und LEDs, http://derekmolloy.dh/kernel-gpio-programming-buttons-and-leds/
* [5] Frank Hofmann: Befehle zur Verwaltung des Linux-Speichers, https://linuxhint.com/commands-to-manage-linux-memory/
* [6] Frank Hofmann: Linux-Kernel-Speicherverwaltung: Swap Space, https://linuxhint.com/linux-memory-management-swap-space/
* [7] dphys-swapfile-Paket für Debian GNU/Linux, https://packages.debian.org/stretch/dphys-Swapfile
* [8] Red Hat Performance Tuning Guide, https://access.roter Hut.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-tunables
* [9] MariaDB konfigurieren, https://mariadb.com/kb/en/library/configuring-swappiness/