Esiste una dimensione massima alla quale può funzionare un file di scambio?


8

Per quanto ne so, il limite teorico per un file di scambio è follemente grande a seconda che venga utilizzato un sistema a 32 bit o 64 bit.

Ho creato un file di scambio da 16 GB su un sistema a 64 bit RAM da 4 GB con specifiche altrimenti di media bassa, perché ho spazio più che sufficiente sul mio HDD interno da 1 TB ...

Ma l'ampio file di scambio fa davvero la differenza in termini di velocità / prestazioni?



2
IMO se usi swap hai davvero bisogno di più RAM, non di un file di scambio più grande
Panther

1
se si utilizzano HDD, è necessario utilizzare zram e ridurre la priorità degli swap HDD. E una partizione di swap così grande non aiuterà, perché dal tipo che usi come lo swap da 4 GB il tuo sistema è stato lento a una scansione
phuclv,


Per quanto ricordo un file di scambio consumerà una certa quantità di RAM fisica (penso che meno dell'1% della dimensione del file di scambio). Quindi avere un file di scambio eccessivamente grande potrebbe danneggiare le prestazioni a causa del consumo di memoria. Ma per un file di scambio di dimensioni ragionevoli, questo non sarà un problema.
Kasperd,

Risposte:


7

Puoi avere fino a 32 aree di scambio (file o partizioni) con fino a ~ 4 miliardi (2 ^ 32) pagine ciascuna, in cui una "pagina" è 4kB su un sistema tradizionale (ad esempio x86 o x86_64) ma può essere più grande su altri architetture o se hai configurato pagine di grandi dimensioni appositamente.

Ciò fornisce un massimo teorico di 16 TB per area di swap e fino a 32 aree di swap. Potrebbero esserci altre limitazioni da applicare prima di raggiungere questo obiettivo, ma questa è un'area di swap tanto grande che mkswappuò creare per te.

Quanto a quanto vuoi, qualsiasi area di swap oltre il massimo che effettivamente usi non contribuisce alle prestazioni o alla stabilità del sistema. Il trucco è stimare la quantità massima di utilizzo che si verificherà in una situazione normale o addirittura anormale e usarla come dimensione del file di scambio e non di più.

Al momento della scrittura, è molto improbabile che venga utilizzato uno spazio di scambio maggiore di circa 4 GB rispetto alla dimensione della memoria fisica, a meno che il sistema non sia molto anormale. Su un sistema tipico come un sistema desktop utilizzato da una persona alla volta, puoi probabilmente fermarti al massimo da 6 GB a 8 GB anche se la tua memoria fisica è maggiore.


6

Non fa alcuna differenza in termini di velocità o prestazioni. Ti consente solo di utilizzare fino a 20 GB di memoria virtuale prima che il killer OOM inizi a uccidere i processi per recuperare la memoria.

Se vuoi prestazioni migliori:

  • diminuisce swappinessse non usi più di 4 GB di così spesso
  • aggiungi RAM
  • passare a un SSD e inserire il file di scambio su di esso

Se si arriva spesso al punto di dover sostituire i blocchi di memoria, un SSD a causa della loro architettura e dei cicli di scrittura limitati non è la strada da percorrere perché può facilmente utilizzare i cicli di scrittura dell'SSD molto rapidamente. Se ti capita solo occasionalmente di aver bisogno di memoria di scambio, gli SSD vanno bene.
Videonauth,

11
@Videonauth: "Utilizza facilmente i cicli di scrittura dell'SSD molto rapidamente": qualsiasi tipo di SSD moderno decente può sostenere la piena capacità dell'SSD giorno dopo giorno per anni . Il tuo consiglio potrebbe essere stato corretto nel 2010, ma non è aggiornato. Anche un SSD 840 Samsung da 256 GiB di livello consumer può sostenere la scrittura di 100 GiB al giorno per oltre 2 anni.
AlexP,

Se disponi di molta RAM, la riduzione della swappiness fa ancora meno differenza rispetto a una RAM limitata. In realtà l'installazione di molta RAM rende qualsiasi altra modifica per lo scambio ridondante se è sufficiente per evitare lo scambio. Mantieni una partizione di swap per stabilità "per ogni evenienza", il 99,9% delle volte non verrà utilizzata e manterrai grandi prestazioni.
thomasrutter,

1
Inoltre, la cosa sui cicli di scrittura SSD limitati è stata falsa per oltre un decennio, è davvero tempo che questo FUD debba essere chiamato. Mi dispiace che questo commento sia così ridondante dato che AlexP lo ha già affrontato, ma sottolinea. Gli SSD sono grandi per le applicazioni di scrittura-pesante.
thomasrutter,

1
Il livellamento dell'usura negli SSD è diventato una cosa del 2008 ( articolo del 2008 | Articolo Anandtech del 2009 ). "I laptop ai normali prezzi al consumo sono addirittura arrivati ​​con gli SSD nel 2008" diamine no, gli SSD erano pazzeschi e costosi.
thomasrutter,

3

Secondo la risposta di Gilles

... C'era un limite di dimensioni di scambio di 2 GB (sulla maggior parte delle piattaforme a 32 bit), ma questo non è stato il caso per anni. La limitazione è stata rimossa ad un certo punto nella serie del kernel 2.2.

Inoltre, cita la pagina man per mkswap:

La dimensione utile massima di un'area di scambio dipende dall'architettura e dalla versione del kernel.

Nella libreria linux / swap.h c'è una MAX_SWAPFILESvoce, quindi c'è un limite al numero di file di scambio a livello di kernel, ma a quanto pare non è nemmeno un'area definitiva. Secondo il documento collegato:

Va notato che i sei bit per "tipo" dovrebbero consentire l'esistenza di fino a 64 aree di scambio in un'architettura a 32 bit invece della restrizione MAX_SWAPFILES di 32

Il che capisco ha un massimo di 64 file di scambio sulle architetture a 32 bit. Tuttavia, nel documento non ho notato ciò che accadrebbe sull'architettura a 64 bit. Vale anche la pena notare che, in questo caso , gli sforzi di OP per creare file di scambio non sono riusciti alla 30a voce.

Per quanto riguarda le partizioni di swap, non sembra esserci alcun limite nel kernel, oltre alle costanti precedentemente menzionate, ma il numero di qualsiasi partizione sarebbe comunque limitato dal BIOS e dal layout del disco sottostanti .


2

Questa risposta potrebbe non essere appropriata per Ubuntu 18.04 (grazie a @Chai T. Rex per averlo sottolineato nei commenti).

Ad ogni modo per le versioni precedenti, eccolo qui (non è ancora stato proposto alcun aggiornamento LTS> LTS, quindi potrebbe essere ancora rilevante):

Non è un file, è una partizione e sì lo fa a causa della swappiness

Il parametro swappiness controlla la tendenza del kernel a spostare i processi dalla memoria fisica al disco di swap. Poiché i dischi sono molto più lenti della RAM, ciò può portare a tempi di risposta più lenti per il sistema e le applicazioni se i processi vengono spostati dalla memoria in modo troppo aggressivo.

Quindi sostanzialmente se la partizione di swap è molto più grande della RAM che hai, il sistema tenderà a scambiare di più, causando una lentezza generale.


4
Ora ci sono file di scambio e sono quelli predefiniti (anziché partizioni) quando si installa 18.04 da zero.
Chai T. Rex,

1
Suppongo che il comportamento di swap rimanga praticamente lo stesso, indipendentemente dal fatto che sia supportato da una partizione o da un file. Puoi anche avere più file di swap e / o partizioni contemporaneamente. Ad ogni modo, non penso che più swap avrebbe un effetto negativo mentre rimane ancora abbastanza RAM.
Byte Commander

Suppongo lo stesso, ma fino a quando non ci metterò le mani sopra, questo è solo un presupposto selvaggio
dadexix86,

Ci sono partizioni di scambio e ci sono file di scambio. Le partizioni di swap possono essere utilizzate da due o più installazioni Linux sullo stesso PC (doppio avvio o triplo avvio). Le partizioni di swap sono migliori in caso di disco intero in cui il file di scambio potrebbe essere creato frammentato. ... I file di scambio funzioneranno bene come le partizioni di scambio se vengono creati su dischi non completi per evitare la frammentazione - Devon van Schoor j
Devon van Schoor

2

Non c'è molta differenza nella velocità o nelle prestazioni quando si aumenta arbitrariamente la partizione di swap.

Esistono diversi fattori correlati allo scambio che possono influire sulle prestazioni come swappinesse sul tipo di disco rigido (SDD o HDD).

Lo scambio è piuttosto lento e l'aumento della swapiness riduce le prestazioni. Tuttavia ha effetto solo se non c'è abbastanza RAM. Ma è meglio che non avere alcuno scambio. La mia raccomandazione è di aumentare le dimensioni della partizione di swap due volte più della RAM.


5
tale raccomandazione è obsoleta. I sistemi moderni con 32 o 64 GB di RAM non avranno bisogno di 64 o 128 GB di scambio
phuclv,

3
@ LưuVĩnhPhúc Non vorrei usare più di 2 GB di swap in questi giorni ...
el.pescado,

2 GB sembrano molto bassi ... le macchine virtuali oi giochi potrebbero davvero riempire più di 2 GB di swap molto rapidamente. Penso che da 4 a 8 GB di swap funzionino bene con qualsiasi quantità di RAM. Se hai bisogno di più di 8 GB, probabilmente dovresti aggiungere più RAM.
Germain,

0

Arrivo al fatto che un file di scambio o una partizione di scambio praticamente non hanno limiti. Inoltre, il mio file di scambio da 16 GB è piuttosto grande ma la dimensione non influisce sulla velocità.

Tuttavia, ciò che raccolgo è che ciò che influenza la velocità è il sistema che utilizza effettivamente quello spazio di swap rispetto all'hardware fisico.

La mia soluzione è quella di rendere un valore di swapiness elevato in modo che lo swap non sia eccessivamente utilizzato rispetto all'hardware più veloce. così ho fatto:

sudo -s
nano /etc/sysctl.conf

Aggiunto al file:

#vm.swappiness = 50

Salva

sudo sysctl -p

per aggiornare (o potrebbe aver appena riavviato)


L'aggiunta della linea #vm.swappiness = 50a /etc/sysctl.confnon ha alcun effetto, il primo #rende questa riga un commento, rimuovila. Puoi controllare lo swappiness con cat /proc/sys/vm/swappiness.
mook765,

Ma il metodo che ho descritto ha funzionato. Quando inserisco [cat / proc / sys / vm / swappiness] ottengo 50 come output
Devon van Schoor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.