Ricerca nel sito web

Come cancellare la cache, il buffer e lo scambio della memoria RAM su Linux


Come ogni altro sistema operativo, GNU/Linux ha implementato la gestione della memoria in modo efficiente e anche di più. Tuttavia, se qualche processo sta consumando la tua memoria e desideri cancellarla, Linux fornisce un modo per svuotare o svuotare la cache RAM.

In questo articolo esploreremo come cancellare la cache della memoria RAM, il buffer e lo spazio di swap su un sistema Linux per migliorare le prestazioni generali.

Comprendere la cache della memoria RAM, il buffer e lo spazio di scambio

Esploriamo la cache della memoria RAM, il buffer e lo spazio di swap su un sistema Linux.

Cache della memoria RAM

La cache della memoria RAM è un meccanismo utilizzato dal kernel per conservare i dati a cui si accede regolarmente. Sebbene ciò aumenti la reattività del sistema, una cache sovraccarica può portare alla conservazione di dati obsoleti, influenzando le prestazioni.

Respingente

Come la cache, il buffer conserva temporaneamente i dati ma ha uno scopo diverso. I buffer memorizzano i dati trasferiti tra componenti come la CPU e il disco rigido, facilitando una comunicazione fluida. Tuttavia, un eccesso di dati memorizzati nel buffer può ostacolare la velocità del sistema.

Scambia spazio

Lo spazio di swap è un'area allocata sul disco rigido che funge da memoria virtuale quando la RAM fisica è esaurita. Anche se previene i crash del sistema dovuti alla memoria insufficiente, può rallentare il sistema se utilizzato in modo eccessivo.

Cancellazione di cache, buffer e spazio di scambio in Linux

In alcune situazioni, potrebbe essere necessario svuotare la cache, il buffer o lo spazio di scambio come spiegato di seguito.

Come cancellare la cache della memoria RAM in Linux?

Ogni sistema Linux ha tre opzioni per svuotare la cache senza interrompere alcun processo o servizio.

Cancellazione PageCache

1. Per cancellare solo PageCache, puoi utilizzare il seguente comando, che cancellerà specificamente PageCache, aiutando a liberare risorse di memoria.

sudo sync; echo 1 > /proc/sys/vm/drop_caches

Eliminazione di Dentry e Inode

2. Per cancellare solo dentries e inode, puoi utilizzare il seguente comando, che sincronizzerà il filesystem e cancellerà sia dentries che inode, migliorare le prestazioni del sistema rilasciando directory memorizzate nella cache e informazioni sugli inode.

sudo sync; echo 2 > /proc/sys/vm/drop_caches

Cancellazione di PageCache, Dentries e Inode

3. Per cancellare pagecache, dentries e inode, puoi utilizzare il seguente comando, che sincronizzerà il filesystem e cancella la cache della pagina, i dentries e gli inode, contribuendo a liberare memoria e migliorare le prestazioni del sistema.

sudo sync; echo 3 > /proc/sys/vm/drop_caches 

Ecco una spiegazione di ciascuna parte del comando precedente:

  • Il sudo viene utilizzato per eseguire il comando come superutente.
  • Il sync svuoterà il buffer del file system.
  • Il “; ” il punto e virgola viene utilizzato per separare più comandi su una singola riga.
  • Il comando echo 3 > /proc/sys/vm/drop_caches viene utilizzato per eliminare la cache della pagina, un'area di archiviazione temporanea per i file a cui si è avuto accesso di recente.

Nota: il file drop_caches controlla quale tipo di dati memorizzati nella cache deve essere cancellato e i valori sono i seguenti:

  • 1 – Cancella solo la cache della pagina.
  • 2 – Cancella dentry e inode.
  • 3 – Cancella cache della pagina, dentature e inode.

Come menzionato nella documentazione del kernel, scrivere su drop_caches pulirà la cache senza uccidere alcuna applicazione/servizio, il comando echo sta facendo il lavoro di scrittura sul file.

Se è necessario svuotare la cache del disco, il primo comando è più sicuro in ambito aziendale e di produzione come “...echo 1 > …. " cancellerà solo PageCache.

Non è consigliabile utilizzare la terza opzione sopra “...echo 3 > ” in produzione finché non sai cosa stai facendo, poiché cancellerà pagecache, dentries e inode.

Come cancellare lo spazio di swap in Linux?

Per liberare spazio di swap, puoi utilizzare il comando swapoff con l'opzione -a, che disabiliterà tutte le partizioni di swap.

sudo swapoff -a

Quindi, ripristinalo eseguendo il comando seguente, che attiverà tutte le partizioni di scambio.

sudo swapon -a

È consigliabile liberare buffer, cache e swap in Linux?

In generale, non è una buona idea liberare manualmente Buffer e Cache in Linux che potrebbero essere utilizzati dal kernel Linux, che è progettato per gestire queste risorse in modo efficiente, e cancellarli manualmente può compromettere le prestazioni del sistema.

Tuttavia, potrebbero verificarsi rare situazioni in cui è necessario svuotare il buffer e la cache, ad esempio se si verifica una forte pressione sulla memoria e non è possibile liberarla con altri mezzi. In questi casi, è necessario procedere con cautela ed essere consapevoli del potenziale impatto sulle prestazioni.

Allo stesso modo, liberare lo spazio di swap in Linux generalmente non è una pratica di routine o consigliabile in circostanze normali.

Automatizzazione dell'ottimizzazione della memoria

Per automatizzare il processo e cancellare regolarmente la memoria, è possibile impostare un processo cron per eseguire i comandi a intervalli specificati.

Apri la configurazione del crontab.

crontab -e

Aggiungi le seguenti righe per cancellare la cache, il buffer e lo spazio di swap ogni giorno a mezzanotte:

0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a

Per ulteriori informazioni sulla pianificazione di un lavoro con cron, potresti fare riferimento al nostro articolo intitolato "11 Cron Scheduling Jobs".

È consigliabile svuotare la cache RAM su un server di produzione Linux?

No non lo è. Considera uno scenario in cui hai pianificato uno script per svuotare la cache RAM ogni giorno alle 2 del mattino. Ogni giorno alle 2 del mattino, lo script viene eseguito, svuotando la cache della RAM. Tuttavia, un giorno, un numero inaspettatamente elevato di utenti è online sul tuo sito web, ponendo una domanda significativa sulle risorse del tuo server.

Allo stesso tempo, lo script pianificato viene eseguito e cancella tutto nella cache. Ora tutti gli utenti recuperano i dati dal disco, causando potenzialmente un arresto anomalo del server e la corruzione del database. Pertanto, è essenziale svuotare la cache della RAM solo quando necessario, prestando attenzione alle proprie azioni. Altrimenti rischi di diventare un amministratore del sistema Cargo Cult.

Conclusione

Una gestione efficiente della memoria è fondamentale per un sistema Linux che funzioni senza intoppi. Svuotare regolarmente la cache della memoria RAM, il buffer e lo spazio di scambio può migliorare significativamente le prestazioni del sistema. Comprendendo questi meccanismi e utilizzando i comandi forniti, puoi mantenere il tuo sistema Linux al meglio.

È tutto per ora. Se ti è piaciuto l’articolo, ricordati di condividere il tuo prezioso feedback nei commenti. Facci sapere cosa ne pensi su quello che ritieni sia un buon approccio per svuotare la cache e il buffer della RAM negli ambienti di produzione e aziendali.