Sintesi
Un'area di scambio (chiamata partizione di scambio, file di scambio o file di paging) è solo un meccanismo per aumentare la memoria fisica indirizzabile dal sistema operativo.
Se hai poca RAM fisica disponibile e sulla macchina di oggi, direi se hai 4 GB o meno di RAM. Quindi probabilmente dovresti avere uno scambio. Ma questo dipende dal carico di lavoro e da come si utilizza la macchina.
Se hai più di 4 GB di RAM, è probabile che il tuo sistema non possa mai usare lo swap. Quindi, se lo scambio è abilitato o meno, questo non cambierà molto.
Sebbene ciò dipenda da altri fattori, più a lungo il computer funzionerà, più è probabile che il sistema operativo cambierà una piccola porzione inutilizzata della RAM con lo scambio, sebbene apparentemente rimanga un sacco di spazio. Tuttavia, spesso il sistema utilizza la RAM "libera" per i buffer di file e altre cose e alcuni carichi di lavoro potrebbero fare in modo che il buffer dei file utilizzi tutta la RAM disponibile.
Informazioni di base
In qualche modo cosa accadrebbe se disabilitassi lo swap e la tua memoria fosse completamente utilizzata? Bene, la prossima volta che un'applicazione richiede più memoria (come con un malloc o realloc), riceverà un errore! Se è correttamente codificato, l'applicazione lo rileverà, ma gestire un tale errore e terminare il programma con grazia potrebbe essere ancora una sfida! Tuttavia, molti sviluppatori non verificano la corretta allocazione della memoria e spesso l'applicazione si arresta in modo anomalo non appena viene utilizzata questa memoria non allocata. Quindi c'è una forte possibilità che l'applicazione si arresti in modo anomalo e che in realtà molte applicazioni si arrestino in modo anomalo perché in genere hai più di un'applicazione in esecuzione contemporaneamente. Eventualmente, il kernel stesso dovrebbe essere immune, ma nella mia esperienza non è stato sempre così.
Se hai uno scambio, avrai lo stesso comportamento , ma hai un limite più alto, quindi è probabile che non raggiungerai quel limite.
Ho personalmente 2 macchine con 8 e 16 GB di RAM. Il mio uso personale di questa macchina non dovrebbe mai avvicinarmi all'uso di tutta questa RAM (oggi! Forse tra qualche anno potrebbe essere diverso). L'unico motivo per cui dovrei raggiungere i limiti fisici della RAM è che un processo è diventato illegale e sta consumando tutta la RAM. Non avere swap è un sollievo, il kernel interromperà prontamente il processo non autorizzato quando raggiungerà il limite di RAM. Se hai uno scambio, otterrai un'esperienza dolorosa (forse non su SSD ...) poiché il tuo sistema cambierà e cambierà e cambierà e a volte non risponderà completamente fino a quando speriamo che il tuo kernel uccida il colpevole!
consiglia
Non dovresti avere paura delle persone che ti dicono che qualcosa di orribilmente sbagliato potrebbe accadere se rimuovi lo swap. In tal caso, lo spazio degli indirizzi fisici verrà ridotto, proprio come se passassi da 4 GB di RAM a 2 GB. Faresti una cosa del genere? Quindi non rimuovere lo swap. Puoi comunque decidere di limitarlo, e sarebbe saggio .
Se uno pensa che il suo carico di lavoro possa portarlo ad usare vicino o più della RAM fisica disponibile, o se ha bisogno di un sacco di I / O (lettura / scrittura su dischi), allora lo scambio dovrebbe essere mantenuto.
Quando lo swap deve essere mantenuto, un utente dovrebbe provare a impostare limiti alla quantità di memoria che un processo può usare. Su un sistema Linux, si potrebbero usare i limiti di memoria di cgroups per evitare che alcuni processi sfuggano al controllo, non conosco l'equivalente su OS X ma dovrebbe essere così.
Tuttavia, se si dispone di una memoria disponibile più che sufficiente per il proprio carico di lavoro, è possibile disabilitare in modo sicuro lo swap o mantenerlo. Non cambierà molto anche in termini di prestazioni perché se il sistema non utilizza lo swap, allora non verrai colpito da un calo delle prestazioni (specialmente visibile su un vecchio disco rigido rotazionale, meno su SSD).
Utilizzare lo stesso trucco di cui sopra per provare a impostare i limiti di memoria per processo o gruppo di processi è anche vantaggioso nel caso di RAM disponibile più che sufficiente.
Il mio esempio
Ho un vecchio PC con 1 GB di RAM, lì ho un grande scambio: 4 GB in modo da poter eseguire Firefox e altre applicazioni su di esso. Tendo a utilizzare il minor numero di applicazioni (o schede in Firefox) possibile per avere un'esperienza utente corretta.
Ho un piccolo server con 8 GB di RAM. Lì conosco esattamente il mio carico di lavoro e non voglio che il mio server rallenti perché un processo è fallito e sta consumando tutta la memoria. Lì non ho limiti di memoria swap e cgroup che impongano una barriera, quindi applicazioni o servizi possono andare in crash ma non il kernel. A proposito, questa è una macchina Linux.
Quindi, ho il mio Mac con 16 GB di RAM. Non ne sono l'unico utente e non ci dispiacerebbe aspettare quando si cambia utente. Lì abbiamo lo scambio, è difficile per me pianificare il carico di lavoro di altri utenti di questo computer. Anche se sarei l'unico ad usare lo swap. Spesso eseguo diverse macchine virtuali e utilizzo applicazioni che consumano memoria, ma non tutte allo stesso tempo, quindi non mi dispiacerebbe scambiare il sistema operativo in un'app inutilizzata in modo da poter ottenere l'I / O su disco più veloce o avviare un'altra VM. Fino ad ora, non ho visto scambiare questa macchina!