Wie lässt sich die Größe der Swap-Partition bei Verwendung von tmpfs gut schätzen?

716
rumtscho

Ich habe eine SSD, daher ist der Platz eine knappe Ressource. Ich möchte so wenig wie möglich für den Swap verbrauchen. Tatsächlich habe ich das letzte Jahr völlig ohne Swap-Partition verbracht (der Computer hat 6 GB RAM).

Ich plane eine Neuinstallation und möchte einige neue Dinge ausprobieren. Unter ihnen möchte ich die Schreiblast auf der SSD reduzieren, indem ich die schreibgeschützten Systemverzeichnisse in tmpfs platziere. Konkret möchte ich platzieren /tmp, /var/tampund /var/tmp/cachein den RAM. Offensichtlich erhöht dies meine RAM-Auslastung, und irgendwann brauche ich vielleicht doch einen Swap.

Ich habe in der Vergangenheit keine temporären Verzeichnisgrößen und keine RAM-Nutzung protokolliert und möchte keine Protokollierungs-Tools installieren und mit der Neuinstallation warten, bis ich genügend Daten gesammelt habe. Was sind meine besten Optionen, um eine geeignete Swap-Partitionsgröße zu erraten? Wie vernünftig wird eine solche Vermutung sein? Bleibe ich nur im Dunkeln oder verlasse ich mich auf übergroße Richtlinien der Sorte "1.5x RAM"?

Ich mache jeden Abend ein vollständiges Herunterfahren, daher hoffe ich, dass die temporären Verzeichnisse nicht zu groß werden.

2
Mein Betriebssystem (arch linux) befindet sich auf einer SSD und ich habe 6 GB RAM. Ich habe eine Swap-Partition von 2 GB, die selten berührt wird. Nur um Ihnen einen 2017 Datenpunkt zu geben. Emanuel Landeholm vor 6 Jahren 0

2 Antworten auf die Frage

4
David Schwartz

Sie haben drei Probleme, wenn es um den Speicherplatz geht.

Erstens können bei unzureichendem Auslagerungsspeicher einige Workloads nicht ausgeführt werden. Wenn ein Programm mehr Arbeitsspeicher als der verfügbare physische RAM benötigt, kann es nicht ohne Swap ausgeführt werden.

Zweitens kann Ihr Computer bei sehr geringem Swap-Speicher möglicherweise keine Elemente entfernen, auf die vom physischen RAM nie zugegriffen wird. Oft wird nie auf einen Teil des Speichers zugegriffen, aber das Betriebssystem kann das nicht beweisen. Es kann also nicht einfach die Erinnerung freigeben. Ohne ausreichenden Austausch bleiben diese Informationen für immer im RAM stecken und werden nie abgerufen. Viele Prozesse verschmutzten beim Starten einen Haufen Speicher, den sie niemals berühren.

Bei sehr geringem Swap-Speicherplatz kann Ihre Entscheidung, die VM zu überlasten oder nicht, zu drastischen Konsequenzen führen. Wenn Sie nicht zulassen, dass das System die VM überlastet, werden Sie Operationen ablehnen, die eigentlich nicht viel Speicherplatz beanspruchen. (Stellen forkSie sich vor, wenn ein großer Prozess aufruft . Es kann vorkommen, dass ein Aufruf ausgeführt execwird. forkWenn Sie jedoch nicht die Überbeanspruchung zulassen, muss das Betriebssystem das ablehnen, wenn nicht genügend RAM + Swap für den neuen Prozess vorhanden ist, um jede beschreibbare zugeordnete Seite zu verschmutzen.) Wenn Sie Erlauben Sie dem System jedoch die Überlastung, und Sie haben tatsächlich nicht genügend RAM + Swap für eine atypische Arbeitslast. Möglicherweise werden Prozesse unbewusst beendet.

Bei normaler Nutzung würde ich 2 GB für den Swap zuweisen und sicherstellen, dass eine sinnvolle Überbeanspruchung zulässig ist .

2
pdvyas

Wenn Sie keine speicherintensiven Aufgaben ausführen, kann ein Computer mit 6G RAM ohne Tausch auskommen (Warnung: Ich bin verrückt).

Das Einhängen von / tmp (seine / var-Geschwister) als tmpfs ist eine sehr gute Praxis. Für mein Netbook mit 1G RAM, kein Swap, behielt 100M / tmp tmpfs bei und gab nie Probleme (es sei denn, Sie wollen Dinge von dort wie Caches Dinge mitreißen, die die Leute normalerweise nicht wollen).

Wenn etwas schief geht, müssen Sie nur noch / etc / fstab bearbeiten.

Paranoia ist gut, aber Ihre Chancen, Daten zu verlieren, sind geringer, da sich nur die Verzeichnisse tmp / cache im Speicher befinden. Die tatsächlichen Daten werden trotzdem auf die Festplatte geschrieben.