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


53

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?


3
2-4 GB non sono più memoria molto alta 5 anni dopo.
finanza fifi,

@KasperSouren No, non lo è. Era un importo equo al momento.
C. Ross,

Risposte:


54

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 della quantità di RAM (quindi una scatola con 1 GB di RAM potrebbe usare 2 x RAM swap (2 GB), mentre una 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 swap a meno che tu non sappia davvero cosa stai facendo e non hai davvero una buona ragione per farlo.

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 RAM disponibile (non allocata) 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 complessivamente più veloce.

Infine, ammettiamolo, lo spazio su disco è economico. Davvero economico. 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 swap almeno uguale alla RAM. Se fosse inferiore a 2 GB di RAM, continuerei comunque con almeno 2 GB di scambio.

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


22
Ottima risposta, ma hai dimenticato solo una cosa. Se è un desktop o un laptop, assicurati che lo swap sia almeno grande quanto la RAM che hai in modo da poter ibernare il tuo computer. Ciò consente di risparmiare memoria RAM da scambiare.
Sander Marechal,

4
Ottimo post. Sander mi ha battuto all'unica cosa che volevo aggiungere. Ho pensato a un elemento aggiuntivo, se si dispone di più unità, inserendo lo swap in un'unità che non ha il resto dei file system attivi è possibile migliorare le prestazioni in quanto non avrà tanti conflitti.
GreenKiwi,

come ho scoperto la scorsa estate, è necessario disporre di uno spazio di scambio sostanziale se si esegue Java
warren,

Se l'utente ha una quantità di RAM molto maggiore di quella che utilizzerà effettivamente (16 GB / 32 GB) su un computer desktop uptime al 100% (senza ibernazione), suggerisci comunque di richiedere che i processi vengano messi su SWAP? Mi sembra che ci sarebbero dei vantaggi nel lasciare tutto su RAM a meno che non ti avvicinassi mai alla sua capacità.
earthmeLon

1
@earthmeLon - Suggerirei di avere ancora un po 'di scambio. I dischi sono grandi ed economici in questi giorni, quindi la perdita di pochi GB di spazio su disco da scambiare è trascurabile. Avere un po 'di spazio di swap ti dà una polizza assicurativa nel caso in cui qualcosa consuma più RAM di quanto ti aspetti.
Christopher Cashell,


12

Risposta tardiva, 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 / incolla sotto).

Ecco una buona raccomandazione di RedHat: spazio di scambio di sistema consigliato

Un estratto dallo stesso link:

Negli anni passati, la quantità raccomandata di spazio di swap è aumentata in modo lineare con la quantità di RAM nel sistema. Ma poiché la quantità di memoria nei sistemi moderni è cresciuta 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 scambio è 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 di 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 

8

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 della 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 dalla 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–2 GB di swap (indipendentemente dalla quantità di RAM) sembra OK.


lo spazio di swap viene utilizzato anche se si esegue qualcosa che utilizza JVM: non chintz e dimenticare di allocare spazio di swap se si esegue Java!
Warren,

@warren: ho istanze Tomcat, ognuna in eccesso di 3GiB, ma senza utilizzo di swap (e una sta usando hugepages, e quindi non può essere scambiata). Non sono sicuro di cosa stai parlando.
derobert,

c'è un bug semi-oscuro nella JVM relativo alle impostazioni di memoria minima e massima che ho incontrato la scorsa estate ( antipaucity.com/?p=984 ). TL; DR - ogni volta che la JVM richiede più memoria dal sistema operativo, si scrive per scambiare, ottiene il suo nuovo blocco di memoria, quindi si rilegge nella RAM in modo che la sua memoria sia contigua
warren

@warren: OK, sto eseguendo OpenJDK su 64 bit, con Xmx e Xms uguali. Ma non sono sicuro di come Java si costringerebbe a scambiarsi, l'unica chiusura di syscall sarebbe madvise, ma ciò non fallirà ... quel bug parla di esaurire la memoria durante la garbage collection. L'aggiunta di swap impedisce questo, ovviamente, ma anche l'aggiunta di RAM. Forse è dovuto a 32 bit con PAE?
derobert,

succede anche con la JVM a 64 bit: se hai Xmse Xmxnon hai impostato gli stessi valori, può morderti male: ci ha causato problemi importanti per due + settimane fino a quando non l'abbiamo finalmente rintracciato
Warren,

4

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 una discussione interessante sull'argomento. Personalmente (e dopo aver letto quella discussione) lascerei comunque circa 1 GB per lo scambio.


2

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 toccato 16 GB di RAM il suggerimento si riduca 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

Faccio sempre tanto swap (almeno) quanto 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

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

Quando un processo consuma tutta la 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
Questa è un'arma a doppio taglio: sul mio PC di casa, ho rimosso lo scambio quando stavo usando Firefox 2.x, perché stava lentamente consumando tutta la memoria e quando la macchina è andata a scambiarsi è diventata completamente inutilizzabile; senza scambio, il processo di firefox era semplicemente chiuso dal kernel :)
wazoox,

1

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 scambia per ogni 2 GB di RAM che hai. E lo metti nella parte anteriore del disco in modo da accedervi più rapidamente.

  • Se si tratta di un gateway di posta / spam, utilizzo 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.


In realtà, penso che lo swap nel mezzo del disco sarebbe accessibile più rapidamente.
Eddie,

0

Creo 1 GB di swap e acquisto più RAM il secondo che viene utilizzato. Non hai davvero bisogno di scambiare su computer moderni, la RAM è così economica.


0

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

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 la RAM non è più così costosa.

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

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.