sviluppo-web-qa.it

scambia partizione vs file per prestazioni?

Cosa è meglio per le prestazioni? Una partizione più vicina all'interno del disco avrà tempi di accesso più lenti e dobbiamo attendere che l'unità passi tra il sistema operativo e le partizioni di swap.

D'altra parte, una partizione di swap ignora tutto il filesystem consentendo le scritture direttamente sul disco, che può essere più veloce di un file.

Qual è il compromesso delle prestazioni?

Quanto fa la differenza avere un file di scambio di dimensioni fisse?

È un caso che sarà più lungo passare alla partizione di swap, ma le prestazioni saranno migliori mentre è sulla partizione di swap che se fosse stato un file di swap?

67
Bill Gray
  1. Sui dischi rigidi, la velocità effettiva e la ricerca sono spesso più veloci verso l'inizio del disco, poiché i dati vengono archiviati più vicino all'area esterna del disco, che ha più settori per cilindro. Pertanto, la creazione dello swap all'inizio del disco potrebbe migliorare le prestazioni.

  2. Per un kernel Linux 2.6, non c'è differenza di prestazioni tra una partizione di swap e un non frammentato file di scambio. Quando una partizione/file di swap è abilitato da swapon, il kernel 2.6 trova su quale disco è archiviato il file di swap , così che quando arriva il momento di scambiare, non deve occuparsi del filesystem affatto.

Pertanto, se il file di scambio non è frammentato, è esattamente come se ci fosse una partizione di scambio nella stessa posizione. In altre parole, otterresti prestazioni identiche se utilizzassi una partizione di swap grezza o la formattassi con un filesystem e poi creassi un file di scambio che riempiva tutto lo spazio, poiché in entrambi i dischi c'è un'area contigua utilizzata per lo scambio, che il kernel usa direttamente.

Quindi, se si crea il file di scambio quando il filesystem è aggiornato (assicurandosi così che non sia frammentato e all'inizio del volume), le prestazioni dovrebbero essere identiche ad avere una partizione di swap appena prima del volume. Inoltre, se si creasse il file di scambio dire nel mezzo del volume, con file su entrambi i lati, si potrebbero ottenere prestazioni migliori, dal momento che si cerca meno di scambiare.

Su Linux, se il file di scambio viene creato non frammentato e mai espanso, non può essere frammentato, almeno con normali filesystem come ext3/4. Userà sempre gli stessi blocchi del disco, che sono contigui.

Concludo che l'unico vantaggio di una partizione di swap dedicata è la non frammentazione garantita quando è necessario espanderla; se lo swap non verrà mai espanso, un file creato su un nuovo filesystem non richiede una partizione aggiuntiva.

33
Shay

In realtà non fa molta differenza finché non si usa file sparsi .

La creazione di un file "normale" con dd alloca il file (se possibile) in una sola esecuzione, mentre la creazione di un file sparse ti dirà che hai un file da 10 GB in giro ma che in realtà non occupa tutto lo spazio. Non sono del tutto sicuro che mkswap non alloca comunque lo spazio, ma in genere un file di swap cresce nel tempo e quindi non alloca un settore continuo (come parte del disco) ma alloca i blocchi secondo necessità che portano a frammentazione nel tempo (ovviamente a seconda dell'utilizzo del disco)

Internamente il kernel Linux accederà ai blocchi sottostanti di un file di scambio più o meno direttamente - non riesco a trovare il link in questo momento cosa succede sotto il cofano, devi fidarti di me su questo a meno che qualcuno non trovi qualcosa di più ufficiale. Tutto quello che posso venire in questo momento è:

questo vale solo per la linea 2.6 di kernel Linux.

Se vuoi prestazioni ottimali (e che cos'è, davvero? ... lo scambio è lento, punto. Aumenta RAM in modo da non scambiare per migliore prestazione), vorresti usare una partizione.

25
serverhorror

Questa è una domanda interessante e ho letto molto sulla stessa cosa. Generalmente una partizione di swap è migliore di un file a causa del filesystem sottostante. Ma se hai sempre bisogno di aumentare le dimensioni del tuo swap, il file è un'opzione migliore. Fino al kernel 2.4 è stato considerato che una partizione di swap è più veloce di un file, ma ora con i miglioramenti del kernel 2.6, le prestazioni sono quasi le stesse.

Qualcosa che ho trovato anche su Internet.

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

e

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

3
Viky

Penso che allo stadio siamo adesso, a meno che tu non stia eseguendo un laptop con una configurazione che scriva i dati sullo swap quando sospende/dorme, lo swap dovrebbe davvero essere considerato "ultima risorsa". La tua scommessa migliore è mettere abbastanza RAM in una scatola in modo che non scorra mai sul disco.

Detto questo, una partizione è probabilmente il modo migliore, per quanto riguarda le prestazioni, sebbene un file sia più flessibile. Assicurati solo che si trovi su un mandrino da 7200 giri/min.

2
Matt Simmons

L'idea sul nostro lavoro è che dal momento che un file Swap può diventare frammentato e la frammentazione rallenta l'accesso allo scambio, una partizione è un approccio migliore. Naturalmente, definire un file di scambio di dimensioni statiche fa la stessa cosa, ma questo sembra soggettivamente più ordinato.

Questo approccio è l'unico vero modo? Probabilmente no, poiché la pratica è stata stabilita quasi 10 anni fa. L'unico grande cambiamento nella tecnologia di azionamento negli anni successivi è la complessità dei controller RAID che utilizziamo (non siamo ancora abbastanza ricchi per gli SSD). L'aumento delle dimensioni dell'unità significa che la partizione di swap che creiamo è più vicina all'inizio dell'unità di quanto non fosse quando le unità da 18 GB erano in dotazione standard, quindi le velocità di scambio sono persino più veloci di quanto non fossero in passato.

Ovviamente, sui nostri sistemi Windows basati su ESX, la posizione del file di scambio è completamente, completamente discutibile. Esistono così tanti livelli di virtualizzazione tra il file di scambio e i piatti del disco fisico che non importa. Ma lo manteniamo su una partizione separata perché è solo lo standard.

2
sysadmin1138

L'uso di un file di scambio potrebbe usare un po 'di memoria in più per la traduzione da file a memoria. Stiamo parlando di meno di 1 MB di memoria per 1 GB di swap. La cache del file system NON memorizza nella cache i dati scambiati, solo i dati dell'organizzazione, che dovrebbero essere la maggior parte dei requisiti di memoria extra.

Oltre a ciò, dubito che perderai qualsiasi prestazione ragionevole, tranne forse una volta ogni 1000 volte in una singola ricerca di testa aggiuntiva.

Fatto curioso, l'uso di zswap insieme a un file di scambio in modo dinamico si traduce in un'incredibile accelerazione delle operazioni di scambio a costi molto bassi mentre non viene utilizzato.

0
Crass Spektakel