Capita spesso di vedere che il nostro server stia utilizzando tutta la Ram a disposizione senza una giustificazione valida. Spesso si tratta di memoria non utilizzata dal sistema ma dalle pagine e dalla cache del filesystem ovveo d.entry e i-nodee.
Per renderci conto di questo possiamo dare questo comando a terminale
[code]watch -n 1 cat /proc/meminfo[/code]
- watch (eseguire periodicamente un programma, mostrando l’output a schermo intero)
- -n 1 (intervallo diaggiornamento in secondi)
- cat (concatena i file e stampa sull’output standard )
- /proc/meminfo (il file da visualizzare)
– Il filesystem /proc è uno pseudo filesystem. Non esiste su un disco. Viene creato in memoria dal kernel. Viene utilizzato per fornire informazioni sul sistema (in origine sui processi, da cui il nome).
– Il ‘/proc/meminfo’ è usato da per segnalare la quantità di memoria libera e utilizzata (sia fisica che di scambio) sul sistema così come la memoria condivisa e i buffer usati dal kernel.
– Il filesystem /proc è descritto più dettagliatamente nella pagina del manuale di proc (man proc).
notare le voci :
- Buffers:
- Cached:
A partire dai kernel 2.6.16 è stato implementato meccanismo che permette di eliminare le pagine della cache e/o le cache inode e dentry su comando, il che può aiutare a liberare molta memoria.
Per usare /proc/sys/vm/drop_caches, fai semplicemente un “echo” ad esso.
Questa è un’operazione non distruttiva e libererà solo i blocchi completamente inutilizzati. Gli oggetti sporchi continueranno ad essere in uso fino a quando non saranno scritti su disco. Se si esegue “sync”, che ripulisce il buffer del file system e forza la scrittura dei blocchi modificati sul disco aggiornando il superblock, prima di scaricarli su disco, queste operazioni di rilascio tenderanno a liberare più memoria.
[code]sync; echo 3> /proc/sys/vm/drop_caches[/code]
Altri modi di usare drop_caches
- Per liberare il pagecache: echo 1> /proc/sys/vm/drop_caches
- Per liberare dentips e inode: echo 2> /proc/sys/vm/drop_caches
- Per liberare pagecache, dentries e inode: echo 3> /proc/sys/vm/drop_caches
Nei sistemi equipaggiati con systemd possiamo eseguire:
[code]sudo sysctl -w vm.drop_caches=3[/code]