Sì.
Dovresti assolutamente abilitare sempre lo swap, tranne se c'è una ragione molto convincente e proibitiva (come, nessun disco, o solo un disco di rete presente). Dovresti avere uno scambio nell'ordine delle dimensioni ridicole spesso raccomandate (come il doppio della quantità di RAM)? Bene no .
Il motivo è che lo swap non è utile solo quando le tue applicazioni consumano più memoria di quanta c'è la RAM fisica (in realtà, in tal caso, lo swap non è affatto molto utile perché influisce gravemente sulle prestazioni). Il principale incentivo per lo swap al giorno d'oggi non è trasformare magicamente 16GiB di RAM in 32 GiB, ma fare un uso più efficiente della RAM disponibile installata.
Su un computer moderno, la RAM non passa inutilizzata. La RAM inutilizzata è qualcosa che non si sarebbe potuto comprare e risparmiare. Pertanto, tutto ciò che si carica o tutto ciò che è altrimenti mappato in memoria, tutto ciò che potrebbe eventualmente essere riutilizzato da chiunque in qualsiasi momento dopo (limitato da vincoli di sicurezza) è nella cache. Molto presto dopo l'avvio della macchina, tutta la RAM fisica sarà stata utilizzata per qualcosa .
Ogni volta che si richiede una nuova pagina di memoria dal sistema operativo, il gestore della memoria deve prendere una decisione informata:
- Elimina una pagina dalla cache del buffer
- Elimina una pagina da una mappatura (effettivamente uguale al numero 1, sulla maggior parte dei sistemi)
- Spostare una pagina a cui non si è avuto accesso per molto tempo - preferibilmente mai - per scambiare (ciò potrebbe in effetti accadere anche in modo proattivo, non necessariamente all'ultimo momento)
- Uccidi il tuo processo o uccidi un processo casuale (OOM)
- Panico del kernel
Le opzioni n. 4 e n. 5 sono molto indesiderabili e accadranno solo se il sistema operativo non ha assolutamente altra scelta. Le opzioni n. 1 e n. 2 significano che butti via qualcosa che probabilmente ti servirà presto di nuovo. Ciò ha un impatto negativo sulle prestazioni.
L'opzione n. 3 significa che trasferisci qualcosa di cui (probabilmente) non ti servirà presto in un archivio lento. Va bene perché ora qualcosa che ti serve può usare la RAM veloce.
Rimuovendo l'opzione # 3, hai effettivamente limitato il sistema operativo a fare # 1 o # 2. Il ricaricamento di una pagina dal disco equivale a ricaricarlo da swap, ad eccezione del fatto che dover ricaricare da swap di solito è meno probabile (a causa di decisioni di paging appropriate).
In altre parole, disabilitando lo swap non si ottiene nulla, ma si limita il numero di opzioni utili del sistema operativo nel gestire una richiesta di memoria. Quale potrebbe non essere , ma molto probabilmente potrebbe essere uno svantaggio (e non sarà mai un vantaggio).
[MODIFICARE]
L'attento lettore della mmap
manpage , in particolare la descrizione MAP_NORESERVE
, noterà un'altra buona ragione per cui lo scambio è in qualche modo necessario anche su un sistema con "sufficiente" memoria fisica:
"Quando lo spazio di swap non è riservato, si potrebbe ottenere SIGSEGV al momento della scrittura se non è disponibile memoria fisica."
- Aspetta un momento, cosa significa?
Se si mappa un file, è possibile accedere direttamente al contenuto del file come se il file fosse in qualche modo, per magia, nello spazio degli indirizzi del programma. Per l'accesso in sola lettura, il sistema operativo non richiede in linea di principio più di una singola pagina di memoria fisica che può ripopolare con dati diversi ogni volta che si accede a una pagina virtuale diversa (per motivi di efficienza, ovviamente non è quello che si fa, ma in linea di principio è possibile accedere a terabyte di dati con un'unica pagina di memoria fisica). E se anche tuscrivere su un file mapping? In questo caso, il sistema operativo deve avere una pagina fisica - o spazio di scambio - pronta per ogni pagina scritta. Non c'è altro modo per mantenere i dati in giro fino a quando il processo di writeback delle pagine sporche ha fatto il suo lavoro (che può essere diversi secondi). Per questo motivo, il sistema operativo riserva (ma non necessariamente impegna mai) lo spazio di scambio, quindi nel caso in cui tu stia scrivendo su una mappatura mentre non ci sono pagine fisiche inutilizzate (è una condizione del tutto possibile e normale), tu ' sono garantito che funzionerà ancora.
E se non ci fosse swap? Significa che nessuno scambio può essere prenotato (duh!), E questo significa che non appena non sono rimaste pagine fisiche libere e stai scrivendo su una pagina, stai ricevendo una piacevole sorpresa sotto forma del processo di ricezione un errore di segmentazione e probabilmente ucciso.
[/MODIFICARE]
Tuttavia, la tradizionale raccomandazione di effettuare scambi di dimensioni doppie rispetto alla RAM è priva di senso. Sebbene lo spazio su disco sia economico, non ha senso assegnare così tanto swap. Sprecare qualcosa che costa poco è ancora dispendioso e non si vuole assolutamente scambiare continuamente impostazioni di diverse centinaia di megabyte (o più grandi).
Non esiste una dimensione di scambio "corretta" (ci sono tante dimensioni "corrette" quanti sono gli utenti e le opinioni). Di solito assegno un 512MiB fisso, indipendentemente dalle dimensioni della RAM, che funziona molto bene per me. Il ragionamento alla base di ciò è che 512MiB è qualcosa che puoi sempre permetterti al giorno d'oggi, anche su un piccolo disco. D'altra parte, l'aggiunta di diversi gigabyte di swap non è migliore. Non li userai, tranne se qualcosa sta andando storto.
Anche su un SSD, lo scambio è di ordini di grandezza più lenti della RAM (a causa della larghezza di banda e della latenza del bus), e mentre è molto accettabile spostare qualcosa da scambiare che probabilmente non sarà più necessario (cioè molto probabilmente non lo sarà scambiandolo di nuovo, quindi il tuo pool di pagine disponibili viene effettivamente ingrandito gratuitamente), se hai davvero bisogno di notevoli quantità di swap (ovvero, hai un'applicazione che utilizza ad esempio un set di dati da 50GiB), sei praticamente perso.
Una volta che il tuo computer inizia a scambiare pagine di gigabyte di pagine, tutto va a gattonare. Quindi, per la maggior parte delle persone (incluso me) questa non è un'opzione e avere così tanto scambio non ha quindi senso.