Soweit mir bekannt ist, können Sie nicht steuern, welche Teile des virtuellen Speichersystems (z. B. RAM oder Swap) für ein TMPFS verwendet werden.
Es ist jedoch nicht wahr, dass das Erstellen großer tmpfs schwerwiegende OOM-Fehler verursacht. Sie können ein TMPFs erstellen, das größer ist als Ihr gesamtes RAM + SWAP, da nichts davon tatsächlich verwendet wird, bis Sie Dateien in das TMPPS-Verzeichnis einfügen.
Wenn Sie keine Dateien in den tmpfs setzen, wird dieser Speicher verwenden, aber nur so viel wie die Dateien, die Sie den tmpfs setzen in. Wenn Sie diese Dateien dann längere Zeit nicht berühren und das System den RAM mehr verwenden muss, als im Zwischenspeicher verbleiben, werden diese Dateien tatsächlich vom Swap statt vom RAM gesichert.
Wenn Ihre Anforderungen an die tmpfs zu einem großen Teil des Arbeitsspeichers werden, wirkt sich dies auf den Puffercache aus (die Daten werden nicht mehr im Arbeitsspeicher zwischengespeichert, da dies für die tmpfs-Dateien erforderlich ist). Wenn die Nachfrage wächst, beginnt der Swap. Wenn Sie keinen Puffercache haben, werden alle Ihre Auslagerungen verwendet, und es werden noch mehr Speicheranforderungen gestellt. Erst dann erhalten Sie OOM-Fehler.
Daher ist es in der Tat sicher, große tmpfs-Werte anzugeben, /tmp
solange Sie auch eine anständige Menge Swap haben. Sie sagen, Sie wären damit einverstanden, wenn Sie 25% Ihres Arbeitsspeichers und 75% Ihres Swap-Speichers verwenden. Angenommen, Sie hätten normalerweise 1 GB RAM und 2 GB Swap. Ich würde tmpfs auf 1G setzen und den Swap etwas erhöhen, sagen wir zu 3G.
Wenn Ihr System unter Speicherdruck gerät, wird als Erstes geschehen, dass selten verwendete Dateien /tmp
durch Swap statt durch RAM gesichert werden. Sie verlieren nicht Ihren gesamten Arbeitsspeicher, indem Sie ein TMPPS so groß wie der Arbeitsspeicher machen.