Bagaimana cara saya membersihkan atau menonaktifkan cache memori?

49

Setelah sistem dimulai, dalam beberapa menit cache memori saya terisi dan mulai menggunakan swap. Berikut screenshot dari / proc / meminfo.

ingatan

Namun, jika saya dapat menonaktifkan proses ini / membersihkan cache sekali setelah itu, saya pikir sistem saya akan mempercepat sampai batas tertentu. Perbaiki saya jika saya salah di sini.

Saya juga sudah mencoba membersihkan memori Bleachbit, tetapi sepertinya tidak membersihkan cache memori dengan benar. Selain itu, fitur ini masih dalam tahap percobaan.

memori bleachbit

Sudah ada pertanyaan serupa yang diposting di sini: Bagaimana saya bisa menonaktifkan cache prefetch? , tapi itu menyangkut Ubuntu Server, dan juga jawabannya melibatkan pengaturan manual dll.

Jadi, saya ingin tahu apakah ada beberapa perangkat lunak untuk menonaktifkan / mengaktifkan Memory Cache untuk Ubuntu 12.04.

Bharadwaj Srigiriraju
sumber
Apakah Anda yakin ini akan menyelesaikan masalah Anda? Memori tidak mengisi tanpa alasan. Saya juga memiliki masalah yang mengisi memori saya, dan melacaknya kembali tracker-miner. Setelah saya menghapus semua paket pelacak, masalah saya hilang. Saya juga memiliki memori 4GB, dan 2GB digunakan oleh chaches, tapi saya juga tidak mengalami masalah.
daniel kullmann
1
@danielkullmann: Dia mengacu pada memori yang di-cache, bukan memori yang digunakan oleh aplikasi ...
ish
@izx Ya, saya tahu. Bisa jadi dia mencari solusi dari masalah yang salah. Kernel cukup pintar untuk tidak mengisi memori dengan cache ketika dibutuhkan oleh program. Itu sebabnya saya berpikir bahwa masalah ingatannya berasal dari program yang menggunakan terlalu banyak ingatan.
daniel kullmann
@danielkullmann: Saya ingin tahu bagaimana Anda melacaknya kembali ke satu proses yang menelan semua memori itu ... Apakah ada alat / perintah untuk itu?
Bharadwaj Srigiriraju
Saya hanya menggunakan perintah htop, dan diurutkan berdasarkan penggunaan memori.
daniel kullmann

Jawaban:

58

Catatan: Linux TIDAK "memakan" RAM Anda! Silakan lihat jawaban Geirha yang luar biasa di bawah ini untuk memahami mengapa ...

Setelah catatan di atas, jika Anda masih merasa "membersihkan" cache bisa membantu, Anda tentu dapat mencoba: itu adalah satu-baris dari terminal:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Tidak ada cara mudah untuk menonaktifkan cache, tetapi Anda dapat mencapai efek yang sama dengan membersihkannya sesering setiap menit , jika Anda ingin:

  • Jadikan itu sebagai cron-job
  • Tekan Alt-F2, ketik gksudo gedit /etc/crontab, dan tambahkan baris ini di dekat bagian bawah:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Ini membersihkan setiap 15 menit. Anda dapat mengatur ke 1 atau 5 menit jika Anda benar-benar ingin mengubah parameter pertama menjadi *atau */5bukan*/15

Satu liner untuk mengetahui RAM gratis NYATA, kecuali cache

Jawaban Geirha menjelaskan detailnya, tetapi singkatnya, Anda mendapatkan jumlah megabita gratis dengan:

free -m | sed -n -e '3p' | grep -Po "\d+$"

yang pada server baris perintah 2GB saya mengembalikan kesehatan yang sangat 1835.

ish
sumber
3
Ergh! Mematikan cache sudah cukup buruk, tetapi membuat cronjob untuk itu? Maksud saya, ini memang "menyelesaikan" pertanyaan, jadi untuk berbicara, tetapi itu tidak membuatnya tidak terlalu menyakitkan.
Reid
@izx: hmm ... jadi ini adalah bagaimana seseorang menciptakan cronjob. Jika saya akan menjatuhkan cache secara berkala, bukankah itu berarti saya sebenarnya memperlambat sistem? Jika itu masalahnya, saya pikir jawaban Anda lebih mirip jawaban teoretis daripada jawaban geirha. : p Jawaban bagus BTW ...
Bharadwaj Srigiriraju
1
@ForbiddenOverseer: Saya hanya memasukkannya karena Anda ingin "menonaktifkan" cache, dan menjatuhkannya secara berkala adalah satu-satunya cara untuk mencapai itu. Catatan saya di bagian atas (dan tautan geirha) dengan jelas menyatakan bahwa cache sebenarnya mempercepat sistem Anda sebagian besar waktu, bahkan jika itu terlihat seperti "memakan RAM Anda" --- jadi ya, IMO Anda akan memperlambat sistem Anda , tetapi Anda ingin mencobanya, jadi saya hanya menjawab pertanyaan Anda alih-alih hanya mengganggu Anda dan memberi tahu Anda bahwa itu adalah ide yang buruk dan karenanya Anda tidak boleh melakukannya! Saya hanya memberi Anda kekuatan untuk bereksperimen ...: D
ish
1
Saya menggunakan Ubuntu Server 12.04 LTS sebagai VDS. Saya mencoba pendekatan yang disediakan dalam jawaban ini, tetapi saya terus mendapatkan tee: /proc/sys/vm/drop_caches: Permission denied. Ada tips?
Eimantas
44

Tolong! Linux memakan RAM saya!

www.linuxatemyram.com menjelaskan hal ini dengan indah dalam formulir FAQ, dengan intinya adalah:

Apa yang sedang terjadi?

Linux meminjam memori yang tidak digunakan untuk cache disk. Ini membuatnya tampak seperti Anda kehabisan memori, tetapi Anda tidak! Semuanya baik-baik saja!

Mengapa melakukan ini?

Caching disk membuat sistem lebih cepat! Tidak ada kerugian, kecuali untuk pemula yang membingungkan. Tidak mengambil memori dari aplikasi dengan cara apa pun!

Bagaimana jika saya ingin menjalankan lebih banyak aplikasi?

Jika aplikasi Anda ingin lebih banyak memori, mereka hanya mengambil kembali potongan yang dipinjam oleh cache disk. Cache disk selalu dapat segera dikembalikan ke aplikasi! Anda tidak rendah pada ram!

Bagaimana saya melihat berapa banyak ram gratis yang saya miliki?

Untuk melihat berapa banyak ram yang bisa digunakan aplikasi Anda tanpa bertukar, jalankan free -m dan lihat kolom "tersedia":

$ gratis -m
              total digunakan buff / cache bersama gratis yang tersedia
Mem: 1504 1491 13 0 855       792
Swap: 2047 6 2041
Ini jawaban Anda di mebibytes.


Sumber: sebagaimana disebutkan, www.linuxatemyram.com yang sangat baik - silakan kunjungi untuk informasi lebih lanjut.

geirha
sumber
1
@geirha: Terima kasih atas tautannya ... Itu sangat informatif dan saya menyukai eksperimen yang diberikan pada akhirnya !!
Bharadwaj Srigiriraju
@izx: tbh, saya kesulitan menentukan jawaban yang diterima. Belum lagi, tautan ini sebenarnya informatif dalam segala hal ...;)
Bharadwaj Srigiriraju
@ForbiddenOverseer: lihat komentar saya di jawaban saya untuk jawaban terperinci - Saya memberi Anda versi singkat mengapa Anda tidak boleh melakukannya, tapi tetap jawab pertanyaan Anda, memberi Anda kekuatan untuk bereksperimen dan mencobanya sendiri. Jika Anda tidak berpikir membersihkan / menjatuhkan cache membantu, jangan lakukan lagi :)
ish
@izx, saya merasa agak sulit melakukan itu untuk kasus ini. Namun, Anda memang menulis teks yang bermanfaat tentang masalah ini, jadi mungkin Anda bisa menambahkan url ke jawaban Anda, dan kami menghapus jawaban saya?
geirha
Tidak perlu, tautan Anda di sumber yang bagus; Saya baru saja memasukkan beberapa bagian ke dalam jawaban (dengan atribusi) sehingga sekarang menjadi alternatif yang benar-benar valid (sebenarnya jawaban yang lebih baik seperti yang dilihat oleh publik!) Kerja bagus, terangkat - selamat datang di 5k!
ish
4

Untuk Memeriksa Penggunaan Memori Anda Saat Ini

 watch -n 1 free -m

atau

 watch -n 1 cat /proc/meminfo

Untuk Membebaskan Ruang

 sudo sysctl -w vm.drop_caches=3

CATATAN: tindakan ini tidak akan membuat sistem Anda lebih cepat atau akan memengaruhi stabilitas dan kinerjanya, itu hanya akan membersihkan memori yang digunakan oleh Kernel Linux pada cache.

atau

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

CATATAN: Anda dapat menggunakan pekerjaan cron untuk menjadwalkan perintah di atas untuk dijalankan pada interval waktu tertentu.

SilleBille
sumber