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?
Antworten:
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.
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.
quelle
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.
quelle
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
quelle
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.
quelle
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.
quelle
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.
quelle