Linux überschreibt den Speicher

12

Ich habe mich mit der Überlastung des Speichers unter Linux befasst /proc/sys/vm/overcommit_memoryund einige Artikel gelesen, die nicht dasselbe sagen.

In diesem Dokument unter der Überschrift "In die falsche Richtung gehen" heißt es weiter: "Werte 1: Überbeanspruchen und 0 (Standard): Nicht", aber in den nächsten Zeilen wird unter anderem erwähnt Dinge, dass dies nicht wirklich wahr ist und dass 0 "erraten, wie viel Überbindung vernünftig ist" bedeutet. Das bedeutet, dass die Speicherüberlastung nicht mit dem Wert 0 deaktiviert wird, oder?

Es heißt auch, dass 1 "niemals malloc () ablehnen" bedeutet, wobei 2 "genau über das Überbeanspruchen sein - niemals einen virtuellen Adressraum festschreiben, der größer als der Auslagerungsraum plus ein Bruchteil des Überbindungsverhältnisses des physischen Speichers ist".

Das Red Hat-Magazin hingegen gibt an: "Wenn der Wert 0 ist, prüft der Kernel, ob genügend Speicher frei ist, um einem Malloc-Aufruf einer Anwendung eine Speicheranforderung zu erteilen. Wenn genügend Speicher vorhanden ist, dann." Die Anforderung wird gewährt. Andernfalls wird sie abgelehnt und ein Fehlercode an die Anwendung zurückgegeben. " Dies klingt genau so, als würde man Overcommit deaktivieren.

"Wenn der Wert auf 1 gesetzt ist, gewährt der Kernel Zuweisungen über der Menge an physischem RAM und Swap im System, wie durch den Wert overcommit_ratio definiert. Wenn die Einstellung in dieser Datei 2 ist, erlaubt der Kernel alle Speicherzuweisungen , unabhängig vom aktuellen Speicherzuordnungsstatus. " In Bezug auf die Werte 1 und 2 ist das das Gegenteil von dem, was das vorherige Dokument gesagt hat, richtig?

Weiß jemand, was tatsächlich richtig ist und ob es möglich ist, Overcommit zu deaktivieren?

Doddy
quelle
Ich habe diesen vergessen! Das tut mir leid.
Doddy

Antworten: