Bellek önbelleğini nasıl temizler veya devre dışı bırakırım?


49

Sistem başladıktan sonra birkaç dakika içinde hafıza önbelleğim dolar ve takas kullanmaya başlar. İşte / proc / meminfo ekran görüntüsü.

hafıza

Ancak, bu işlemi devre dışı bırakabilirsem / önbelleği ondan sonra temizleyebilirsem, sistemimin bir dereceye kadar hızlanacağını düşünüyorum. Burada yanılıyorsam düzelt.

Ayrıca Bleachbit bellek temizlemeyi de denedim, ancak bellek önbelleğini gerektiği gibi temizlemiyor gibi görünüyor. Ayrıca, özellik hala deneysel bir aşamadadır.

ağartıcı bellek

Burada zaten benzer bir soru gönderildi: Önceden alma önbelleğini nasıl devre dışı bırakabilirim? , fakat Ubuntu Sunucusu ve ayrıca elle yapılan ayarlarla ilgili cevaplar ile ilgiliydi.

Bu yüzden, Ubuntu 12.04 için Bellek Önbelleğini devre dışı bırakmak / etkinleştirmek için bir yazılım olup olmadığını bilmek istiyorum.


Bunun problemini çözeceğine emin misin? Bellek sebepsiz yere dolmuyor. Ayrıca hafızamın dolması sorununu da yaşadım ve geriye doğru sürdüm tracker-miner. Tüm izleyici paketlerini kaldırdıktan sonra sorunum ortadan kalktı. Ayrıca 4GB belleğim var ve 2GB chaches tarafından kullanılıyor, ancak herhangi bir sorun yaşamadım.
daniel kullmann

1
@danielkullmann: Önbelleğe alınmış hafızadan bahsediyor, uygulamalar tarafından kullanılan hafızadan değil ...
ish

@izx Evet, biliyorum. Sadece yanlış sorunun çözümünü arayabilirdi. Çekirdek, programlar tarafından gerektiğinde önbelleklerle belleği doldurmayacak kadar akıllıdır. Bu yüzden hafıza problemlerinin çok fazla hafıza kullanan bir programdan geldiğini düşünüyorum.
daniel kullmann

@ danielkullmann: Tüm bu hafızayı karıştıran bir sürece nasıl geri götürdüğünüzü merak ediyorum ... Bunun için bir araç / komut var mı?
Yasak Gözetmen

Sadece htop komutunu kullandım ve hafıza kullanımına göre sıraladım.
daniel kullmann

Yanıtlar:


58

Not: Linux RAM'ınızı "yemez" DEĞİL! Lütfen nedenini anlamak için Geirha'nın mükemmel cevaplarına bir göz atın ...

Yukarıdaki nottan sonra, önbelleğin hala yardımcı olabileceğini düşünüyorsanız, kesinlikle deneyebilirsiniz: terminalden bir liner:

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

Önbelleği devre dışı bırakmanın kolay bir yolu yoktur , ancak isterseniz, her dakika olduğu kadar sık ​​temizleyerek aynı efekti elde edebilirsiniz :

  • Bir cron işi yap
  • Bu satırı basın Alt-F2, yazın gksudo gedit /etc/crontabve aşağıya ekleyin:

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

  • Bu her 15 dakikada bir temizler. İlk parametreyi değiştirerek veya değiştirerek gerçekten yapmak istiyorsanız 1 veya 5 dakika ayarlayabilirsiniz .**/5*/15

Önbellek hariç GERÇEK serbest RAM'i tanıyan bir liner

Geirha'nın cevabı ayrıntıları açıklıyor, ancak kısacası, ücretsiz megabayt sayısını elde edersiniz:

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

2GB'lık komut satırı sunucumda son derece sağlık durumu var 1835.


3
Ergh! Önbelleği yıkmak yeterince kötü, ama bunun için bir cronjob yapmak? Yani, bu soruyu “çözüyor”, tabiri caizse, ama bu daha az acı verici hale getirmiyor.
Reid


@izx: hmm ... öyleyse bu nasıl bir cronjob yaratır. Önbelleği düzenli aralıklarla bırakacaksam, aslında sistemi yavaşlattığım anlamına gelmiyor mu? Öyleyse, cevabınız geirha'nın cevabından çok teorik bir cevaba benziyor. : p İyi cevap BTW ...
Yasaklı Gözlemci

1
@ForbiddenOverseer: Sadece şunu koydum, çünkü önbelleği "devre dışı bırakmak" istediniz ve bunu periyodik olarak bırakmak bunu başarmanın tek yolu. En üstteki notum (ve geirha'nın bağlantısı) açıkça gösteriyor ki, önbellek aslında "RAM'inizi yiyormuş gibi" görünse bile, çoğu zaman sisteminizi hızlandırıyor --- --- yani, IMO sisteminizi yavaşlatıyor olacaktı. , ama bunu denemek istedin, bu yüzden sorunuzu sadece sizi rahatsız etmek ve bunun kötü bir fikir olduğunu söylemek yerine cevapladım ve bunu yapmamalısınız! Size sadece deney yapma gücü verdim ...: D
ish

1
Ubuntu Sunucusu 12.04 LTS'yi VDS olarak kullanıyorum. Bu cevapta verilen yaklaşımı deniyorum ama sürekli alıyorum tee: /proc/sys/vm/drop_caches: Permission denied. Herhangi bir ipucu?
Eimantas,

44

Yardım! Linux RAM'imi yedi!

www.linuxatemyram.com , SSS biçiminde bunu güzelce açıklıyor;

Neler oluyor?

Linux, disk önbelleğe almak için kullanılmayan belleği ödünç alıyor. Bu, hafızanız az gibi görünüyor, ama değilsiniz! Herşey yolunda!

Bunu neden yapıyor?

Disk önbelleğe alma sistemi çok daha hızlı yapar! Yenidoğanların kafasını karıştırmaktan başka olumsuz taraf yoktur. Hiçbir zaman uygulamalardan hafıza almaz!

Daha fazla uygulama çalıştırmak istersem ne olur?

Uygulamalarınız daha fazla bellek isterse, disk önbellek ödünç aldığınız bir öbeği geri alırlar. Disk önbelleği hemen uygulamalara hemen geri verilebilir! Koçun altında değilsin!

Ne kadar serbest koçum olduğunu gerçekten nasıl anlarım?

Uygulamalarınızın değişmeden ne kadar koç kullanabileceğini görmek için, free -m komutunu çalıştırın ve "uygun" sütununa bakın:

ücretsiz
              toplam kullanılan ücretsiz paylaşılan buff / önbellek mevcut
Mem: 1504 1491 13 0 855       792
Swap: 2047 6 2041
Bu senin mebibitler içindeki cevabın.


Kaynak: belirtildiği gibi, mükemmel www.linuxatemyram.com - daha fazla bilgi için lütfen ziyaret edin.


1
@geirha: Bağlantı için teşekkürler ... Çok bilgilendiriciydi ve sonunda verilen deneyleri beğendim !!
Yasak Gözetmen

@izx: tbh, Kabul edilen cevaba karar vermekte zorlanıyorum. Bahsetmiyorum bile, bu bağlantı aslında her şekilde bilgilendirici oldu ...;)
Yasak Aşırı

@ForbiddenOverseer: ayrıntılı bir cevap için cevabımdaki yorumuma bakın - size neden yapmamanız gerektiğinin kısa bir versiyonunu verdim, ancak sorunuzu yine de cevaplayıp, kendinize deneme ve kendiniz denemek için güç verdim. Eğer önbelleği temizlemenin / bırakmanın işe yaradığını düşünmüyorsanız, artık yapmayınız :)
ish

@izx, bu dava için bunu biraz zor buldum. Bununla birlikte, konuyla ilgili yararlı bir metin yazdınız, bu yüzden cevabınıza URL'yi ekleyebilir ve cevabımı silebiliriz.
geirha

Gerek yok, bağlantınız mükemmel bir kaynakta; Ben sadece bazı kısımları cevabın içine dahil ettim (atıfta bulunarak), şimdi bu tamamen geçerli bir alternatif (aslında halk tarafından görüldüğü gibi daha iyi cevap!) Harika bir iş, yükseltilmiş - 5k'a hoş geldiniz!
ish

4

Mevcut Bellek Kullanımınızı Kontrol Etmek İçin

 watch -n 1 free -m

veya

 watch -n 1 cat /proc/meminfo

Yer Açmak

 sudo sysctl -w vm.drop_caches=3

NOT: Bu işlem sisteminizi daha hızlı hale getirmez, ne de kararlılığını ve performansını etkilemez, sadece Linux Çekirdeği tarafından önbellekte kullanılan belleği temizler.

veya

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

NOT: Yukarıdaki komutları belirli zaman aralıklarında çalışacak şekilde zamanlamak için cron işlerini kullanabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.