Ubuntu RAM önbelleklerini anlık olarak temizlemek

____________________________________________________________________

İşletim sistemleri çalışırken disk girdi çıktı işlemlerini hızlandırmak veya kullanıcıya daha hızlı hissettirmek amacıyla RAM üzerinde bir önbellek tutar. Windows altında bu çok fazla hissedilir gelmese de, görev yönetici programlarında Linux’ta boş bellek miktarının çok az kaldığını görebiliyoruz. Bu normal şartlarda olumsuz bir şey değil. RAM her ne kadar dolu görünse de, buradaki dosyalar bir şekilde sabit diskteki dosyaların kopyası ya da programların kullandığı veya ürettiği verilerin RAM yani fiziksel bellek üzerinde bulunan bir kopyası. Bu veriye ihtiyaç duyulduğunda çekirdek yavaş olan diskte o dosyaya erişip onu belleğe kopyalamak ile uğraşacağına, hemen onun RAM üzerindeki önbellekte hazır olan kopyasını okuyup işine bakabiliyor. Bu sabit diske oranla aşırı hızlı olan RAM sayesinde RAM kapasitesi yeterince büyükse olağanca bir performans artışı sağlayabiliyor. Buradaki önbellekteki veriler, herhangi bir uygulama belleğe ihtiyaç duyulduğunda silinerek uygulamaya ihtiyacı oranında bellek sağlayarak bellek sıkıntısı çekilmesini önlüyor. Bu şekilde sistem bu bellekler sayesinde olduğundan daha hızlı kullanılabilir hale dönüşüyor.

Uçbirimde free komutunu çalıştırarak bellek kullanımımızla ilgili bilgi alabiliyoruz. Buffer ve Cache sütunları o anda önbellek olarak bellekte bulunan verinin miktarını gösteriyor. Ayrıca slabtop komutu da daha detaylı bilgi veriyor.

Ne var ki, bu önbellekler yeterince verimli çalışmadığında fiziksel belleği doldurarak çeşitli sorunlara sebep olabiliyor. Benim karşılaştığım durum çok sayıda ofis belgesi, İnternet sayfası vs. açıkken ve şarkı listesi okuma amaçlı diskten çok sayıda müzik parçasına erişim yapılmış ve bunlar önbellekleri doldurmuş iken, yeni bellek ihtiyacı olan uygulamalara bellek ayrılamaması. Ekran görüntüsü donuyor, fare imleci hariç hareket edebilen bir şey yok. Müzik çalıyorsa dona dona çalıyor. Ubuntu 12.04’te ara ara karşılaştığım bu durum, Ubuntu 12.10’da ise neredeyse her birkaç açışımda sistemi ortaya çıkan bu durum bir sorun oldu. Parmak belleğimden sabit diskime 1 GB veri kopyalıyorum, aynı anda buffer önbelleklerimin kullanımı da 1 GB artıyor. 😀 Nautilus ile biraz geziyorum, birkaç yüz MB boş belleğim kalıyor.

Bununla ilgili yapılacak çeşitli şeyler var ama biraz deneme yanılma gerektirdiğinden sonuçları, o konuda pek yazmak istemedim. Ama benzer bir durum ortaya çıktığında, yani önbellekler çok fazla dolduğunda ve sorun çıkarmaya başladıklarında bunları sistemi yeniden başlatmaya gerek kalmadan boşaltmanın bir yolu var.

Bunun için, öncelikle uçbirimi açıyoruz.

sudo su

komutundan sonra parolamızı girip devam ediyoruz. Sonrasında da gireceğimiz aşağıdaki komut fiziksel belleğimizde yer işgal eden önbelleklerimizi temizliyor.

echo 3 > /proc/sys/vm/drop_caches

Artık buffer silinmiş ve cache de önemli oranda boşaltılmış olacaktır. Sürekli bu durum yaşanıyorsa kalıcı farklı çözümler uygulanması gerek ama belleği o anlık için boşaltmak bu komutla kolayca yapılabiliyor. Ha bu sadece Ubuntu değil, çoğu Linux dağıtımı için geçerli bir şey.