Ram gnam gnam!! liberiamo un po’ di Ram


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

watch -n 1 cat /proc/meminfo
  • 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.

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

 

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:

sudo sysctl -w vm.drop_caches=3

Lascia un commento