Frage Swap Partition vs Datei für die Leistung?


Was ist besser für die Leistung? Eine Partition, die näher an der Innenseite der Festplatte liegt, hat langsamere Zugriffszeiten, und wir müssen warten, bis das Laufwerk zwischen der Betriebssystem- und der Swap-Partition wechselt.

Auf der anderen Seite umgeht eine Swap-Partition das gesamte Dateisystem, wodurch Schreibvorgänge direkt auf die Festplatte möglich sind, was schneller als eine Datei sein kann.

Was macht die Leistung aus?

Wie viel macht eine Swap-Datei mit fester Größe einen Unterschied?

Ist es ein Fall, dass es länger dauert, auf die Swap-Partition zu wechseln, aber die Performance wird besser sein, während es auf der Swap-Partition ist, wenn es eine Swap-Datei gewesen wäre?


53
2018-06-15 03:06


Ursprung


Nur aus Neugier. Können Sie Systemdetails wie Kernel-Version, RAM, Partition und Dateisystemschema angeben? - Viky
Nach welchem ​​Betriebssystem suchen Sie? - Mathieu Chateau
Für Linux-Informationen, siehe lkml.org/lkml/2005/7/7/326 - Adam Monsen


Antworten:


Tatsächlich macht es keinen großen Unterschied, solange du es nicht benutzt Sparse-Dateien.

Das Erstellen einer "normalen" Datei mit dd wird die Datei (wenn überhaupt möglich) in einem einzigen Durchlauf zuweisen, während das Erstellen einer sparse Datei Ihnen sagen wird, dass Sie eine 10GB Datei haben, die herumliegt, aber nicht den gesamten Speicherplatz belegt. Ich bin mir nicht ganz sicher, ob mkswap den Speicherplatz trotzdem reservieren wird, aber typischerweise wird eine Auslagerungsdatei mit der Zeit wachsen und somit keinen durchgehenden Sektor (wie auf einem Teil der Festplatte) zuweisen, sondern stattdessen Blöcke zuweisen, die dazu führen Fragmentierung im Laufe der Zeit (natürlich abhängig von Ihrer Nutzung der Festplatte)

Intern greift der Linux-Kernel mehr oder weniger direkt auf die darunterliegenden Blöcke einer Auslagerungsdatei zu - ich kann den Link im Moment nicht finden, was unter der Haube passiert, Sie müssen mir hier vertrauen, es sei denn, jemand findet etwas Offizielleres. Alles, was ich mir jetzt vorstellen kann, ist:

Dies gilt nur für die 2.6-Linie von Linux-Kernel.

Wenn Sie eine optimale Leistung wünschen (und was ist das wirklich? ... Tauschen ist langsam, Punkt. Erhöhen Sie den RAM, so dass Sie nicht tauschen Beste Leistung), möchten Sie eine Partition verwenden.


22
2018-06-15 08:28



Moderne Versionen von swapon lehnen es ab, mit Sparse-Dateien zu arbeiten, die als Swap formatiert sind, weil die Datei Lücken aufweist. - Tim Post♦


  1. Auf Festplatten ist der Durchsatz und die Suche oft schneller am Anfang der Festplatte, da diese Daten näher am äußeren Bereich der Festplatte gespeichert sind, der mehr Sektoren pro Zylinder aufweist. Daher kann das Erstellen des Swaps am Anfang des Datenträgers die Leistung verbessern.

  2. Für einen 2.6 Linux Kernel gibt es keinen Leistungsunterschied zwischen einer Swap-Partition und einem unfragmentiert Auslagerungsdatei. Wenn eine Swap-Partition / Datei von swapon aktiviert wird, Der Kernel 2.6 findet heraus, auf welchem ​​Laufwerk die Auslagerungsdatei gespeichert ist, so dass es, wenn es Zeit zum Tauschen ist, sich nicht mit dem Dateisystem befassen muss.

Wenn also die Swap-Datei nicht fragmentiert ist, ist es genau so, als ob eine Swap-Partition an derselben Stelle wäre. Oder anders ausgedrückt: Sie erhalten die gleiche Leistung, wenn Sie eine root-Swap-Partition verwenden oder sie mit einem Dateisystem formatieren und dann eine Auslagerungsdatei erstellen, die den gesamten Speicher füllt, da auf beiden Seiten eine zusammenhängende Region zum Auslagern vorhanden ist. welche der Kernel direkt benutzt.

Wenn also die Auslagerungsdatei erstellt wird, wenn das Dateisystem frisch ist (also sicherstellen, dass es nicht fragmentiert ist und am Anfang des Volumes), sollte die Leistung identisch sein mit einer Auslagerungspartition unmittelbar vor dem Datenträger. Wenn man außerdem die Swap-Datei in der Mitte des Volumes erstellt, mit Dateien auf beiden Seiten, könnte man eine bessere Leistung erzielen, da weniger versucht wird, zu tauschen.

Unter Linux, wenn die Swap-Datei unfragmentiert erstellt und nie erweitert wird, kann sie nicht fragmentiert werden, zumindest nicht mit normalen Dateisystemen wie ext3 / 4. Es werden immer dieselben Festplattenblöcke verwendet, die zusammenhängend sind.

Ich folge daraus, dass der einzige Vorteil einer dedizierten Swap-Partition die Unfragmentierung ist, wenn Sie sie erweitern müssen. Wenn Ihr Swap nie erweitert wird, benötigt eine Datei, die in einem neuen Dateisystem erstellt wurde, keine zusätzliche Partition.


21
2018-06-07 13:48



Die einzige Sache, die hier hinzugefügt wird, ist, dass, wenn die Maschine auf "Suspend to Disk" konfiguriert ist, was tatsächlich geschieht, dass Sachen im Speicher zum Tauschen geschrieben werden. Damit dies funktioniert, muss sich der Swap auf seiner eigenen Partition befinden, da sich der Swap nicht in einem aktiven Dateisystem befinden kann. Wenn Sie einen Server haben, verwenden Sie diese Funktion wahrscheinlich nicht und können eine Auslagerungsdatei verwenden. Wenn Sie einen Laptop haben, möchten Sie wahrscheinlich eine Swap-Partition, so dass Sie in der Lage sind, die Datei für den Ruhezustand "zu suspendieren". - Nathan S. Watson-Haigh
@ NathanS.Watson-Haigh Was passiert mit den Daten, die bereits im Austausch sind? Es kann nicht weggeworfen werden. - XTF
@ NathanS.Watson-Haigh Kannst du eine Quelle verlinken? Ubuntu 17.04 verwendet standardmäßig eine Auslagerungsdatei. Es wäre überraschend, wenn es nicht auf die Festplatte "suspendiert" werden könnte. - Matthias Weiler


Ich denke, in der Phase, in der wir uns gerade befinden, sollten Swap wirklich als "letzter Ausweg" betrachtet werden, es sei denn, Sie verwenden einen Laptop mit einer Konfiguration, die die Daten beim Aussetzen / Schlafen in den Swap schreibt. Ihre beste Wette ist es, genug RAM in eine Box zu legen, so dass es nie auf die Festplatte paginiert.

Davon abgesehen ist eine Partition wahrscheinlich der bessere Weg, die Performance zu verbessern, obwohl eine Datei flexibler ist. Stellen Sie sicher, dass es sich um eine 7200+ RPM-Spindel handelt.


3
2018-06-15 03:21



Warum sollte eine Partition leistungsfähiger sein, wenn Zugriffszeiten eher ein Faktor für Verzögerungen sein können? - Bill Gray
Da eine Datei verwendet, kann mehr Kopfbewegungen erfordern, denn wenn die Seite zu finden, die Daten zu lesen / schreiben könnte überall auf dem Dateisystem sein, so fs Strukturen müssen während bei einer Swap-Partition durchsucht werden jede Seite in einem bekannten Ort sein wird, innerhalb der Trennwand. Dies macht die Zugriffszeit (im Gegensatz zum Bulk-Durchsatz) zu einem Unterscheidungsfaktor. - David Spillett
"Konfigurieren Sie Swap nicht, es sei denn, Sie müssen den Ruhezustand aktivieren" ist eine kontroverse Ansicht. Manchmal, wenn das System zu wenig realem Speicher zur Verfügung steht, kann Swap dem System die Wiederherstellung ermöglichen. Wenn Sie Swap nicht verwenden, können Sie keine Programme ausführen, die große Speicherzuweisungen vornehmen, aber die meisten davon nicht wirklich berühren (z. B. bestimmte Debugging-Tools). Manchmal wird ein belegter, aber freier Speicherbereich besser als Plattencache verwendet, und das kann nur erreicht werden, wenn ein Austausch verfügbar ist. Sehen unix.stackexchange.com/questions/2658/... zur Diskussion. - Anon


Dies ist eine interessante Frage und hat viel über das Gleiche gelesen. Im Allgemeinen ist eine Swap-Partition aufgrund des zugrunde liegenden Dateisystems besser als eine Datei. Aber wenn Sie immer die Größe Ihres Swaps erhöhen müssen, dann ist die Datei eine bessere Option. Bis Kernel 2.4 wurde berücksichtigt, dass eine Swap-Partition schneller ist als eine Datei, aber jetzt mit den Verbesserungen von Kernel 2.6 sind die Leistungen fast gleich.

Etwas, das ich auch im Internet gefunden habe.

http://www.go2linux.org/swap-file-vs-swap-partition

und

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html


3
2018-06-15 03:27



Keine dieser Links erklärt jedoch wirklich die Gründe für ihre Entscheidungen. - Bill Gray
Der Grund dafür ist, dass die zugrunde liegende Dateisystemüberlastung der Datei vorliegt. Wenn Sie eine Datei erstellen, könnte sie fragmentiert sein. und abhängig von der Datei, die beim Auslagern zwischengespeichert wird, können die Lesevorgänge im Vergleich zu einer gesamten Partition, die ein eigenes Auslagerungsdateisystem ist, langsam sein. - Viky
Versucht, weiter zu graben und einen entsprechenden Artikel im Wiki zu finden. Um Ihnen zu helfen, gibt es nur wenige Swap-Tuning-Parameter, die Sie überprüfen können. Überprüfen Sie auch die Erklärung unter Linux. Könnte helfen. en.wikipedia.org/wiki/Paging - Viky
Einer der Zitate auf dem oben erwähnten Wiki-Link gefolgt und einen interessanten Thread zum selben Thema gefunden. Vielleicht möchte ich das überprüfen. lkml.org/lkml/2005/6/28/427 - Viky
Ich habe die Dateisystemüberlastung in meiner Frage erwähnt, aber es ist nicht so sehr ein Leistungsblock wie eine Partition in der Nähe der inneren Festplatte. Diese Verzögerung wäre größer als der Dateisystem-Overhead. - Bill Gray


Das Denken bei unserer Arbeit ist, dass, da eine Swap-Datei fragmentiert werden kann und die Fragmentierung den Austauschzugriff verlangsamt, eine Partition ein besserer Ansatz ist. Natürlich macht das Definieren einer Swap-Datei mit statischer Größe fast dasselbe, aber das scheint nur subjektiv besser zu sein.

Ist dieser Ansatz der einzig wahre Weg? Wahrscheinlich nicht, da die Praxis vor fast 10 Jahren gegründet wurde. Die einzige große Veränderung in der Antriebstechnik in den vergangenen Jahren ist die Komplexität der RAID-Controller, die wir verwenden (wir sind noch nicht reich genug für SSDs). Die Zunahme der Laufwerkgrößen bedeutet, dass die Swap-Partition, die wir erstellen, näher am Anfang des Laufwerks ist als bei der Auslieferung von 18-GB-Laufwerken, sodass die Swap-Geschwindigkeiten noch schneller sind als in früheren Tagen.

Natürlich ist die Position der Swap-Datei auf unseren ESX-basierten Windows-Systemen völlig verwerflich. Es gibt so viele Ebenen der Virtualisierung zwischen der Auslagerungsdatei und den physischen Plattenplatten, dass es einfach keine Rolle spielt. Aber wir behalten es auf einer separaten Partition, denn das ist nur der Standard.


2
2018-06-15 05:12



Eine Auslagerungsdatei wird nicht fragmentiert, da der Kernel eine direkte mmap-Methode verwendet und die Datei niemals vergrößert oder verkleinert. +1 für Ihren Kommentar zur Virtualisierung: Es spielt oft keine Rolle. - parasietje


Bei Verwendung einer Auslagerungsdatei wird möglicherweise etwas zusätzlicher Speicher für die Datei-zu-Speicher-Übersetzung benötigt. Wir sprechen von weniger als 1 MB Speicher pro 1 GB Swap. Der Dateisystemcache speichert getauschte Daten NICHT, sondern nur die Organisationsdaten, die die meisten zusätzlichen Speicheranforderungen erfüllen sollten.

Abgesehen davon bezweifle ich, dass du eine vernünftige Leistung verlieren wirst, außer vielleicht einmal in 1000 mal einer einzigen zusätzlichen Suche.

Die Tatsache, dass zswap zusammen mit einer dynamisch expandierenden Swap-Datei verwendet wird, führt zu einer eindrucksvollen Beschleunigung von Swap-Vorgängen mit sehr geringen Kosten, wenn sie nicht genutzt werden.


0
2017-07-14 16:22



Können Sie Ihre Ansprüche irgendwie begründen? Dies scheint eher anekdotisch. - austinian