Apakah Anda menghadapi masalah kinerja dan Anda menduga itu mungkin terkait dengan penggunaan cache? Penggunaan cache yang tinggi biasanya tidak menyebabkan masalah kinerja, tetapi mungkin menjadi penyebab utama dalam beberapa kasus yang jarang terjadi.
Apa itu Cache Memori
Untuk mempercepat operasi dan mengurangi I/O disk, kernel biasanya melakukan caching sebanyak memori. Dengan desain, halaman yang berisi data yang di-cache dapat digunakan kembali sesuai permintaan untuk penggunaan lain (misalnya, aplikasi) Penggunaan kembali memori untuk digunakan dalam hal ini caranya tidak lebih lambat dari mengklaim halaman yang belum tersentuh.
Apa tujuan dari /proc/sys/vm/drop_caches
Menulis ke /proc/sys/vm/drop_caches memungkinkan seseorang untuk meminta kernel segera menjatuhkan sebanyak mungkin data cache yang bersih. Ini biasanya akan mengakibatkan beberapa memori menjadi lebih jelas tersedia; namun, dalam keadaan normal, ini seharusnya tidak diperlukan.
Cara mengosongkan Cache Memori menggunakan /proc/sys/vm/drop_caches
Menulis nilai yang sesuai ke file /proc/sys/vm/drop_caches menyebabkan kernel menghapus cache, dentries, dan inode bersih dari memori, menyebabkan memori tersebut menjadi bebas.
1. Untuk menghapus PageCache, jalankan saja:
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Untuk menghapus dentries (Juga disebut sebagai Directory Cache) dan inode dijalankan:
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Untuk menghapus PageCache, dentries dan inode dijalankan:
# sync; echo 3 > /proc/sys/vm/drop_caches
Menjalankan sinkronisasi menulis halaman kotor ke disk. Biasanya halaman kotor adalah memori yang digunakan, sehingga tidak tersedia untuk dibebaskan. Jadi, menjalankan sinkronisasi dapat membantu operasi penurunan berikutnya untuk mengosongkan lebih banyak memori.
Tembolok halaman adalah memori yang disimpan setelah membaca file. Kernel Linux lebih memilih untuk menyimpan cache halaman yang tidak digunakan dengan asumsi file yang dibaca sekali kemungkinan besar akan dibaca lagi dalam waktu dekat, sehingga menghindari dampak kinerja pada disk IO.
dentry dan inode_cache adalah memori yang disimpan setelah membaca atribut direktori/file, seperti open() dan stat(). penyok umum terjadi di semua sistem file, tetapi inode_cache berbasis per-file-sistem. Kernel Linux lebih suka menyimpan informasi ini dengan asumsi itu akan dibutuhkan lagi dalam waktu dekat, sehingga menghindari disk IO.
Catatan :Dimulai dengan perintah sinkronisasi seperti yang ditunjukkan pada 3 perintah di atas adalah opsional. Perintah sinkronisasi memungkinkan kernel menulis sebanyak mungkin halaman cache kotor ke disk (untuk memaksimalkan jumlah halaman cache data yang dapat dihapus)Cara mengosongkan Cache Memori menggunakan sysctl
Anda juga dapat Memicu penghapusan cache dengan menggunakan sysctl -w vm.drop_caches=[number] memerintah.
1. Untuk membebaskan pagecache, dentries, dan inode, gunakan perintah di bawah ini.
sysctl -w vm.drop_caches=3
2. Untuk membebaskan dentries dan inode saja, gunakan perintah di bawah ini.
sysctl -w vm.drop_caches=2
3. Untuk mengosongkan cache halaman saja, gunakan perintah di bawah ini.
sysctl -w vm.drop_caches=1Catatan :Menggunakan vm.drop_caches dapat menyebabkan kebuntuan jika sistem berada di bawah memori yang berat dan beban I/O!!!
Data cache "Bersih" memenuhi syarat untuk dihapus. Data cache "kotor" perlu ditulis di suatu tempat. Menggunakan vm.drop_caches tidak akan pernah memicu kernel untuk menghapus cache kotor.