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?
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?
Risposte:
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".
Red Hat consiglia 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.
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
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?
(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.
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?
Xms
e Xmx
non hai impostato gli stessi valori, può morderti male: ci ha causato problemi importanti per due + settimane fino a quando non l'abbiamo finalmente rintracciato
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.
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ì.
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.
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 server LAMP è attiva la regola 1/2.
Il chilometraggio varia in base all'utilizzo dell'applicazione e della GUI.
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.
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.
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.