Partition gegen Datei auslagern für Leistung?

62

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

Auf der anderen Seite umgeht eine Swap-Partition das gesamte Dateisystem und ermöglicht das direkte Schreiben auf die Festplatte, was schneller sein kann als eine Datei.

Was ist der Performance-Kompromiss?

Inwiefern macht es einen Unterschied, eine Swap-Datei mit fester Größe zu haben?

Ist es der Fall, dass die Umstellung auf die Auslagerungspartition länger dauert, die Leistung jedoch besser ist, wenn sich die Auslagerungspartition in einer Auslagerungsdatei befindet?

Bill Gray
quelle
Nur aus Neugier. Können Sie Systemdetails wie Kernelversion, RAM, Partition und Dateisystemschema bereitstellen?
Viky
Auf welchem ​​Betriebssystem suchen Sie?
Mathieu Chateau
4
Informationen zu Linux finden Sie unter lkml.org/lkml/2005/7/7/326
Adam Monsen,
Irgendwelche Updates für die Fragenantworten?
Kokbira

Antworten:

29
  1. Auf Festplatten ist der Durchsatz und die Suche zum Beginn der Festplatte hin häufig schneller, da diese Daten näher am äußeren Bereich der Festplatte gespeichert sind, der mehr Sektoren pro Zylinder aufweist. Daher kann die Leistung verbessert werden, wenn der Swap am Anfang der Festplatte erstellt wird.

  2. Für einen 2.6 Linux-Kernel gibt es keinen Leistungsunterschied zwischen einer Swap-Partition und einer nicht fragmentierten Swap-Datei. Wenn eine Swap-Partition / -Datei von swapon aktiviert wird, findet der 2.6-Kernel heraus, auf welchen Plattenblöcken die Swap-Datei gespeichert ist , sodass sie sich zum Zeitpunkt des Austauschs überhaupt nicht mit dem Dateisystem befassen muss.

Wenn die Auslagerungsdatei also nicht fragmentiert ist, ist es genau so, als befände sich eine Auslagerungspartition an derselben Position. Oder anders ausgedrückt, Sie würden die gleiche Leistung erzielen, wenn Sie eine unformatierte Swap-Partition verwenden oder sie mit einem Dateisystem formatieren und dann eine Swap-Datei erstellen, die den gesamten Speicherplatz ausfüllt, da in beiden Fällen auf dieser Festplatte ein zusammenhängender Bereich zum Auslagern verwendet wird. was der Kernel direkt benutzt.

Wenn Sie also die Auslagerungsdatei erstellen, während das Dateisystem neu ist (um sicherzustellen, dass es nicht fragmentiert ist und sich am Anfang des Volumes befindet), sollte die Leistung mit einer Auslagerungspartition unmittelbar vor dem Volume identisch sein. Wenn man das Swapfile etwa in der Mitte des Volumes erstellt, mit Dateien auf beiden Seiten, kann man möglicherweise eine bessere Leistung erzielen, da weniger nach einem Swap gesucht wird.

Wenn die Auslagerungsdatei unter Linux unfragmentiert erstellt und nie erweitert wird, kann sie zumindest mit normalen Dateisystemen wie ext3 / 4 nicht fragmentiert werden. Es werden immer dieselben Festplattenblöcke verwendet, die aneinander grenzen.

Ich komme zu dem Schluss, dass der einzige Vorteil einer dedizierten Swap-Partition darin besteht, dass die Fragmentierung bei Bedarf aufgehoben wird. Wenn Ihr Swap niemals erweitert wird, ist für eine Datei, die auf einem neuen Dateisystem erstellt wurde, keine zusätzliche Partition erforderlich.

Shay
quelle
5
Das Einzige, was Sie hier hinzufügen müssen, ist, dass, wenn Ihr Computer so konfiguriert ist, dass er auf der Festplatte angehalten wird, tatsächlich Dinge in den Speicher geschrieben werden, die ausgetauscht werden sollen. Damit dies funktioniert, muss sich der Swap auf einer eigenen Partition befinden, da sich der Swap nicht auf einem aktiven Dateisystem befinden kann. Wenn Sie also einen Server haben, verwenden Sie diese Funktion wahrscheinlich nicht und können gerne eine Auslagerungsdatei verwenden. Wenn Sie einen Laptop haben, möchten Sie wahrscheinlich eine Auslagerungspartition, damit Sie in der Lage sind, die Datei für den Ruhezustand anzuhalten.
Nathan S. Watson-Haigh
@ NathanS.Watson-Haigh Was passiert mit den Daten, die bereits ausgetauscht werden? Es kann nicht weggeworfen werden.
XTF
3
@ NathanS.Watson-Haigh Kannst du eine Quelle verlinken? Ubuntu 17.04 verwendet standardmäßig eine Auslagerungsdatei. Es wäre überraschend, wenn es nicht "auf Festplatte suspendieren" könnte.
Matthias Weiler
22

Eigentlich macht es keinen großen Unterschied, solange Sie keine spärlichen Dateien verwenden .

Durch das Erstellen einer "normalen" Datei mit dd wird die Datei (wenn überhaupt möglich) in einem einzigen Durchgang zugewiesen, während durch das Erstellen einer spärlichen Datei angezeigt wird, dass Sie eine 10-GB-Datei haben, die herumliegt, aber nicht den gesamten Speicherplatz belegt. Ich bin nicht ganz sicher, ob mkswap den Speicher ohnehin nicht reservieren wird, aber normalerweise wächst eine Auslagerungsdatei mit der Zeit und reserviert daher keinen fortlaufenden Sektor (wie in einem Teil der Festplatte), sondern reserviert Blöcke nach Bedarf, 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 zugrunde liegenden Blöcke einer Auslagerungsdatei zu. Ich kann den Link derzeit nicht finden, was unter der Haube passiert. Sie müssen mir in diesem Fall vertrauen, es sei denn, jemand findet etwas Offizielleres. Im Moment kann ich mir nur Folgendes einfallen lassen:

Dies gilt nur für die 2.6er-Reihe von Linux-Kerneln.

Wenn Sie eine optimale Leistung wünschen (und was ist das eigentlich? ... das Auslagern ist langsam, Punkt. Erhöhen Sie den Arbeitsspeicher, damit Sie nicht für die beste Leistung auslagern ), sollten Sie eine Partition verwenden.

Serverhorror
quelle
18
Moderne Versionen von swapon lehnen es ausnahmslos ab, mit als Swap formatierten Sparse-Dateien zu arbeiten, da die Datei Lücken aufweist.
Tim Post
3

Dies ist eine interessante Frage und ich habe viel darüber gelesen. Im Allgemeinen ist eine Swap-Partition aufgrund des zugrunde liegenden Dateisystems besser als eine Datei. Wenn Sie jedoch immer die Größe Ihres Swap-Speichers erhöhen müssen, ist die Option "Datei" die bessere. Bis Kernel 2.4 wurde angenommen, dass eine Swap-Partition schneller ist als eine Datei, aber mit den Verbesserungen von Kernel 2.6 sind die Leistungen nahezu 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

Viky
quelle
Keiner dieser Links erklärt jedoch wirklich die Gründe für ihre Entscheidungen.
Bill Gray
Der Grund dafür ist, dass die Datei die zugrunde liegende Überlastung des Dateisystems aufweist. Wenn Sie eine Datei erstellen, ist diese möglicherweise fragmentiert. und abhängig von der Datei, die beim Auslagerungsvorgang zwischengespeichert wird, können die Lesevorgänge im Vergleich zu einer gesamten Partition, bei der es sich um ein eigenes Auslagerungsdateisystem handelt, langsam sein.
Viky
Versuchte weiter zu graben und fand relativen Artikel im Wiki. Um Ihnen zu helfen, gibt es einige Swap-Tuning-Parameter, die Sie überprüfen können. Überprüfen Sie auch die Erklärung unter Implementierung für Linux. Könnte helfen. en.wikipedia.org/wiki/Paging
Viky
Ist einer der Zitierungen auf dem oben genannten Wiki-Link gefolgt und hat einen interessanten Thread zu demselben Thema gefunden. Vielleicht möchten Sie das überprüfen. lkml.org/lkml/2005/6/28/427
Viky
Ich habe die Überlastung des Dateisystems in meiner Frage erwähnt, aber es ist weniger ein Leistungsblock als eine Partition in der Nähe der inneren Festplatte. Diese Verzögerung wäre größer als der Overhead des Dateisystems.
Bill Gray
2

Ich denke, zum jetzigen Zeitpunkt sollte Swap wirklich als "letzter Ausweg" betrachtet werden, es sei denn, Sie betreiben einen Laptop mit einer Konfiguration, die die Daten in den Swap schreibt, wenn dieser angehalten / in den Ruhezustand versetzt wird. Ihre beste Wette ist es, genügend RAM in eine Box zu stecken, damit es niemals auf die Festplatte kommt.

Allerdings ist eine Partition in Bezug auf die Leistung wahrscheinlich der bessere Weg, obwohl eine Datei flexibler ist. Stellen Sie einfach sicher, dass es sich um eine Spindel mit mehr als 7200 U / min handelt.

Matt Simmons
quelle
1
Warum ist eine Partition in Bezug auf die Leistung besser, wenn die Zugriffszeiten eher zu Verzögerungen führen können?
Bill Gray
5
Da bei der Verwendung einer Datei möglicherweise mehr Kopfbewegungen erforderlich sind, da sich die Daten beim Auffinden der Seite zum Lesen / Schreiben an einer beliebigen Stelle im Dateisystem befinden können, muss möglicherweise nach fs-Strukturen gesucht werden Trennwand. Dies macht die Zugriffszeit (abhängig vom Massendurchsatz) zu einem differenzierenden Faktor.
David Spillett
2
"Konfigurieren Sie Swap nur, wenn Sie in den Ruhezustand wechseln müssen" ist eine kontroverse Ansicht. Manchmal, wenn das System nur noch wenig Speicherplatz zur Verfügung hat, kann das System wiederhergestellt werden. Wenn Sie nicht über Swap verfügen, können Sie möglicherweise Programme ausführen, die große Speicherzuordnungen vornehmen, aber das meiste davon nicht berühren (z. B. bestimmte Debugging-Tools). Manchmal wird eine belegte, aber nicht genutzte Speicherregion besser als Festplatten-Cache verwendet, und dies kann nur dann abgewogen werden, wenn ein Swap verfügbar ist. Weitere Informationen finden Sie unter unix.stackexchange.com/questions/2658/… .
Anon
1
Was @Anon gesagt hat. Chrome ist ein berüchtigtes Speicherproblem, und selbst mit weniger als 100 Registerkarten reagiert mein 16-GB-Laptop einige Minuten lang nicht, wenn der Speicher zu 90% ausgelastet ist und keine Auslagerungsdatei vorhanden ist. Überraschenderweise hat Ubuntu keinen eingebauten Mechanismus, um den Benutzer zu warnen, dass das Betriebssystem nicht genügend Arbeitsspeicher hat .
Dan Dascalescu
2

Bei unserer Arbeit denken wir, dass eine Partition ein besserer Ansatz ist, da eine Swap-Datei fragmentiert werden kann und die Fragmentierung den Swap-Zugriff verlangsamt. Das Definieren einer Swap-Datei mit statischer Größe funktioniert natürlich genauso, aber dies scheint subjektiv ordentlicher zu sein.

Ist dieser Ansatz der einzig wahre? Wahrscheinlich nicht, da die Praxis vor fast 10 Jahren gegründet wurde. Die einzige wesentliche Änderung in der Laufwerkstechnologie in den letzten Jahren ist die Komplexität der von uns verwendeten RAID-Controller (für SSDs sind wir noch nicht reich genug). Die Zunahme der Laufwerksgrößen bedeutet, dass die von uns erstellte Auslagerungspartition näher am Beginn des Laufwerks liegt als zu dem Zeitpunkt, als 18-GB-Laufwerke standardmäßig ausgeliefert wurden, sodass die Auslagerungsgeschwindigkeiten sogar noch höher sind als in früheren Zeiten.

Auf unseren ESX-basierten Windows-Systemen ist die Position der Auslagerungsdatei natürlich völlig umstritten. Es gibt so viele Virtualisierungsebenen zwischen der Auslagerungsdatei und den physischen Platten, dass es einfach keine Rolle spielt. Wir behalten es jedoch auf einer separaten Partition, da dies nur der Standard ist.

sysadmin1138
quelle
4
Eine Auslagerungsdatei wird nicht fragmentiert, da der Kernel einen direkten MMAP-Ansatz verwendet und die Datei niemals vergrößert oder verkleinert. +1 obwohl für Ihren Kommentar zur Virtualisierung: es spielt oft keine Rolle.
Parasietje
0

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

Abgesehen davon bezweifle ich, dass Sie jede vernünftige Leistung verlieren werden, außer vielleicht einmal in 1000-mal einen zusätzlichen Kopfsuchlauf.

Die komische Tatsache, dass die Verwendung von zswap zusammen mit einer dynamisch expandierenden Auslagerungsdatei zu einer beeindruckenden Beschleunigung von Auslagerungsvorgängen bei sehr geringen Kosten führt, wenn diese nicht verwendet werden.

Krasses Spektakel
quelle
1
Können Sie Ihre Ansprüche in irgendeiner Form begründen? Dies scheint eher anekdotisch.
Austin