Was ist Swap-Speicher?


26

Ich verwende RAM zum Speichern einiger meiner Datenbanktabellen und die anderen werden auf der Festplatte gespeichert.

Heute habe ich erfahren, dass meine Prozesse Swap-Speicher verwenden. Was ist nun Swap-Speicher und wie kann ich feststellen, welcher Prozess Swap-Speicher verwendet und wie kann ich verhindern, dass er verwendet wird?


Gibt es keine Möglichkeit herauszufinden, welche Prozesse Swap-Speicher verwenden?

Überprüfen Sie im Windows Task-Manager (oder ähnlichen Tools) die Menge der verwendeten Auslagerungsdateien und Seitenfehler.

Swap ist keine Sache pro Prozess, sondern für das gesamte Betriebssystem. "vmstat" zeigt Ihnen Informationen darüber, wie viel Swap Sie verwenden.
jrockway

Ich arbeite unter Linux nicht auf Wimdows

Ich habe den Grund für diese Auslagerungsnutzung herausgefunden. Jemand hat versucht, meine Site zu analysieren. Deshalb geschah das Ganze ohne Grund von unserer Seite. Vielen Dank für Ihre Antworten, es hat mir wie immer sehr geholfen :-)

Antworten:


41

Wenn Ihnen der physische Speicher ausgeht, verwenden Sie den virtuellen Speicher, in dem die Daten auf der Festplatte gespeichert werden. Das Lesen von der Festplatte ist um mehrere Größenordnungen langsamer als das Lesen aus dem Speicher. (Der Datenaustausch zwischen realem und virtuellem Speicher erfolgt durch "Auslagern". Der Speicherplatz auf der Festplatte wird als "Auslagerungsspeicher" bezeichnet.)

Wenn Ihre App "Swap verwendet", müssen Sie entweder weniger Arbeitsspeicher verwenden oder mehr RAM kaufen.

(Swap ist nützlich, da Anwendungen, die nicht verwendet werden, auf der Festplatte gespeichert werden können, bis sie verwendet werden. Dann können sie "ausgelagert" und wieder normal ausgeführt werden. Solange sie sich nicht im Arbeitsspeicher befinden, kann das Betriebssystem diesen Arbeitsspeicher verwenden Für etwas anderes, wie den Festplatten-Cache. Es ist also eine sehr nützliche Funktion. Wenn Sie jedoch nicht über genügend physischen Speicher verfügen, um Ihr Programm auszuführen, benötigen Sie definitiv mehr Speicher. Glücklicherweise ist Speicher heutzutage wirklich sehr, sehr billig.)


1
Der Richtigkeit halber: Virtueller Speicher bedeutet, virtuelle Speicheradressen zu verwenden (was in einer modernen CPU immer aktiviert ist, unabhängig davon, wie viel RAM zur Verfügung steht) und nicht direkt mit dem Auslagern in Beziehung zu stehen (obwohl sie in Kombination verwendet werden, sind sie es) grundsätzlich verschiedene Konzepte).
Fortran

@fortran, aus Gründen der doppelten Korrektheit ist virtueller Speicher der Begriff, den Windows verwendet, wenn es sich auf die Auslagerungsdatei (Auslagerungsdatei) bezieht .
Sleblanc

7

Ein Computer verfügt über einen bestimmten physischen Speicher. Aber meistens wollen wir mehr. Also tauschen wir Speicher auf der Festplatte aus.

Jedes Mal, wenn wir diesen Speicher benötigen, muss er in den Speicher zurückgetauscht werden (ein anderes Teil wird ausgetauscht). Es gibt extrem intelligente Algorithmen, um die Verzögerung zu minimieren, aber manchmal müssen wir noch warten.

Wenn Sie sich unter Windows den Task-Manager ansehen, können Sie die Spaltenseitenfehler anzeigen. Hier wird angezeigt, wie oft eine Anwendung nach einem Speicherstück fragt, das sich auf der Festplatte befunden hat und ausgetauscht werden muss. Viele Seitenfehler = langsame Anwendung.

Dieser Prozess wird auf mehreren Ebenen angewendet. Eine Zusammenfassung von schnell bis langsam:

  • Auf der CPU-Ebene gibt es Register. Dies sind die schnellsten Speicher, aber die Menge ist begrenzt.
  • Auch auf der CPU befindet sich ein kleiner Speichercache. Hier wird ein kleiner Teil des laufenden Programms für den schnellen Zugriff gespeichert. Suchen Sie nach Algorithmen zur Verzweigungsvorhersage, wenn Sie mehr wissen möchten.
  • Manchmal gibt es Level 2-Caches zwischen der CPU und dem Hauptspeicher.
  • Die nächste Ebene ist der Hauptspeicher (RAM).
  • Die letzte und langsamste Stufe ist die Festplatte. Manchmal können Sie USB-Sticks als zusätzlichen Speicher verwenden.

3
cat /proc/pid/smaps

Wenn Sie Swap nicht verwenden möchten, verwenden Sie keine Swap-Partition (kommentieren Sie die Zeile aus /etc/fstab). Dadurch wird jedoch verhindert, dass ein neuer Prozess gestartet wird, und Malloc schlägt fehl, wenn Ihnen der physische Speicher ausgeht. Das ist im Allgemeinen keine gute Idee ... nicht sehr sicher und auch nicht sehr nützlich, da das Betriebssystem die aktuellen Seiten im Speicher hält und auf die Festplatte wechselt, die in letzter Zeit nicht verwendet wurden.

Eine andere Lösung könnte darin bestehen, die Datenbank zu hacken, damit die Seiten im Speicher gesichert werden (ich weiß, dass dies möglich ist, aber ich kann Ihnen jetzt nicht genau sagen, wie) Caching-Mechanismen.

Um zu wissen, was der Swap ist und wie der virtuelle Speicher funktioniert ... Ich empfehle Ihnen, sich einige Vorlesungen zum Thema Betriebssystem anzuschauen. Vielleicht kann die MIT Open Courseware hilfreich sein.


Da die Standardkonfiguration vieler Linux-Distributionen darin besteht, den Speicher zu überlasten, ist das "Schlimmste", was passieren wird, dass der OOM-Killer Sniping-Prozesse startet, höchstwahrscheinlich beginnend mit dem DBMS (und mit Tabellen, die "im RAM gespeichert" sind, was wahrscheinlich nicht gut ist Sache).
Symcbean

1

Ich habe eine teilweise Antwort gefunden. Ein Swap-Speicher ist ein Speicherplatz auf der Festplatte Ihres Computers, den Betriebssysteme verwenden, um die Informationen, die sich tatsächlich im RAM befinden, für eine andere Anwendung freizugeben. Dies sollte erfolgen, wenn das System Speicher für einen neuen Prozess benötigt und keiner vorhanden ist. Wir können also feststellen, dass unser System möglicherweise keinen SWAP-Speicher benötigt, wenn es über ausreichend RAM verfügt.

AKTUALISIEREN

Um herauszufinden, wo Swap Space (oder virtueller Speicher) ist, können Sie den Task-Manager (STRG + ALT + ENTF) aufrufen und ihn über ANSICHT -> SPALTEN -> VIRTUELLER SPEICHER aktivieren. Berechnen Sie jetzt einfach den Unterschied zwischen der Speichernutzung und dem virtuellen Speicher. Außerdem finden Sie hier eine Anleitung, wie Sie feststellen können, ob Sie mit Vista arbeiten: http://www.ehow.com/how_5067693_increase-swap-space.html


-1

Swap ist der Festplattenspeicher, der als RAM verwendet wird. Es ist (relativ gesehen) sehr langsam, verhindert jedoch, dass Computer abstürzen, wenn sie versuchen, mit mehr Daten umzugehen, als ihr RAM verarbeiten kann.

Installieren Sie mehr RAM, um die Verwendung von Swap zu verhindern.


1
Wenn Sie keine Auslagerungsdateien verwenden möchten, beenden Sie die Verwendung einer Auslagerungsdatei. Erwarten Sie aber andere Probleme.

1
Es ist nicht. Beim Auslagern wird ein Datenblock von der Festplatte in den physischen Speicher verschoben. Ein einmaliger Lesevorgang, der normalerweise schnell genug ist.

@xtofl die Antwort erwähnte nicht Swap, nur Swap-Partition, und der Kommentar von Gamecat hatte nichts mit dem zu tun, was du gesagt hast? : P
RapidWebs

-1

Wenn Sie nicht möchten, dass Ihre Prozesse den Swap-Speicher verwenden, deaktivieren Sie den Swap-Speicher einfach vollständig. Wenn Ihnen jemals der Speicher ausgeht, bricht der Linux-Kernel einige Ihrer laufenden Prozesse ab, um Speicher für die Verwendung freizugeben.

Wenn Sie über ausreichend RAM für Ihr System verfügen, können Sie auch auf einen Auslagerungsspeicher verzichten.

Ich habe einen Laptop mit 768 MB RAM, der keinen Swap-Speicher verwendet. Es ist gut genug für meine Bedürfnisse. Ich habe einen Server mit 256 MB RAM und benutze keinen Swap-Speicher. Es laufen 8 virtuelle Server mit OpenVZ-Virtualisierung, auch ohne Probleme.

Es liegt also an Ihnen, ob Sie einen Swap-Speicher benötigen.


Wie sind Sie mit 8 VMs auf einer Maschine mit nur 256 Megabyte RAM?!?
Warren

Dies ist mit VZ möglich, da der Arbeitsspeicher nicht vollständig partitioniert ist, da allgemeine Bibliotheken von mehreren VMs gemeinsam genutzt werden, oder dies hat Auswirkungen. 8 x 64 MB sind also nicht unbedingt 512 MB. :)
Sybreon

trotzdem - wie läuft das zugrunde liegende Gerät stabil?
Warren

Durch das Auslagern inaktiver Programme steht mehr Speicher für das Zwischenspeichern von Dateien zur Verfügung. Und das beschleunigt die Sache. Dieses einmalige Lesen ist normalerweise ziemlich schnell und hat insgesamt vernachlässigbare Auswirkungen. Es wird nicht nur verwendet, wenn Sie hinsichtlich des verfügbaren Arbeitsspeichers Grenzen überschreiten. Ich habe gesehen, dass Computer mit 16 GB RAM manchmal SWAP verwenden.
RapidWebs

Außerdem würde ich nicht empfehlen, SWAP auf einem Datenbankserver zu deaktivieren. Seine Kunden oder seine Web-App wären nicht sehr erfreut, wenn OOM das Back-End durch einen einfachen nächtlichen Backup-Vorgang oder ähnliches beenden würde. Es wäre intelligenter, den Datenbankcache in Bezug auf die Anwendungsnutzung und den verfügbaren Speicher zu optimieren. Wenn er bereits austauscht, benötigt er entweder mehr RAM oder um seinen DB-Server besser zu konfigurieren. Andernfalls führt das Deaktivieren von SWAP dazu, dass OOM den DB-Server bei jedem Auslagerungsvorgang beendet. was nach seiner frage zu urteilen, ist oft.
RapidWebs
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.