kann ich die tmpfs-Größe überschreiten

8

Ich versuche, / dev / shm tmpfs zum Schreiben meiner Dateien zu verwenden. Der Standardwert ist die Hälfte des physischen RAM ohne Swap. Wenn ich etwas schreibe, das über die Größe dieses Mount hinausgeht, gibt es einen Fehler "Kein Platz mehr auf dem Datenträger".

Meine Frage ist, sollte nicht Swap-Space verwendet werden, anstatt Fehler zu beheben? Gibt es eine Möglichkeit, dass ich meine Anwendung mehr nutzen kann als die, die für tmpfs reserviert ist, vielleicht durch eine Option?

Was passiert, wenn einer meiner Prozesse läuft und fast den gesamten Speicherplatz in / dev / shm verbraucht hat und ich einen anderen Prozess (außerhalb von / dev / shm) ausführe, der auch mehr als 50% des RAM-Speicherplatzes belegt ? Welcher ist ausgelagert?

Nehmen wir zum Beispiel an, mein gesamter physischer Speicher ist 40 GB und tmpfs ist 20 GB. Einer der Prozesse benutzt / dev / shm und ist ungefähr 20GB. Jetzt läuft ein weiterer Prozess, der etwa 30 GB benötigt. Welcher der Prozesse wird ausgetauscht? Oder es kann nicht festgestellt werden?

    
user900563 30.08.2011, 11:33
quelle

1 Antwort

17

tmpfs wird bei Bedarf Swap-Space verwenden (das kann auch passieren, wenn die tmpfs-Größe die Hälfte der RAM-Größe ist, da andere Dinge auch RAM verwenden) und "die Hälfte des RAMs" ist nur die Standardgröße (ziemlich normal) des Dateisystems. Sie können es beim Mounten oder Montieren mit dem Argument 'size' auf das einstellen, was Sie wollen:

  

Mount-Optionen für tmpfs

%Vor%

Wenn Ihre Distribution fstab verwendet, um die tmpfs zu mounten, können Sie z. "Größe = 40G" dort. Sie können es auch jederzeit neu mounten mit:

%Vor%

Sei aber vorsichtig. Wenn Dateien auf den tmpfs zu viel von Ihrem virtuellen Speicher (RAM + Swap) nehmen, können Anwendungen (durch den OOM-Killer) getötet werden und das ganze System kann abstürzen.

Zurück zu Ihren Fragen ...

Ich denke nicht, dass es einfach ist herauszufinden, was ausgelagert wird, da AFAIK auf dieser Ebene für Linux alles (einschließlich Prozessdatenspeicher, zwischengespeicherte Festplattendateien, mmaped Festplattendateien, tmpfs Dateien) "virtuell" ist Erinnerung'. Linux kann einige Seiten für wichtiger halten (kürzlich verwendet), andere sind bereit, ausgelagert zu werden. So kann es ein Teil der tmpfs-Datei sein und ein Teil des anderen Prozesses ausgelagert werden.

    
Jacek Konieczny 30.08.2011 11:46
quelle

Tags und Links