![](https://systempeaker.com/wp-content/uploads/2021/10/0f230d7a.png)
Linux usa un file di scambio quando i processi esauriscono la memoria. Invece di fallire, la procedura potrà utilizzare una parte del disco, che è significativamente più lento, ma evita guasti involontari della memoria che possono danneggiare la disponibilità del servizio.
Che cos'è un file di scambio?
Iniziamo con una domanda retorica: Cosa succede quando il tuo computer esaurisce la memoria?
En Linux, una procedura di monitoraggio speciale, la procedura killer / Monitoraggio OOM, monitorerà se un sistema sta esaurendo la memoria, a meno che il killer OOM non sia disabilitato o configurato diversamente.
Quando ciò accade, questa procedura ucciderà uno dei processi in esecuzione sul sistema per liberare memoria. Ciò può portare a risultati dolorosi come la corruzione dei dati o servizi non disponibili.. El acrónimo OOM significa “Memoria esaurita”
Una soluzione consiste nell'acquistare memoria aggiuntiva o ridurre il numero di programmi o servizi in esecuzione contemporaneamente sul computer o sul server.. Ma, E se potessimo usare parte del nostro spazio su disco? (generalmente a buon mercato) Che cosa “memoria extra”?
Questo è esattamente quello che è e fa un file di scambio: un file speciale creato sul tuo dispositivo di archiviazione che in seguito diventa parte della memoria principale. Non direttamente, e c'è un sovraccarico di elaborazione, ma indirettamente e con un notevole impatto sulla velocità di elaborazione.
Vantaggi e svantaggi di Swapfile
La memoria principale è spesso velocissima rispetto alle unità più lente. Compreso SSD (unità a stato solido) sono quasi sempre più lenti dei chip di memoria principale ad alta velocità. Per i dischi rigidi (dischi rigidi meccanici tradizionali, rotante), la differenza di velocità è ancora maggiore.
Perché, è un chiaro vantaggio, nella maggior parte delle configurazioni, usa un disco più lento (SDD e soprattutto HDD) come fonte di memoria. Il ritardo nella scrittura dei dati tra memoria principale e disco (In altre parole, usa il disco come memoria) Si chiama "scambio"’ (scambio di memoria con spazio su disco)
Avendo detto questo, è sempre una buona idea avere un file di scambio laterale ragionevole sul tuo sistema. Il motivo è semplice; diciamo che abbiamo solo bisogno 1 Gigabyte aggiuntivo di memoria per un periodo di pochi minuti per garantire che il nostro sistema non invochi il killer OOM e uccida alcuni processi. Un file di scambio è migliore in questa circostanza perché anche se una procedura esaurisce la RAM utilizzabile, non si bloccherà, funzionerà solo un po' più lentamente finché il suo compito non sarà terminato.
Nonostante questo, se il sistema inizia a fare trading molto, rallenterà quasi sicuramente (leggere: molto più lento). Questo sarà molto evidente.
In sintesi, c'è un equilibrio sottile e delicato, che è in qualche modo arbitrario e dipende da molte cose diverse all'interno di una data situazione; il numero di processi in esecuzione su un sistema e le loro dimensioni del lavoro di memoria, memoria totale in uso, la memoria disponibile nel file di scambio, la configurazione specifica del file di scambio del sistema, eccetera.
Alcune considerazioni sui file di scambio
In molte configurazioni Linux nel mondo di oggi, c'è una partizione di swap assegnata su uno dei dischi all'interno del sistema. Questa è una zona speciale, in genere (ma non esclusivamente; può essere aggiunto in seguito) riservato durante l'installazione del sistema operativo Linux. Ha la stessa funzionalità di destinazione che è la stessa di un file di scambio. Per verificare se il tuo sistema ha qualche tipo di scambio abilitato oggi, basta eseguire quanto segue nel tuo terminale:
sudo apt -y install htop
htop
E individua la prossima uscita:
Nota come in questo sistema, c'è una memoria principale di 62,7 G e uno spazio di scambio di 11,0 G. Puoi anche vedere come solo una piccola quantità (23,5 milioni) è in uso oggi. Se sospetti che il tuo sistema stia cambiando, controlla come sono questi due contatori.
Se entrambi sono quasi pieni, è molto probabile che il tuo sistema cambi molto e funzioni significativamente più lentamente. Il motivo è che ora c'è un grande carico di E / Figlio (In altre parole, rilegato a disco), scambiando costantemente la memoria principale con la memoria basata su disco.
Come regola generale, alcune persone preferiscono utilizzare una certa percentuale di memoria di sistema come dimensione da allocare a un file di scambio. Personalmente, prendo un'altra strada, ed è considerare quanta memoria aggiuntiva potrei aver bisogno. Se la dimensione è considerevole, come esempio, un server con 8 GB probabilmente finirà per usare 14 GB per un caso d'uso specifico, allora ha molto più senso aumentare la memoria del server 8 GB a 16 GB.
Nonostante questo, se il sistema è da 8 GB e l'utilizzo normale è 6-7 GB con un picco occasionale se avvio troppi programmi contemporaneamente, Posso prendere in considerazione uno spazio di swap aggiuntivo di 8 GB, o un po' di più. Lo spazio su disco è di solito abbastanza economico, quindi sovradimensiona un po', finché ho lo spazio, non farà male.
Come abilitare un file di scambio
Pronto per aggiungere un file di scambio? Questo può essere fatto in movimento. Questo metodo funzionerà su entrambi Debian (Ubuntu, menta,…) come nei sistemi basati su RedHat (Cappello rosso, Centos,…).
Creeremo un file di scambio di 1 Gigabyte, 1000 Megabyte di spazio 1024000 blocchi (calcolato come il numero di Megabyte x 1024) in questo esempio.
Lo chiameremo swapfile123, situato nella directory principale (/), e gli abbiamo dato quel nome per evitare di sovrascrivere i file che hai già sul posto. Se sei sicuro di non avere un file chiamato / file di scambio, puoi usarlo invece se vuoi, avendo cura di rinominare il file in tutti i posti correttamente.
Assicurati di digitare qualsiasi comando, e soprattutto il dd
comando, attentamente per non sovrascrivere alcun dato sul tuo sistema. Noi usiamo sudo su
per entrare in modalità super utente (suo) attraverso sudo
. È un po' come eseguire ogni comando usando sudo
, anche se è più facile non scrivere ogni prefisso di comando sudo in questo modo.
sudo su
if [ -r /swapfile123 ]; then echo "Stop please! /swapfile123 already exists!"; fi
dd if=/dev/zero of=/swapfile123 bs=1024 count=1024000
chmod 0600 /swapfile123
mkswap /swapfile123
swapon /swapfile123
Dovresti vedere un output simile al seguente:
Se è così, Congratulazioni! Hai appena abilitato il tuo primo file di scambio!, dinamicamente (sui progressi), sulla riga di comando di Linux!
Per prima cosa usiamo il dd
strumento per creare il nostro spazio di scambio, usando il /dev/zero
dispositivo (un dispositivo virtuale che genera zeri solo quando viene chiamato, di dd
o qualsiasi altro strumento). Prossimo, impostiamo alcuni privilegi di sicurezza adeguati.
Prossimo, abbiamo detto al sistema operativo che il file sarebbe stato convertito in un file di scambio usando il mkswap
comando. Finalmente attiviamo lo spazio di scambio, dinamicamente sulla riga di comando, senza dover riavviare il nostro sistema.
Inoltre possiamo facilmente verificare se il nostro spazio di swap è diventato più grande usando free -m
:
geniale, puoi vedere come siamo passati da 12215M a 11215M (-1000M come previsto) quando disattiviamo il file di scambio appena creato. Puoi anche vedere come usiamo swapoff
per disabilitare dinamicamente lo scambio sulla riga di comando.
È bene sapere che se in qualsiasi momento vediamo che il nostro sistema ha problemi di memoria e possiamo scrivere abbastanza velocemente, possiamo darti memoria aggiuntiva al volo 🙂 In pratica, è meglio farlo in anticipo prima che si verifichino problemi.
Ora abbiamo solo un piccolo problema da affrontare. Se riavviassimo adesso, mentre il nostro file di scambio rimarrebbe su disco, il sistema non lo userebbe. Finora non sono state apportate modifiche alla configurazione, che assicurerà che lo spazio di swap venga ricaricato al riavvio del sistema.
Abilitazione del nostro nuovo scambio all'avvio
Per abilitare il nuovo spazio di swap all'avvio, basta aggiungere la riga successiva (come linea) un / eccetera / fstab:
/swapfile123 swap swap defaults 0 0
Puoi farlo mentre sei ancora dentro sudo su
modo (come indicato dal #
) avviare l'editor nano per / eccetera / fstab:
nano /etc/fstab
cat /etc/fstab
Dopo, basta aggiungere la riga sopra al file alla fine e salvarlo (CTRL + X> Y> invio). Non modificare o eliminare altre righe, in quanto ciò potrebbe impedire l'avvio corretto del sistema. Assicurati anche di controllare il contenuto del tuo file / eccetera / fstab prima di riavviare eseguendo il cat /etc/fstab
sopra.
Ora puoi riavviare il sistema e confermare che il tuo spazio di swap aggiuntivo è ancora abilitato usando free -m
ancora.
Eliminazione del nostro nuovo spazio di scambio
Se vuoi rimuovere il nuovo spazio di scambio, o magari crearne uno qualcosa di più grande, puoi farlo modificando di nuovo il file / eccetera / fstab prima e rimuovendo la riga che carica il file di scambio nella sua interezza. Non modificare o eliminare altre righe, in quanto ciò potrebbe impedire l'avvio corretto del sistema. Allora puoi correre:
sudo swapoff /swapfile123
rm /swapfile123
Tutto pronto! Non è nemmeno necessario riavviare, poiché questa modifica è stata apportata dinamicamente. Al prossimo riavvio, il file di scambio non verrà più attivato poiché abbiamo rimosso la riga corrispondente dal file / eccetera / fstab.
Divertiti con i file di scambio!