Was macht das System mit den restlichen 20%?
Der Kernel verwendet den verbleibenden physischen Speicher für seine eigenen Zwecke (interne Strukturen, Tabellen, Puffer, Caches usw.). Die Einstellung für Speicherüberbelegung behandelt Reservierungen für den virtuellen Speicher der Userland-Anwendung. Der Kernel verwendet keinen virtuellen, sondern einen physischen Speicher.
Warum ist dieser Parameter überhaupt erforderlich?
Der overcommit_ratio
Parameter ist eine Implementierungsoption, die verhindern soll, dass Anwendungen mehr virtuellen Speicher reservieren, als für sie in Zukunft vernünftigerweise verfügbar sein wird, dh wenn sie tatsächlich auf den Speicher zugreifen (oder dies zumindest versuchen).
Die Einstellung overcommit_ratio
auf 50% wurde von den Linux-Kernel-Entwicklern als angemessener Standardwert angesehen. Es wird davon ausgegangen, dass der Kernel niemals mehr als 50% des physischen Arbeitsspeichers verwenden muss. Ihr Kilometerstand kann variieren, der Grund, warum er abstimmbar ist.
Warum sollte ich es nicht immer auf 100% setzen?
Wenn Sie den Wert auf 100% (oder einen "zu hohen" Wert) setzen, wird die Überbindung nicht zuverlässig deaktiviert, da Sie nicht davon ausgehen können, dass der Kernel 0% (oder zu wenig) RAM verwendet.
Es wird nicht verhindern, dass Anwendungen abstürzen, da der Kernel möglicherweise ohnehin den gesamten erforderlichen physischen Speicher verhindert.
Wenn Sie das Verhältnis auf 100% einstellen, wird kein Speicherplatz für dateibasierte Seiten oder kerninterne Zuordnungen wie Kernelcode, Netzwerkpuffer usw. reserviert.
In-Kernel-Strukturen werden unabhängig davon zugewiesen, was zu einer Überbindung führt. Sie sind im Allgemeinen individuell begrenzt (z. B. gibt es eine Einstellung für Netzwerkpuffer). Ich glaube nicht, dass es ein Gesamtlimit von 50% gibt, obwohl an einem Gesamtlimit gearbeitet wurde, um Container zu hosten.
Auf dateibasierten Seiten führen Sie normalerweise Userspace-Code aus, daher benötigen Sie auch dafür Speicherplatz.
quelle