Vraag partitie vs bestand ruilen voor prestaties?


Wat is beter voor prestaties? Een partitie dichter bij de binnenkant van de schijf heeft langzamere toegangstijden en we moeten wachten totdat de schijf tussen het besturingssysteem wisselt en partities verwisselt.

Aan de andere kant omzeilt een swappartitie het hele bestandssysteem om rechtstreeks naar de schijf te schrijven, wat sneller kan zijn dan een bestand.

Wat is de prestatievermelding?

Hoeveel maakt het verschil uit om een ​​swapbestand van vaste grootte te hebben?

Is het een feit dat het langer zal duren om naar de swap-partitie te gaan, maar de prestaties zullen beter zijn als het op de swap-partitie is dat het een swap-bestand was geweest?


53
2018-06-15 03:06


oorsprong


Gewoon uit nieuwsgierigheid. Kun je systeemdetails verstrekken zoals kernelversie, RAM, partitie en bestandssysteemschema? - Viky
Op welk OS zoek je? - Mathieu Chateau
Zie voor informatie over Linux lkml.org/lkml/2005/7/7/326 - Adam Monsen


antwoorden:


Het maakt eigenlijk niet zoveel uit zolang je het niet gebruikt schaarse bestanden.

Als u een "normaal" bestand met dd maakt, wordt het bestand (indien mogelijk) in één keer toegewezen, terwijl u bij het maken van een schaars bestand te weten komt dat er een bestand van 10 GB rondslingert, maar niet echt alle ruimte opgebruikt. Ik weet niet zeker of mkswap de ruimte toch niet zal toewijzen, maar een swapbestand zal in de loop van de tijd groeien en zal dus geen continue sector (zoals in een deel van de schijf) toewijzen, maar eerder blokken toewijzen waar nodig, wat leidt tot fragmentatie in de loop van de tijd (uiteraard afhankelijk van uw gebruik van de schijf)

Intern zal de Linux-kernel min of meer rechtstreeks toegang krijgen tot de onderliggende blokken van een swapbestand - ik kan de link nu niet vinden wat er gebeurt onder de motorkap, je moet me hierop vertrouwen tenzij iemand iets meer officieel vindt. Ik kan nu alleen maar verzinnen:

dit is alleen van toepassing op de 2.6-regel van Linux-kernels.

Als je optimale prestaties wilt (en wat is dat eigenlijk? ... wisselen is traag, punt. Verhoog de RAM zodat je niet ruilt voor het beste prestaties), zou u een partitie willen gebruiken.


22
2018-06-15 08:28



Moderne versies van swapon zullen ronduit weigeren om te werken met dunne bestanden die zijn geformatteerd als ruil, met het argument dat het bestand gaten bevat. - Tim Post♦


  1. Op harde schijven is de doorvoer en het zoeken vaak sneller naar het begin van de schijf, omdat die gegevens dichter bij het buitenste gebied van de schijf worden opgeslagen, met meer sectoren per cilinder. Dus het maken van de swap aan het begin van de schijf kan de prestaties verbeteren.

  2. Voor een 2.6 Linux-kernel is er geen prestatieverschil tussen een swappartitie en een gefragmenteerde wissel bestand. Wanneer een swappartitie / bestand is ingeschakeld door swapon, de 2.6-kernel vindt op welke schijfblokken het swapbestand is opgeslagen, zodat wanneer het tijd is om te wisselen, het helemaal niets te maken heeft met het bestandssysteem.

Dus als het swapbestand niet gefragmenteerd is, is het precies alsof er een swappartitie op dezelfde locatie is. Of anders gezegd, je zou identieke prestaties krijgen als je een swap-partitie onbewerkt zou gebruiken, of geformatteerd zou hebben met een bestandssysteem en dan een swap-bestand zou hebben gemaakt dat alle ruimte zou vullen, omdat beide manieren op die schijf er een aaneengesloten regio is die gebruikt wordt voor ruilen, die de kernel rechtstreeks gebruikt.

Dus als iemand het wisselbestand aanmaakt wanneer het bestandssysteem vers is (om er zeker van te zijn dat het niet gefragmenteerd is en aan het begin van het volume), moet de uitvoering identiek zijn aan het hebben van een wisselpartitie net voor het volume. Verder, als iemand het wisselbestand in het midden van het volume creëert, met bestanden aan beide kanten, zou men betere prestaties kunnen krijgen, omdat er minder willen ruilen.

Op Linux, als het swapbestand niet gefragmenteerd is gemaakt en nooit is uitgebreid, kan het niet gefragmenteerd raken, althans niet met normale bestandssystemen zoals ext3 / 4. Het zal altijd dezelfde schijfblokken gebruiken, die aaneengesloten zijn.

Ik concludeer dat over het enige voordeel van een speciale swappartitie gegarandeerde unfragmentatie is wanneer je het moet uitbreiden; als uw swap nooit wordt uitgebreid, heeft een bestand dat is gemaakt op een nieuw bestandssysteem geen extra partitie nodig.


21
2018-06-07 13:48



Het enige dat u hier moet toevoegen, is dat als uw machine is geconfigureerd om te "pauzeren naar schijf" wat er feitelijk gebeurt, is dat spullen in het geheugen worden geschreven om te wisselen. Om dit te laten werken, moet de swap zich op zijn eigen partitie bevinden omdat de swap zich niet op een actief bestandssysteem kan bevinden om dit te laten gebeuren. Daarom, als je een server hebt, gebruik je deze functie waarschijnlijk niet en zou je graag een wisselbestand gebruiken. Als u een laptop hebt, wilt u waarschijnlijk een swappartitie zodat u de slaapstand kunt onderbreken. - Nathan S. Watson-Haigh
@ NathanS.Watson-Haigh Wat gebeurt er met de gegevens die al in ruil zijn? Het kan niet worden weggegooid. - XTF
@ NathanS.Watson-Haigh Kunt u een bron koppelen? Ubuntu 17.04 gebruikt standaard een wisselbestand. Het zou verrassend zijn als het niet kon "opschorten naar schijf". - Matthias Weiler


Ik denk dat in het stadium waarin we ons nu bevinden, tenzij je een laptop gebruikt met een configuratie die de gegevens naar de swap schrijft wanneer deze opschort / slaapt, moet swap echt als "laatste redmiddel" worden beschouwd. Je kunt het beste doen om genoeg RAM in een doos te plaatsen, zodat deze nooit naar de schijf gaat.

Dat gezegd hebbende, een partitie is waarschijnlijk de betere manier, qua prestaties, hoewel een bestand flexibeler is. Zorg er gewoon voor dat het op een spil van 7200+ RPM staat.


3
2018-06-15 03:21



Waarom zou een partitie beter prestatiegericht zijn, wanneer toegangstijden meer een factor kunnen zijn voor vertraging? - Bill Gray
Omdat het gebruik van een bestand meer hoofdbewegingen kan vereisen, omdat bij het vinden van de pagina om te lezen / schrijven de gegevens zich overal in het bestandssysteem kunnen bevinden, zodat fs-structuren mogelijk moeten worden doorzocht, terwijl bij een swappartitie elke pagina op een bekende locatie binnen de partitie. Dit maakt de toegangstijd (afhankelijk van de bulkdoorvoer) een onderscheidende factor. - David Spillett
"Configureer geen swap, tenzij u in de slaapstand moet" is een controversiële weergave. Soms kan het systeem herstellen wanneer het systeem bijna leeg is. Het niet hebben van een swap kan je beperken tot het uitvoeren van programma's die enorme geheugentoewijzingen maken, maar het meeste ervan niet aanraken (bijvoorbeeld bepaalde foutopsporingstools). Soms wordt een bezet maar niet-actief geheugengebied beter gebruikt als schijfcache en kan die afweging alleen worden gedaan als er een wissel beschikbaar is. Zien unix.stackexchange.com/questions/2658/... ter discussie. - Anon


Dit is een interessante vraag en heb veel gelezen over hetzelfde. Over het algemeen is een swappartitie beter dan een bestand vanwege het onderliggende bestandssysteem. Maar als u altijd de omvang van uw swap wilt vergroten, dan is het bestand een betere optie. Tot kernel 2.4 werd aangenomen dat een swappartitie sneller is dan een bestand, maar nu met de verbeteringen van kernel 2.6, zijn de uitvoeringen bijna hetzelfde.

Iets dat ik ook op internet heb gevonden.

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

en

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


3
2018-06-15 03:27



Geen van deze links legt echter de redenen achter hun beslissingen uit. - Bill Gray
De redenering is dat het bestand het onderliggende bestandssysteem overbelast. Als u een bestand maakt, kan dit fragmenged zijn. en afhankelijk van het bestand dat bij het ruilen in de cache wordt opgeslagen, kunnen de leesbewerkingen traag zijn in vergelijking met een gehele partitie, die op zichzelf een verwisselbaar bestandssysteem is. - Viky
Probeerde verder te graven en vond een relatief artikel op wiki. Om u te helpen zijn er slechts enkele swap-afstemmingsparameters die u kunt controleren. Bekijk ook de uitleg bij de implementatie voor Linux. Kan helpen. en.wikipedia.org/wiki/Paging - Viky
Volgde een van de citaten op de bovengenoemde wiki-link en vond een interessante discussie over hetzelfde onderwerp. Misschien wil ik dat controleren. lkml.org/lkml/2005/6/28/427 - Viky
Ik noemde de overbelasting van het bestandssysteem in mijn vraag, maar het is niet zozeer een prestatieblok als het hebben van een partitie dichtbij de binnenste schijf. Die vertraging zou geweldig zijn dan de overhead van het bestandssysteem. - Bill Gray


Het denken bij ons werk is dat, aangezien een Swap-bestand gefragmenteerd kan raken en fragmentatie de swap-toegang vertraagt, een partitie een betere benadering is. Natuurlijk, het definiëren van een statisch formaat swap-bestand doet vrijwel hetzelfde, maar dit lijkt subjectief netter.

Is deze benadering de enige echte manier? Waarschijnlijk niet, omdat de praktijk bijna 10 jaar geleden werd gevestigd. De enige grote verandering in aandrijftechnologie in de tussenliggende jaren is de complexiteit van de RAID-controllers die we gebruiken (we zijn nog niet rijk genoeg voor SSD's). De toename in schijfformaten betekent dat de swappartitie die we maken dichter bij het begin van de schijf is dan toen de 18 GB-schijven standaard werden verzonden, dus de swapsnelheden zijn zelfs sneller dan in vroegere tijden.

Natuurlijk, op onze ESX-gebaseerde Windows-systemen is de positie van het wisselbestand volledig, volledig onbruikbaar. Er zijn zoveel lagen virtualisatie tussen het swap-bestand en de fysieke disk platters dat het er gewoon niet toe doet. Maar we houden het op een aparte partitie omdat dat gewoon de standaard is.


2
2018-06-15 05:12



Een swap-bestand wordt niet gefragmenteerd, omdat de kernel een directe mmap-benadering gebruikt en nooit zal groeien of krimpen. +1 voor uw opmerking over virtualisatie: het maakt vaak niet uit. - parasietje


Het gebruik van een wisselbestand kan een beetje extra geheugen gebruiken voor de vertaling van het bestand naar het geheugen. We hebben het over minder dan 1 MB geheugen per 1 GB-swap. De cache van het bestandssysteem cache NIET verwisselde gegevens, alleen de organisatiegegevens, die de meeste extra geheugenvereisten zouden moeten zijn.

Daarnaast betwijfel ik of je elke redelijke prestatie verliest behalve misschien eens in een 1000 keer een enkele extra hoofdzoekactie.

Grappig feit is dat het gebruik van zswap samen met een dynamisch uitdijend wisselbestand resulteert in een indrukwekkende versnelling van de swap-operaties tegen zeer lage kosten terwijl ze ongebruikt zijn.


0
2017-07-14 16:22



Kunt u uw claims rechtvaardigen? Dit lijkt nogal anekdotisch. - austinian