Daher dachte ich, dies wäre ziemlich einfach zu finden: Ein Service- / Kernel-Modul, das, wenn der Kernel feststellt, dass der Speicher im Userland knapp wird, eine Aktion auslöst (z. B. das Speichern einer Prozessliste in eine Datei, das Pingen eines Netzwerkendpunkts usw.) ) innerhalb eines Prozesses, der über einen eigenen dedizierten Speicher verfügt (damit er nicht versagt () oder unter einem der anderen üblichen OOM-Probleme leidet).
Ich fand den OOM-Killer , von dem ich verstehe, dass er nützlich ist, der aber nicht wirklich das tut, was ich tun müsste.
Wenn mir der Speicher ausgeht, möchte ich im Idealfall wissen, warum. Ich nehme an, ich könnte mein eigenes Programm schreiben, das beim Start ausgeführt wird und eine feste Menge an Speicher verwendet, und dann erst dann etwas tun, wenn der Kernel über zu wenig Speicher informiert wird, aber das wirft seine eigene Frage auf ...
Gibt es überhaupt einen Systemaufruf, um über so etwas informiert zu werden? Eine Möglichkeit, dem Kernel zu sagen: "Hey, weck mich auf, wenn wir nur noch 128 MB Speicher haben."
Ich habe im Internet und hier gesucht, aber nichts gefunden, was zu dieser Beschreibung passt. Es scheint, als würden die meisten Leute die Abfrage zeitverzögert verwenden, aber das offensichtliche Problem dabei ist, dass es weniger wahrscheinlich ist, dass Sie wissen, welche Prozesse das Problem verursacht haben.
sar
, und das kann Ihnen helfen, eine Obduktion durchzuführen. Die kontinuierliche Berichterstattung über diese lokal generierten Daten wäre im Netzwerk jedoch ziemlich teuer. Planen Sie, die Daten lokal (oder über NFS) ähnlich wie kdump zu halten?
sar
ziemlich cool. Danke für die Empfehlung. Neigen dazu , sie zu verwenden htop
oder regelmäßig zu verwenden top
, obwohl sie an einem guten Tag ressourcenhungrig sind, also ... vielleicht nicht das beste Werkzeug für den Job. : P