Wie leere ich Swap, wenn es freien Arbeitsspeicher gibt?


Zur akzeptierten Antwort gehen


Wenn ich eine RAM-intensive App öffne (VirtualBox auf 2 GB RAM eingestellt), wird in der Regel ein Teil des Auslagerungsspeichers verwendet, je nachdem, was ich zu diesem Zeitpunkt noch geöffnet habe.

Wenn ich diese letzte Anwendung beende, werden 2 GB RAM freigegeben, aber derselbe Swap-Speicher bleibt erhalten.

Zum Beispiel habe ich gerade, ungefähr zwei Stunden nach dem Schließen von VirtualBox, 1,6 GB freien RAM und immer noch 770 MB im Swap.

Wie kann ich Ubuntu anweisen, diesen Swap nicht mehr zu verwenden und wieder den Arbeitsspeicher zu verwenden?


333





2010-08-06




Anzahl der Antworten: 6


Nur weil Swap zugewiesen wird, heißt das noch lange nicht, dass er "verwendet" wird. Während Programme wie system monitor und top einen Teil des zugewiesenen Swap-Speicherplatzes anzeigen (in Ihrem Beispiel 770 MB), bedeutet dies nicht, dass das System aktiv ein- / auslagert.

Mit dem vmstat Befehl können Sie herausfinden, ob sich etwas in der Zwischenzeit befindet . Lassen Sie es einige Sekunden laufen, um sich zu beruhigen und die si Spalten (Swapin) und so (Swapout) zu beobachten. Wenn nichts passiert, gibt es keinen Grund zur Sorge.

Hier ist die Ausgabe von "Laufen" vmstat 1 , bei der Sie sehen können, dass meine Maschine überhaupt nicht wechselt.

 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0  78588 230788   9596  72196    0    0     0     0  543  652 12  6 78  0
 0  0  78588 230780   9596  72196    0    0     0     0  531  410  1  0 99  0
 0  0  78588 230796   9596  72196    0    0     0     0  300  335  1  1 97  0
 1  0  78588 230788   9608  72224    0    0    40     0  737  762  4  4 84  8
 5  0  78588 230788   9608  72224    0    0     0     0  415  385  9  3 84  0
 0  0  78588 230540   9616  72224    0    0     0    44  611  556 55  5 31  0
 0  0  78588 230532   9616  72224    0    0     0     0  574  662  1  6 89  0
 

Doch hier in sehen top Sie, ich habe Swap Space zugewiesen: -

 Mem:    475236k total,   245076k used,   230160k free,     9720k buffers
Swap:   491512k total,    78588k used,   412924k free,    72476k cached
 

175


2010-08-06

Der Linux-Kernel, der Ubuntu zugrunde liegt, "tauscht" diese Seiten bei Bedarf automatisch von der Festplatte in den Arbeitsspeicher aus. Im Allgemeinen würde ich also sagen, dass dies ganz natürlich geschehen soll.

Wenn Sie jedoch wirklich das Gefühl haben, dass Sie es erzwingen müssen (ich sehe ein Szenario, in dem Sie wissen möchten, dass das System später reagiert), können Sie Swap für einen Moment deaktivieren und wieder aktivieren

 sudo swapoff -a
sudo swapon -a
 

ODER alternativ als einzelne Zeile

 sudo swapoff -a; sudo swapon -a
 

Gehen Sie dabei vorsichtig vor, da Ihr System möglicherweise instabil wird, insbesondere, wenn der Arbeitsspeicher bereits niedrig ist.


450


2010-08-06

Sie können auch Ihren "swappiness" -Wert auf den Standardwert von 60 einstellen. Auf diese Weise wird der Swap zunächst nicht so groß. Warum der Standardversand auf 60 eingestellt ist, wenn der empfohlene Wert 10 ist, ist mir ein Rätsel. Aus dem Ubuntu SwapFAQ :

Die Standardeinstellung in Ubuntu ist swappiness = 60. Das Verringern des Standardwerts für swappiness verbessert wahrscheinlich die Gesamtleistung für eine typische Ubuntu-Desktop-Installation. Ein Wert von swappiness = 10 wird empfohlen , Sie können jedoch gerne experimentieren.

Indem Sie diesen Wert auf 10 oder sogar 0 ändern, können Sie einem älteren System mit langsamer Fahrt einen deutlichen und wahrnehmbaren Geschwindigkeitsschub hinzufügen. Wenn Sie diesen Wert auf 0 setzen, wird Swap für Linux-Kernel 3.4 und niedriger nicht deaktiviert. Ab Version 3.5 sollten Sie jedoch den Wert 1 verwenden, wenn Sie die niedrigste Einstellung * beibehalten möchten.

Ich sehe keinen Grund, dies nicht auf 0 zu setzen, da alles, was die Festplatte trifft, langsamer als RAM ist. Ich habe 8 virtuelle Kerne, eine schnelle SSD und 8 GB Arbeitsspeicher, und mein Swap ist auf 0 gesetzt. Ab diesem Moment sind 3 virtuelle Maschinen aktiv, mein Arbeitsspeicherbedarf beträgt 7,1 von 7,7 GB, mein genutzter Swap beträgt nur 576 KB 952MB und alle Systeme laufen reibungslos!

Aus dem Ubuntu SwapFAQ :

Der Parameter swappiness steuert die Tendenz des Kernels, Prozesse aus dem physischen Speicher auf die Auslagerungsplatte zu verschieben. Da Festplatten viel langsamer als RAM sind, kann dies zu längeren Antwortzeiten für System und Anwendungen führen, wenn Prozesse zu stark aus dem Arbeitsspeicher verschoben werden.

  1. swappiness kann einen Wert zwischen 0 und 100 haben
  2. swappiness = 0 weist den Kernel an, das Auslagern von Prozessen aus dem physischen Speicher so lange wie möglich zu vermeiden
  3. Mit swappiness = 100 wird der Kernel angewiesen, Prozesse aggressiv aus dem physischen Speicher auszutauschen und sie in den Swap-Cache zu verschieben

Im Folgenden finden Sie grundlegende Anweisungen zum Überprüfen der Swap-Fähigkeit, zum Leeren der Swap-Fähigkeit und zum Ändern der Swap-Fähigkeit auf 0:

So überprüfen Sie den Swappiness-Wert:

 cat /proc/sys/vm/swappiness
 

So setzen Sie Swap vorübergehend auf 0 ( wie von SpamapS vorgeschlagen ):

Dadurch wird Ihr Swap geleert und der gesamte Swap wird zurück in den Speicher übertragen. Stellen Sie zunächst sicher, dass genügend Arbeitsspeicher verfügbar ist, indem Sie die Registerkarte "Ressourcen" von gnome-system-monitor anzeigen. Der verfügbare Arbeitsspeicher sollte größer sein als der von Ihnen verwendete Swap. Dieser Vorgang kann eine Weile dauern. Verwenden Sie gnome-system-monitor, um den Fortschritt zu überwachen und zu überprüfen.

 sudo swapoff --all
 

So setzen Sie den neuen Wert auf 0:

 sudo sysctl vm.swappiness=0 
 

So schalten Sie den Swap wieder ein:

 sudo swapon --all
 

So setzen Sie swappiness dauerhaft auf 0:

  1. sudoedit /etc/sysctl.conf
  2. Fügen Sie diese Zeile hinzu vm.swappiness = 0
  3. sudo shutdown -r now # System neu starten

* Bei Kernel-Version 3.5+ wird das Setzen von swappiness auf 0 vollständig deaktiviert, und die Einstellung 1 wird empfohlen, wenn Sie den niedrigsten swappiness-Algorithmus wünschen. Quelle: https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/


147


2012-06-11

Ich habe festgestellt, dass das Leeren von Swap auf Systemen mit langsamen Festplatten und begrenztem RAM sehr hilfreich sein kann. Natürlich ist, wie bereits erwähnt, der Weg, dies zu tun, zu laufen sudo swapoff -a; sudo swapon -a . Das Problem hierbei ist, dass bei unzureichendem RAM alle möglichen Probleme auftreten.

Ich habe ein Skript geschrieben, das ich nenne und toggle_swap das seit einigen Jahren für mich funktioniert. Es wird nach genügend freiem RAM gesucht, bevor der Swap deaktiviert wird. Hier ist es:

 #!/bin/bash

free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
    echo "Freeing swap..."
    sudo swapoff -a
    sudo swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi
 

53


2011-12-25

Nachdem ich ein paar Tage mit Swappiness rumgespielt habe, bin ich zu dem Schluss gekommen, dass der Kernel auf seine eigenen Geräte gestellt werden sollte. Es weiß, was es tut, und es ist optimiert, um Ihnen die beste Erfahrung zu bieten.

Wenn Sie keinen guten Grund haben, diese Festplatte zurück zu wollen, lasse ich es.


25


2010-08-06

Die Leistung wird dadurch nicht beeinträchtigt, wenn der Swap-Bereich belegt ist. Die einzige Leistungseinbuße ist, dass Sachen in / aus dem Tausch gehen. Wenn nichts ausgetauscht wird, müssen Sie sich um nichts kümmern.


-1


2010-08-11