Come cancellare la cache di memoria RAM, Buffer e spazio di swap su Linux

Come qualsiasi altro sistema operativo, GNU / Linux ha implementato una gestione della memoria in modo efficiente e anche di più. Ma se un processo sta divorando la tua memoria e vuoi cancellarla, Linux fornisce un modo per svuotare o cancellare la cache ram.

Cancella cache RAM e swap in Linux

Come cancellare la cache in Linux?

Ogni sistema Linux ha tre opzioni per cancellare la cache senza interrompere processi o servizi.

1. Cancella solo PageCache.

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

2. Cancella dentries e inodi.

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

3. Cancella PageCache, dentries e inode.

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

Spiegazione del comando precedente.

sync scaricherà il buffer del file system. Comando separato da ";” esegui in sequenza. La shell attende che ogni comando termini prima di eseguire il comando successivo nella sequenza. Come menzionato nella documentazione del kernel, scrivere su drop_cache pulirà la cache senza uccidere alcuna applicazione / servizio, il comando echo sta facendo il lavoro di scrivere su file.

Se devi cancellare la cache del disco, il primo comando è più sicuro in enterprise e production come"...echo 1 > ….” cancellerà solo la PageCache. Non è consigliabile utilizzare la terza opzione sopra "...echo 3 >” in produzione fino a quando non si sa cosa si sta facendo, in quanto cancellerà PageCache, dentries e inode.

È una buona idea liberare buffer e cache in Linux che potrebbero essere utilizzati dal kernel Linux?

Quando si applicano varie impostazioni e si desidera verificare, se è effettivamente implementato appositamente su I/O-benchmark esteso, potrebbe essere necessario cancellare la cache del buffer. È possibile eliminare la cache come spiegato sopra senza riavviare il sistema, ovvero senza tempi di inattività richiesti.

Linux è progettato in modo tale da guardare nella cache del disco prima di guardare sul disco. Se trova la risorsa nella cache, la richiesta non raggiunge il disco. Se puliamo la cache, la cache del disco sarà meno utile in quanto il sistema operativo cercherà la risorsa sul disco.

Inoltre rallenterà anche il sistema per alcuni secondi mentre la cache viene pulita e ogni risorsa richiesta dal sistema operativo viene caricata nuovamente nella cache del disco.

Ora creeremo uno script di shell per cancellare automaticamente la cache RAM ogni giorno alle 2 del mattino tramite un’attività di pianificazione cron. Creare uno script di shell clearcache.sh e aggiungi le seguenti righe.

#!/bin/bash# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"echo "echo 3 > /proc/sys/vm/drop_caches"

Imposta l’autorizzazione di esecuzione sul clearcache.sh file.

# chmod 755 clearcache.sh

Ora è possibile chiamare lo script ogni volta che è necessario cancellare la cache ram.

Ora imposta un cron per cancellare la cache della RAM ogni giorno alle 2 del mattino. Aprire crontab per la modifica.

# crontab -e

Aggiungi la riga sottostante, salva e esci per eseguirla alle 2 del mattino ogni giorno.

0 2 * * * /path/to/clearcache.sh

Per maggiori dettagli su come cron un lavoro si può, come per controllare il nostro articolo su 11 Cron pianificazione dei lavori.

È una buona idea cancellare automaticamente la cache RAM sul server di produzione?

No! non lo è. Pensa a una situazione in cui hai programmato lo script per cancellare la cache della ram ogni giorno alle 2 del mattino. Ogni giorno alle 2 del mattino lo script viene eseguito e svuota la cache della RAM. Un giorno per qualsiasi motivo, può essere più del previsto gli utenti sono online sul tuo sito web e alla ricerca di risorse dal server.

Allo stesso tempo, lo script pianificato viene eseguito e cancella tutto nella cache. Ora tutto l’utente sta recuperando i dati dal disco. Si tradurrà in crash del server e corrompere il database. Così chiaro ram-cache solo quando richiesto, e conosciuto i passi del piede, altrimenti sei un amministratore di sistema Cult carico.

Come cancellare lo spazio di swap in Linux?

Se si desidera cancellare lo spazio di swap, è possibile eseguire il comando sottostante.

# swapoff -a && swapon -a

Inoltre puoi aggiungere il comando sopra a uno script cron sopra, dopo aver compreso tutto il rischio associato.

Ora combineremo entrambi i comandi precedenti in un unico comando per creare uno script appropriato per cancellare la cache della RAM e scambiare lo spazio.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'OR$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

Dopo aver testato entrambi i comandi precedenti, eseguiremo il comando “free-h” prima e dopo aver eseguito lo script e controlleremo la cache.

Cancella cache RAM e spazio di swap

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *