Was bei der Überprüfung des Speicherverbrauchs unter Linux zu beachten ist
Nur wenn Sie die Unterschiede zwischen Swap, inaktivem und aktivem Arbeitsspeicher unter Linux kennen, können für mehr Server-Performance optimieren.
Linux-Server stellen für Prozesse echten und virtuellen Arbeitsspeicher zur Verfügung. Darüber hinaus wird Arbeitsspeicher mithilfe von Auslagerung (Swap) verwaltet. Das Verständnis für die Speichertypen unter Linux und wie Prozesse den Arbeitsspeicher teilen, hilft Ihnen bei der Optimierung der Speichernutzung und der Geschwindigkeit.
Beim Start von Programm-Prozessen weist der Linux-Kernel diesen Arbeitsspeicher zu. Das summiert sich zu virtuellem Arbeitsspeicher auf. Virtueller Arbeitsspeicher ist bei Linux nicht limitiert. Prozesse sind beim Start immer in der Lage, Speicher zu reservieren. Der Linux-Kernel bildet zugewiesenen virtuellen Arbeitsspeicher auf echten Arbeitsspeicher mithilfe von Swap ab.
Swap
Unter Windows kann Arbeitsspeicher-Austausch (Swap) Programme verlangsamen. Unter Linux ist das anders und Swap verhält sich nutznießerisch. Das liegt daran, wie der Linux-Kernel den von den Prozessen belegten Speicher analysiert. Der Linux-Kernel verwendet einen Algorithmus, der sich Least Recently Used nennt. Damit wird festgestellt, welche Arbeitsspeicher-Pages im RAM sein müssen und welche nicht. Unter bestimmten Umständen kann es flinker sein, wenn Sie den Linux-Kernel schneller swappen lassen.
Programm-Prozesse ersuchen in der Regel nach mehr Arbeitsspeicher, als diese in Wirklichkeit benötigen. Mithilfe der Linux-Software top sehen Sie den angeforderten virtuellen und den permanenten Arbeitsspeicher in den Spalten VIRT (virtuell) und RES (resident). Sobald ein Prozess mit Aktivitäten beginnt, wandern die Pages ins RAM und erscheinen als RES. Das Monitoring des Arbeitsspeicherverbrauchs im Linux-Kernel erlaubt es Administratoren, nur die häufig verwendeten Speicher-Pages zu behalten. Weniger häufig verwendete Pages werden vom Kernel entweder verworfen oder ausgelagert.
Prozesse auf dem Linux-Server verwenden abhängig vom Code anonymen oder Daten-abhängigen Dateispeicher. Anonymer Arbeitsspeicher muss zu jeder Zeit direkt verfügbar sein. Wenn die Speicher-Ressourcen knapp werden, sollten als anonym markierte Seiten ausgelagert (swap) werden.
Datenspeicher
Datenspeicher ist eine andere Geschichte. Liest ein Prozess Daten von einer Festplatte, bleiben diese im Cache. Somit kann der Prozess die Daten schnell ausliefern, wenn sie angefordert werden. Sollte hier eine Speicher-Knappheit auftreten, kann der Kernel den Datenspeicher einfach verwerfen. Es gibt keinen Geschwindigkeitsvorteil, unbenutzten Datenspeicher nach Swap zu transportieren. Somit ist das Verwerfen die bessere Option.
Aktiver und inaktiver Speicher
Der Linux-Kernel unterscheidet zwischen aktivem und inaktivem Speicher. Das ist das ausschlagende Kriterium, ob Arbeitsspeicher verworfen oder ausgelagert wird. Sollte inaktiver Speicher kürzlich nicht in Benutzung gewesen sein, schadet es nichts, diesen entweder zu verwerfen oder nach Swap zu verschieben. Die Datei /proc/meminfo zeigt den Unterschied zwischen aktivem und inaktivem Arbeitsspeicher für anonymen und Datei-Speicher (siehe Beispiel).
Beispiel: Der Unterschied zwischen aktivem und inaktivem Arbeitsspeicher aus dem Linux-Kernel.
[root@IAD ~]# less /proc/meminfo
MemTotal: 7971636 kB
MemFree: 2653648 kB
Buffers: 250868 kB
Cached: 2974052 kB
SwapCached: 0 kB
Active: 2530380 kB
Inactive: 2323604 kB
Active(anon): 1633532 kB
Inactive(anon): 125712 kB
Active(file): 896848 kB
Inactive(file): 2197892 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 10059772 kB
SwapFree: 10059772 kB
Dirty: 132 kB
Writeback: 0 kB
AnonPages: 1629052 kB
Mapped: 162396 kB
Shmem: 130192 kB
Slab: 296332 kB
SReclaimable: 233344 kB
SUnreclaim: 62988 kB
In diesem Beispiel sehen Sie viel aktiven anonymen aber nur wenig inaktiven anonymen Arbeitsspeicher. Sollten die Speicher-Ressourcen zuneige gehen, kann der Kernel die 125 MByte inaktiven anonymen Arbeitsspeicher nach Swap auslagern. Allerdings sollte er nichts von den 1,6 GByte als aktiv markierten Arbeitsspeicher ins Swap verschieben. Das würde sich negativ auf die Geschwindigkeit auswirken. Speicher-Pages müssten in diesem Fall andauernd zwischen RAM und Festplatte hin- und hergeschoben werden. Ist die Swap-Menge größer als die Menge des inaktiven (anonymen) Arbeitsspeichers, sollten Sie dem System mehr Arbeitsspeicher spendieren. Damit optimieren Sie die Speichernutzung unter Linux.
Im Idealfall übersteigt die Menge des genutzten Swap die Menge des aktiv (anonymen) genutzten Arbeitsspeichers nicht. Die Menge des aktiven (Datei-) Speichers ist die Menge des vom Kernel benötigten Pufferspeichers (Cache). Alles darüber hinaus hat keine positiven oder negativen Auswirkungen auf die Performance des Servers.
Inaktiver Dateispeicher ist als wegwerfbar markiert, sollte der Kernel mehr Speicher benötigen. Solange der Linux-Kernel nichts Besseres damit anfangen kann, wird inaktiver Dateispeicher im Cache gehalten. Sollten diese Informationen gelöscht werden, hat das keine Auswirkungen.



IT-Prioritäten in der Pandemie: Wie COVID-19 die IT-Budgets verändert
2020 brachte ungeahnte Herausforderungen für die IT-Verantwortlichen. Die Pandemie wirkt sich auch auf zukünftige IT-Budgets und -Pläne aus, wie die TechTarget-Umfrage zeigt. Erfahren Sie in diesem E-Guide, welche Veränderungen die Pandemie bei den Prioritäten auslöste.