Liberare RAM su Linux
Ho scoperto che dal kernel 2.6.16 è possibile liberare un pò di ram con trucco poco invasivo e sicuro.
In pratica a nostra scelta possiamo ripulire:
- la page cache
- la page cache + gli inode
- la page cache + gli inode + la dentry cache
Per vedere i risultati lanciamo prima questo comando:
# free -m
total used free shared buffers cached
Mem: 995 418 576 0 34 215
-/+ buffers/cache: 168 827
Swap: 1027 32 994
In pratica vediamo la memoria occupata e libera.
Se vogliamo ripulire prima digitiamo il comando:
# sync
che cerca di rendere liberabile più cache possibile.
Poi abbiamo le tre scelte:
# echo 1 > /proc/sys/vm/drop_caches
# echo 2 > /proc/sys/vm/drop_caches
# echo 3 > /proc/sys/vm/drop_caches
Diamo uno di questi comandi; i numeri corrispondono alle opzioni elencate sopra.
Io ho dato il terzo:
# free -m
total used free shared buffers cached
Mem: 995 271 723 0 0 112
-/+ buffers/cache: 158 836
Swap: 1027 32 994
Guardate la differenza.
Considerate che il comando agisce su /proc che un filesystem virtuale e quindi creato on the fly in avvio; tutte le modifiche andranno perse al riavvio.
Inoltre l'uso di questo comando ha pareri discordanti: c'è chi dice che è inutile perchè elimini la cache che è usata da Linux per rendere più veloce le operazioni ripetute.
In effetti può essere vero.
Io consiglio di usarlo solo con pc poco potenti con poca RAM; se si hanno 8 GB di RAM e un quad-core forse non ha molto senso......
linux kernel proc page cache inode dentry cac
Commentami!