sviluppo-web-qa.it

Quanto spazio SWAP su un sistema da 2-4 GB?

Come devo decidere quale dimensione effettuare il mio scambio su una nuova macchina Linux (Debian) con 2-4 GB di RAM? Ho davvero bisogno di spazio di scambio?

53
C. Ross

Esistono molti modi per capire quanto uso di swap in una macchina. Suggerimenti comuni utilizzano formule basate su RAM come 2 x RAM, 1,5 x RAM, 1 x RAM, .75 x RAM e .5 x RAM. Molte volte le formule sono variate a seconda del quantità di RAM (quindi una scatola con 1 GB di RAM potrebbe usare 2 x RAM swap (2 GB), mentre un scatola con 16 GB di RAM potrebbe usare 0,5 x RAM swap (8 GB).

Un'altra cosa da considerare è ciò per cui verrà utilizzata la scatola. Se hai un numero enorme di processi in esecuzione contemporaneamente in esecuzione sulla scatola, ma un numero significativo di essi rimarrà inattivo per periodi di tempo, quindi ha senso aggiungere ulteriore scambio. Se eseguirai un numero limitato di processi critici, aggiungere un ulteriore scambio ha senso (questo potrebbe sembrare controintuitivo, ma lo spiegherò tra un minuto). Se stai eseguendo una scatola come desktop, ha senso aggiungere ulteriore scambio.

Per quanto riguarda se si dovrebbe includere lo scambio, sì, è necessario. Dovresti sempre includere lo spazio di scambio a meno che tu davvero sappia cosa stai facendo e non ne hai davvero una buona ragione.

Vedi, come funziona il kernel Linux, lo swap non viene usato solo quando hai esaurito tutta la memoria fisica. Il kernel Linux prenderà le applicazioni che non sono attive (in sospensione) e dopo un periodo di tempo, sposta l'applicazione per passare dalla memoria reale. Il risultato è che quando hai bisogno di quell'applicazione, ci sarà un ritardo momentaneo (di solito solo un secondo o due) mentre la memoria dell'applicazione viene letta da swap a RAM. E questa è di solito una buona cosa.

Ciò consente di mettere le applicazioni inattive in "sospensione", consentendo alle applicazioni attive di accedere a RAM aggiuntiva. Inoltre, Linux utilizzerà qualsiasi disponibile (non allocato) RAM su una macchina come cache del disco, rendendo la maggior parte dell'attività (lenta) del disco più veloce e più reattiva. Lo scambio di processi inattivi ti dà più cache del disco e rende la tua macchina nel complesso più veloce.

Infine, ammettiamolo, lo spazio su disco è economico. Molto a buon mercato. Non c'è davvero alcun buon motivo per non strisciare uno spazio (relativamente) piccolo per lo scambio. Se avessi eseguito con 2 GB - 4 GB di RAM in una macchina, probabilmente avrei impostato il mio spazio di scambio in modo che fosse almeno uguale alla RAM. Se fosse inferiore a 2 GB di RAM, allora Continuerei con almeno 2 GB di swap.

AGGIORNAMENTO: Come menzionato un eccellente commento (e ho dimenticato di includere), se stai usando un laptop o un desktop che potresti voler mettere in modalità 'ibernazione' (Sospendi su disco), allora tu sempre desidera almeno lo scambio di quanto hai memoria. Lo spazio di scambio verrà utilizzato per archiviare il contenuto di RAM nel computer mentre "dorme".

54

Red Hat raccomanda la seguente formula per server con un sacco di RAM:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Se il tuo sistema ha 1 GB di RAM, lo swap sarebbe di 2 GB, per 16 GB sarebbe 18 GB.

17
PEra

Risposta in ritardo, e penso che questo sia stato praticamente coperto dalla risposta selezionata, ma ci sono alcune informazioni buone e facilmente digeribili nella risposta fornita da @ssapkota qui (copia/incollata di seguito).

Ecco una buona raccomandazione di RedHat: Spazio di scambio del sistema consigliato

Un estratto dallo stesso link:

Negli anni passati, la quantità raccomandata di spazio di swap è aumentata linearmente con la quantità di RAM nel sistema. Ma poiché la quantità di memoria nei sistemi moderni è aumentata in centinaia di gigabyte, ora è riconosciuto che la quantità di spazio di swap di cui un sistema ha bisogno è una funzione del carico di lavoro della memoria in esecuzione su quel sistema, tuttavia, dato che lo spazio di swap è generalmente designato al momento dell'installazione e che può essere difficile determinare in anticipo il carico di lavoro della memoria di un sistema , si consiglia di determinare lo scambio del sistema utilizzando la tabella seguente.

Tabella attuale (a dicembre 2012):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Tavolo originale:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 
12
ubiquibacon

Dipende abbastanza da cosa ci stai facendo. Con il carico di lavoro appropriato, in realtà non è necessario alcuno spazio di swap, sia che si disponga di 16 MB o 16384 MB di RAM; in effetti la maggior parte dei dispositivi Linux incorporati funziona senza alcun (a cosa cambieranno?)

Considerando i prezzi di RAM, probabilmente non utilizzerai lo swap per il calcolo attivo. Quindi, cosa rimane?

  1. Sui desktop, lo spazio di scambio viene utilizzato per la sospensione su disco. Questo spazio di scambio deve essere di circa 1 × RAM, a seconda della compressione del contenuto della memoria.
  2. Consentire la rimozione di attività inattive da RAM per fare più spazio per la cache del disco
  3. Lo stesso, ma per consentire ai processi attivi di usarlo invece per heap/stack

(2) e (3) dipendono fortemente dal carico di lavoro. Sui miei desktop, posso facilmente usare 4 GB + su (2), lasciando vims, xterm, ecc. In esecuzione su altri desktop.

Sulla maggior parte dei server che eseguo, non c'è quasi mai nulla di scambiato e 1–2GB di scambio (indipendentemente da RAM importo) sembra OK.

8
derobert

Bene, dipende da quali servizi e applicazioni si prevede di eseguire. Puoi controllare l'utilizzo della memoria con free -m e regolare la partizione di swap di conseguenza nel tempo.

Ecco un discussione interessante sull'argomento. Personalmente (e dopo aver letto quella discussione) lascerei comunque circa 1 GB per lo scambio.

4
Ivan

Lo spazio di swap può fungere da "riempimento" quando altrimenti si esaurirebbe immediatamente la memoria.

Quando un processo consuma tutto il RAM disponibile e in alcuni casi la macchina funzionerà molto lentamente, ma di solito sarai in grado di recuperare. Sarà anche più facile vedere quale processo sta causando il problema.

2
starblue

Non posso parlare direttamente con Debian, ma so che quando si sale su 2 GB di RAM, l'equazione originale 2xRAM cambia, di solito fino a 1xRAM. Penso che una volta colpito 16 GB RAM il suggerimento si abbassa di nuovo a .75xRAM.

Naturalmente, l'ho trovato vero per Solaris, ed è in realtà la metrica utilizzata per le installazioni Oracle, quindi YMMV a seconda delle app che verranno eseguite lì.

2
Milner

Faccio sempre lo swap (almeno) della RAM. Nel caso in cui volessi ibernare la macchina un giorno. Può funzionare con meno, ma potrebbe anche non farlo.

Oggigiorno lo spazio su HDD è economico, quindi non esito a regalare spazio di swap.

2
Martin C.

Nel corso degli anni ho seguito la regola secondo cui per le macchine Windows hai tanto scambio quanto la RAM ... Su Novell potremmo ottimizzare lo scambio se avessimo più stampanti ... Per Linux la regola e la pratica per me sono state di 1 GB scambiare per ogni 2 GB RAM che hai. E lo metti nella parte anteriore del disco in modo da accedervi più velocemente.

  • Se si tratta di un gateway di posta/spam, uso il doppio dello swap su RAM
  • Se è un * server non uso affatto lo swap
  • se si tratta di un server LAMP è attiva la regola 1/2.

  • Il chilometraggio varia in base all'utilizzo dell'applicazione e della GUI.

1
Thomas Denton

Uso solo un piccolo token swap (di solito 256 MB, ma ho anche fatto 64 MB) perché la configurazione di un sistema con zero swap richiede una configurazione speciale.

Lo spazio su disco è economico, ma slooooooooow. Non appena il sistema inizia a scambiare, le prestazioni sono zero. E RAM non è più così costoso.

Fidati di me, acquista un processore leggermente più lento e acquista più RAM. 2,8 GHz anziché 3,0 GHz ti faranno risparmiare abbastanza denaro per acquistare almeno 2 GB di RAM, almeno.

0
Maneesh Kasera

Creo 1 GB di swap e acquisto più RAM il secondo in uso. In realtà non è necessario lo scambio su computer moderni, RAM è così economico.

0
Adam Gibbins

Per cosa stai usando il sistema? Personalmente non uso alcuno scambio. Se qualcosa usa un token da 512 MB o qualcosa del genere in modo che le cose possano essere messe su disco se residenti ma inattive per lunghi periodi.

0
Mike McQuaid