Wie konfiguriere ich swappiness?

345

Ich brauche eine Schritt-für-Schritt-Anleitung, um Swappiness einfach und schnell zu konfigurieren.

Eine Null
quelle
17
One Linersudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
Redanimalwar
8
@redanimalwar müssen Sie auch ausführen sudo sysctl -p, um den neuen swappiness-Wert aus der Datei sysctl.conf zu laden. Andernfalls wird die Änderung erst beim nächsten Neustart wirksam.
Waldyrious

Antworten:

509

Der Linux-Kernel bietet eine optimierbare Einstellung, mit der gesteuert wird, wie oft die Auslagerungsdatei (swappiness) verwendet wird.

Eine Swap-Einstellung von Null bedeutet, dass die Festplatte umgangen wird, sofern dies nicht unbedingt erforderlich ist (Ihnen geht der Speicherplatz aus), während eine Swap-Einstellung von 100 bedeutet, dass Programme fast sofort auf die Festplatte ausgelagert werden.

Das Ubuntu-System wird standardmäßig mit 60 ausgeliefert, was bedeutet, dass die Auslagerungsdatei ziemlich oft verwendet wird, wenn der Arbeitsspeicher etwa die Hälfte meines Arbeitsspeichers ausmacht. Sie können den Swap-Wert Ihres eigenen Systems überprüfen, indem Sie Folgendes ausführen:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

Da ich 4 GB RAM habe, würde ich das gerne auf 10 oder 15 reduzieren. Die Auslagerungsdatei wird dann nur verwendet, wenn meine RAM-Auslastung etwa 80 oder 90 Prozent beträgt . Öffnen Sie /etc/sysctl.confals root, um den Systemaustauschwert zu ändern . Ändern Sie dann die folgende Zeile oder fügen Sie sie der Datei hinzu:

vm.swappiness = 10

Starten Sie den Computer neu, damit die Änderung wirksam wird.

Sie können den Wert auch ändern, während Ihr System noch ausgeführt wird:

sysctl vm.swappiness=10

Sie können Ihren Swap auch löschen, indem Sie swapoff -aund dann swapon -aals root ausführen, anstatt neu zu starten, um den gleichen Effekt zu erzielen.

So berechnen Sie Ihre Swap-Formel:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

insgesamt ist also 3950/100 = 39,5 * 10 = 395

Das heißt also, wenn 10% (395 MB) RAM übrig sind, wird Swap verwendet.


                                          Hilfe . Ubuntu. Wechsel

                                           Was ist Swappiness?

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 langsameren Antwortzeiten für System und Anwendungen führen, wenn Prozesse zu aggressiv aus dem Arbeitsspeicher verschoben werden.

  • swappiness kann einen Wert zwischen 0 und 100 haben.
  • swappiness=0:
    • Kernel Version 3.5 und neuer: Deaktiviert Swapiness.
    • Kernel-Version älter als 3.5: Vermeidet, dass Prozesse so lange wie möglich aus dem physischen Speicher ausgelagert werden.
  • swappiness=1:
    • Kernel-Version 3.5 und höher: Minimaler Austausch, ohne ihn vollständig zu deaktivieren.
  • swappiness=100:
    • Weist den Kernel an, Prozesse aggressiv aus dem physischen Speicher auszutauschen und sie in den Auslagerungscache zu verschieben.

Siehe http://en.wikipedia.org/wiki/Swappiness .

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=10wird empfohlen, aber Sie können gerne experimentieren.


Beispiel

Startete mit 91% Swap :

Bildbeschreibung hier eingeben Da ich mein System & vm so konfiguriert habe, dass 90% des Arbeitsspeichers verwendet werden , wurde bei 90% kein Swap ausgeführt.

Danach habe ich einige Anwendungen wie Firefox & Shutter geöffnet und es begann zu tauschen, da die RAM-Auslastung über 90% liegt .

Eine Null
quelle
118
Bei einer Auslagerung von 100 werden Programme nicht sofort ausgelagert, und ein Wert von 60 oder 90 bedeutet nicht, dass die Auslagerung verwendet wird, wenn der RAM zu 60 oder 90% voll ist. Es ist ein Verhältnis der Präferenz, Seiten aus dem Cache zu stehlen oder Dinge auszutauschen, um Speicherplatz freizugeben, wenn nicht genug vorhanden ist. Ein niedriger Wert zieht es stark vor, Seiten aus dem Cache zu stehlen, und ein hoher Wert zieht es stark vor, Seiten auszutauschen. Die Einstellung hat erst dann eine Auswirkung, wenn der Speicher (fast) vollständig belegt ist und der Kernel entscheiden muss, wie er den Speicher freigibt.
Psusi
67
Sie müssen darauf hinweisen, dass der Arbeitsspeicher, der NICHT von laufenden Programmen belegt wird, als Festplatten-Cache verwendet wird. Wenn Sie also die Auslagerungsrate verringern, erhöhen Sie die Wahrscheinlichkeit, dass ein Programm nicht ausgelagert wird, und verringern gleichzeitig die Größe Festplatten-Cache, was den Festplattenzugriff verlangsamen kann. Die Auswirkungen dieser Einstellung auf die tatsächliche Leistung sind also nicht so einfach ... Sie können natürlich gerne experimentieren, aber ich vermute, die Standardeinstellungen werden von Personen festgelegt, die genug Verständnis für das Thema haben :)
Sergey
14
@Sergey und die Ironie dabei ist, dass diejenigen mit kleinem RAM mit größter Wahrscheinlichkeit jeden Trick ausprobieren, um die Leistung zu steigern, und eher die Personen sind, für die 60 oder noch mehr die beste Zahl wären. Diejenigen von uns, die es auf 10 setzen, weil wir Tonnen RAM haben, gewinnen nicht so viel, wie sie verlieren, wenn sie dies tun.
Jon Hanna
6
@Freedom_Ben: Siehe linuxatemyram.com :)
Sergey
5
Lassen Sie
Elijah Lynn