Drop bafera, može da se koristi, recimo u scenariju kad na hipervizoru imate 20 virtualnih mašina koje koriste 100% fizičkog RAM-a. Sama virtualna mašina, primera radi – ako ste joj dodelili 10GB RAM-a, ona može trenutno da koristi 2GB dok je recimo 7GB keširano i reusable – vi iako koritite 2GB RAM-a vas će to na fizičkom hostu koštati ukupno 9GB RAM-a…a da pri tom ne želite da samoj virtualnoj mašini smanjujete RAM koji ste joj dali na korišćenje.

Slika 1 – Pre dropovanja bafer keša

Iz primera sa Slike 1, recimo – server koristi 1345MB RAM-a i toliko mu trenutno treba – ali na hipervizoru na kojem se nalazi ovaj VPS će biti pokazano kako server koristi used+buff/cache = 1345+5859=7204MB RAM-a.
U baffer/cache jeste reusable RAM koji je sistem keširao zbog bržeg izvršavanja (RAM je brži od HDD-a) i čitanja podataka koji se često koriste a ukoliko zafali RAM-a za korićenje (kolona used) biće preuzeto odatle automatski. Sistem je pametan pa je skontao, na gornjoj slici, da 5GB nekakvih podataka koristim često i to je zapakovao da čeka poziv ili čitanje ukoliko se desi…i to će biti brže odrađeno kroz RAM nego kroz disk.

Koliko RAM-a onda imam na raspolaganju? 617MB?
NE. Ono koliko imaš je pod kolonom ‘available’, tj u ovom slučaju 5826MB. Tih 617MB RAM-a je RAM koji zvrji prazan i neiskorišćen.

#!/bin/bash
#########################################################################################
# Opis: Skripta za drop buffer cachea zbog oslobadjanja rama na hipervizoru
# Autor: Kompjuteras.com - ali mozete skriptu koristiti ili menjati kako vam srcu drago
# Korisite samo na virtualnim masinama ako imate problem sa ukupnom kolicinom RAM-a na 
# hipervizoru koji koristite. Ovo se ne preporucuje na prod masinama jer utice na 
# performanse sistema, jer "Free memory is unused memory is wasted memory"
#
# Crontab primer (da se okida svakog prvog u mesecu):
# 00  *  *  *  *  /root/skripte/DropBufferCache.sh > /tmp/CrontabDropBufferCache.log 2>&1
#
#########################################################################################

################### VARIJABLE ###################
# Stavite LOG_FAJL=/dev/null ako ne zelite log
LOG_FAJL=/tmp/DropBufferCache.log
#################################################

echo "------------------ `date` Before ------------------" >> ${LOG_FAJL}
free -m | grep -v Swap | grep -v "buffers/cache" >> ${LOG_FAJL}

################### DROP ACTION ####################
# Free pagecache
sync ; echo 1 > /proc/sys/vm/drop_caches
# Free dentries and inodes
sync ; echo 2 > /proc/sys/vm/drop_caches
# Free pagecache, dentries and inodes
sync ; echo 3 > /proc/sys/vm/drop_caches
###################################################

echo "------------------ `date` After ------------------" >> ${LOG_FAJL}
free -m | grep -v Swap | grep -v "buffers/cache" >> ${LOG_FAJL}

exit 0

Posle okidanja skripte dobićemo ovako neko stanje

Slika 2 – Posle dropovanja bafer keša

Kao što vidite, bafer je sa 5859MB pao na 439MB ali sistem i dalje koristi isto RAM-a i isto RAM-a ima na raspolaganju i dalje (100MB gore-dole) dok je sve iz bafera prešlo u stanje bleje (free). Ovim smo – hipervizoru oslobodili oko 5GB RAM-a, ali smo virtualnoj mašini nabacili novi posao jer umesto da podatke koje često čita – čita iz RAM-a, mora da čita sa diska – dok ne prevuče ponovo nazad u bafer čime se gubi na performansama.

Ljudi koji žele trajno da na ovaj uvrnuti način oslobađaju RAM jer kubure sa RAM-om, neće da ga prošire ili smanje korišćenje RAM-a na postojećim VM-ovima (ili gasiti VM-ove) ovu skriptu mogu postaviti u crontab da se pod root-om okida na 20 minuta…cena je naravno obaranje performansi, koje doduše neće biti baš drastično ali će svakako postojati. Korisnici na nekim mojim testnim VM-ovima nisu primetili neke velike razlike u performansama – što ne znači da ih i nema.

Dakle, ovo koristite samo na dev mašinama, i samo na virtualim mašinama koje se nalaze na hipervizoru koji kuburi sa RAM-om. Nećete ništa sistemski pojebati – ali ćete uticati na pad performansi.