Ich habe mich mit der Überlastung des Speichers unter Linux befasst /proc/sys/vm/overcommit_memory
und 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?
Antworten:
Red Hat Magazin hatte 1 und 2 umgekehrt. Achten Sie auf Fehler, die verhindern könnten, dass das Überbeanspruchen deaktiviert wird, um so zu funktionieren: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/345601
quelle