Membersihkan Cache dari Phisycal Memory di Linux OS

22 01 2011

English Version

Seperti yang telah diketahui pada umumnya, sistem operasi Linux terkenal dengan fasilitas memory management yang matang, dimana system maksimal dalam mempergunakan ruang extra dalam memory sebagai media simpanan cache. Bagian yang kosong dari memory tersebut seharusnya dapat dengan bebas digunakan oleh proses yang sedang berjalan dalam sistem operasi tersebut. Tetapi sayangnya ada beberapa distro Linux yang tidak menyertakan fasilitas ini secara otomatis, seperti yang saya gunakan sekarang OpenSuse 11.2 32bit dan 64bit, mungkin para developer distro tersebut berpikir menghilangkan memory cache tidak terlalu penting untuk menyediakan ruang memory kosong agar system berjalan secara maksimal.

Saat ini saya sedang memelihara sebuah server dengan memory 8GB, disaat server ini pertama kali jalan atau ketika melakukan restart, dapat terlihat menggunakan perintah “top” ketersediaan physical memory sangat banyak. Bisa dikatakan dari 8GB memory yang tersedia hanya terpakai 500MB saja, namun ketika system operasi sudah berjalan lebih dari 2 hari dengan aplikasi yang berjalan diatasnya adalah aplikasi java platform dan database MySQL maka sudah dipastikan server akan crash karena kehabisan ruangan kosong di memory sedangkan JVM cache management dan dabase cache system sudah disetting secara maksimal supaya tidak menghabiskan ruang di physical memory, dan hal tersebut mengharuskan saya untuk melakukan manual restart secara berkala.

Namun hal ini sudah tidak menjadi kekhawatiran lagi sekarang, ketika saya menemukan sebuah perintah untuk membersihkan cache tersebut dari memory. Dan yang akan dibahas dalam tulisan berikut.

Ada 3 macam metode pembersihan cache dalam memory, yang hanya dibedakan dengan angka 1, 2 dan 3, yang pertama adalah membersihkan pagecache (pagecache merupakan informasi yang disimpan di memory hasil dari proses baca dan tulis data terhadap harddisk), kedua membersihkan dentries dan inodes (dentries dan inodes merupakan bagian dari Virtual File System dalam Linux), ketiga membersihkan pagecache, dentries dan inodes:

echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

Tetapi jangan lupa untuk menuliskan perintah “sync” di shell sebelum menuliskan ketiga macam perintah diatas. Dari ketiga perintah tersebut diatas untuk mendapatkan hasil yang maksimal sebaiknya menggunakan “echo 3 > /proc/sys/vm/drop_caches”, dan dengan menggunakan perintah “top” maka kita dapat melihat hasil penurunan nilai yang terdapat dibagian “memory used” dari interface yang dihasilkan perintah “top”.

Setelah mengetahui kegunaan dari perintah diatas maka kita dapat menggunakannya ketika memory server penuh, tapi akankah hal ini dilakukan secara manual? Jawabanya “Bisa!”, bayangkan jika hal tersebut tidak dapat dilakukan secara otomatis maka akan mengakibatkan orang yang bertugas sebagai server administrator menderita. Oleh karena itu baiknya kita gunakan crontab untuk menjadwalkan perintah tersebut dieksekusi. Cukup dengan menyisipkan perintah yang tertulis dibawah ini ke editor crontab maka fungsi untuk membersihkan memory cache sudah dapat berjalan setiap jam 6 pagi dan jam 6 sore.

0 6,18 * * * sync
1 6,18 * * * echo 3 > /proc/sys/vm/drop_caches

Dalam artikel ini tidak diterangkan lebih lanjut mengenai crontab dan bagaimana cara melakukan editing terhadap fungsi crontab, karena untuk mengetahui lebih lanjut tentang ini dapat dilihat di artikel “backup mysql database secara periodik dalam server solaris 10”.

Mungkin saat ini hanya sekian ilmu yang bisa dibagi dengan pembaca semoga bermanfaat, jika ada kekurangan atau masukan yang dapat meningkatkan kemampuan jangan sungkan untuk memberikan komentar.

View Pdf Version


Actions

Information

4 responses

17 03 2012
Abiel Hakeem

Salam,

Kebetulan saya developer Java yang sedang mendeploy aplikasi web di suatu bank, kemarin (16-03-2012) saya mendapatkan laporan ketika Tomcat yang di run mengambil cache memory hingga 10 GB, sehingga adminnya pusing.

tulisan ini sangat membantu, nanti saya forward ke net-admin yang menghandle deployment aplikasi web yg sedang diimplementasikan.

18 03 2012
agienthea

@Abiel Hakeem: biasanya jika program Tomcat mengambil cache memory hingga sebesar itu ada yang leak di program Java yang dibuat, jika programnya menggunakan Hibernate dan ehcache mungkin bisa cek di file ehcache.xml bisa di edit2 disitu supaya file cache nya tidak memakan space di memory, atau pergunakan java -option secara maksimal untuk mengatur file2 class yang sudah tidak terpakai untuk di destroy.

1 08 2012
Wiwin Then

sangat membantu sekali. terima kasih admin. saya sudah coba di mesin production dan aman dilakukan pada saat jam kerja. perintah tsb hanya membersihkan cache yang tidak digunakan. jadi, perintah ini sangat2 membantu ketika free memory dibutuhkan…

27 09 2012
agienthea

sama2…. senang ketika ada orang yg terbantu dengan tulisan saya… 😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s




%d bloggers like this: