Quanto dovrebbe essere grande la partizione di swap?


10

per alcuni anni ho letto che è una buona idea creare una partizione di swap con il doppio spazio della mia RAM. si applica ancora oggi? o questo non è più necessario?

Ho un server con 8 GiB di RAM e ho bisogno di creare una partizione di swap, e mi chiedevo se 16 GiB fosse troppo.


Risposte:


11

Sui sistemi di grandi dimensioni, 8 GB di RAM fisica, di solito assegniamo 2 GB di swap. Si tratta di server di database caricati che eseguono Oracle o PostgreSQL. Per anni, non ho mai visto lo swap colpire anche sotto carico pesante. Il carico pesante è di circa 100-150 utenti che eseguono circa 10.000 letture SQL e forse 2.500 scritture al minuto.

Adattiamo anche il livello di swapiness per scoraggiare lo swap e disattiviamo i processi non necessari che sappiamo di non aver bisogno di essere eseguiti. (Build Linux personalizzate)

Come Eddie, dice sopra, 1x RAM fisica è una buona regola empirica per qualsiasi cosa sotto i 4 GB. Faccio build Linux personalizzate per una grande società Fortune-500 e queste sono le cose che facciamo di solito, e non abbiamo avuto problemi negli ultimi 5 anni circa che ho consultato per loro.

Sui sistemi più grandi: Linux a 64 bit con 32 GB e 64 GB di RAM, questi sono i nostri server di database Oracle e in genere manteniamo 2 GB di scambio per cose come Eddie sottolinea sopra: i processi inattivi verranno spostati per scambiare a seconda delle impostazioni di swapiness.


5

Una domanda apparentemente senza tempo. I bravi ragazzi di SlashDot ne hanno discusso poco fa. Scopri cosa avevano da dire:

  • Lo spazio su disco non è un problema con i moderni HDD, 16 GB è ancora una quantità banale per le moderne unità TB.
  • Tuttavia, uno spazio di scambio significativo può essere un problema in caso di gestione della memoria insufficiente:

Se guardo un film da 4 GB per un periodo di 2 ore, molti gestori di memoria decideranno che tentare di memorizzare nella cache tutti quei dati potrebbe essere una buona cosa. A metà del film, penserà che tutti quegli altri programmi in esecuzione siano stati inutilizzati per un'ora e possano essere tranquillamente scambiati a favore della memorizzazione nella cache di più di quel file da 4 GB. Il risultato finale è che metà dei programmi vengono scambiati dopo aver visto un film, risultando in un sistema lento che sta rovinando tutto il file di scambio.

  • Alla fine, la decisione giusta dovrebbe venire dai requisiti di memoria, non dalle formule del ballpark:

Se disponi di [RAM sufficiente per eseguire i programmi che desideri utilizzare quotidianamente], non c'è motivo di utilizzare mai lo scambio.


3

Vedi la risposta Quanto spazio SWAP su un sistema ad alta memoria? per una guida, anche se la tua domanda è più generale. Le opinioni variano molto su questo, ma in genere le persone con 1 GiB di RAM o più sembrano correre senza swap del tutto, o con 1xmemory come swap.

Anche se non hai intenzione di utilizzare così tanta RAM da forzare il verificarsi dello swap, c'è un valore nell'avere almeno 1xmemory come swap: consente al sistema operativo di scambiare alcune cose che non dovrebbero essere utilizzate immediatamente in modo da poter invece utilizzare quella memoria per i buffer del disco o IO, ad esempio.


3

Se ti aspetti che il tuo sistema sia in grado di ibernare e poi riprendere con successo :-), probabilmente è meglio allocare più spazio per la partizione di swap rispetto alla quantità di RAM fisica


3

Il mio provider VPS non fornisce nemmeno spazio di scambio per i server e il mio ha funzionato bene senza di esso.

La maggior parte dei server che vedo quotidianamente al lavoro sono anche senza swap.

modificare

Tuttavia, se stai eseguendo una JVM, assicurati di avere almeno lo spazio di swap che avrai mai impostato a -Xmxcausa di un problema noto con la JVM.

In breve, quando la JVM ha bisogno di più memoria di quella attualmente in uso (ma non ha ancora toccato la sua Xmx), essa:

  • si scambia su disco
  • alloca nuova memoria
  • si legge nuovamente nella RAM

Ciò significa che se lo scambio è inferiore al tuo Xmx, può fallire.

Per citare la segnalazione di bug

La cosa migliore da fare è aumentare la dimensione di scambio sulle macchine che riscontrano questo errore.

Cerco di giocare sul sicuro quando lavoro con JVM e di impostare lo scambio su uguale memoria fisica.


2

Data la velocità dei moderni hard disk, gli swap di grandi dimensioni sono solo un invito al thrashing. Forse gli SSD invertiranno questa tendenza, ma con forse una velocità di trasferimento massima di 300 MB / s per un disco, lo scambio in 2-4 GB richiederà del tempo.

Ai vecchi tempi (cioè: Linux 1.2, i386, SunOS 4.x), avresti forse 5-15 MB di processi daemon in esecuzione e ovunque da 4-32 MB di RAM e quindi demoni che sono stati bloccati in attesa di I / O potrebbe essere sostituito senza alcun vero calo delle prestazioni ... E sarebbe meglio poiché i programmi utente potrebbero avere solo 2-3 MB di RAM disponibili. Lo scambio aveva molto senso.

Ora nel mio ambiente, la maggior parte dei server ha carichi di lavoro pesanti a memoria singola e la RAM può essere stimata in modo abbastanza accurato ... Swap è lì per emergenze, processi di fuga e così via.

L' eccezione è per laptop e workstation che potrebbero dormire. Molti sistemi operativi utilizzeranno l'area di scambio per salvare l'immagine di sospensione e, in questi casi, lo scambio deve essere maggiore della memoria fisica. In Linux con suspend2 / tuxonice dovresti avere 2xRAM in dimensioni di swap per supportare suspend-to-disk.


In passato, System V 3.2 e versioni precedenti utilizzavano swap di dimensioni RAM esattamente. Almeno si è rotto e non si è più sprecato, dal momento che non era un sistema di memoria virtuale sofisticato come BSD.
kmarsh,

2

In questi giorni, se si utilizza un server da 32 GB o 64 GB, 4 GB di scambio per impostazione predefinita rappresentano un importo sicuro. Qualcosa di più grande di questo è eccessivo con la quantità di RAM fisica disponibile.


1

Idealmente non userete affatto lo swap e la cosa 2x RAM è davvero qualcosa che è rimasto negli anni passati.

Se sei preoccupato, farei qualcosa del tipo:

Max Memory Requirement - Physical Ram = Swap

Penso che 16 GB suoni troppo grandi, personalmente.


1

Ai vecchi tempi che desideravi quanto più potevi ottenere, il consumo di memoria nei moderni kernel * nix appartiene al passato. Il vecchio detto era "2x la tua memoria". Tra 2 GB o la quantità di spazio che la macchina ha a disposizione oggi e l'età ti porterà vicino a dove devi essere.


1

Lo swap viene anche utilizzato per archiviare i dump dopo il panico del kernel. Se sei interessato ad analizzare questi dump e non hai specificato un'altra destinazione di dump, il tuo swap dovrebbe essere almeno grande quanto la tua RAM.


0

Non esiste un singolo algoritmo che ti dice di quanto swap hai bisogno. In pratica, devi mettere il tuo sistema sotto il carico maggiore che prevedi di supportare e scoprire quanta risorsa effettivamente utilizza. Imposta il tuo file di scambio di conseguenza.

Per la RAM fisica, dovresti mettere il tuo sistema sotto il vero carico "da crociera" che ti aspetti di gestire e acquistare di conseguenza. Per i sistemi a bassa latenza non dovresti scambiare affatto all'interno del carico da crociera (non è lo stesso che non hai lo swap allocato o addirittura in uso). Potrebbe verificarsi una piccola quantità di swap a causa di utilità di sistema poco utilizzate che eseguono le pulizie domestiche , ma nel complesso dovresti avere il minor numero possibile di scambi.

Ovviamente, puoi scambiare le prestazioni a un prezzo inferiore.

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.