Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Disk cache terimi bağlama göre, disk verisinin RAM’de önbelleğe alınmasını veya bir uygulamanın önbellek verisini diskte saklamasını anlatabilir. İkisini ayırmak gerekir. Bu rehberin sunucu bölümünde işletim sisteminin dosya verisini RAM’de tuttuğu sayfa önbelleği ele alınıyor. Aynı dosya yeniden istendiğinde veri fiziksel diskten okunmak yerine RAM’den verilebildiği için erişim süresi ve disk üzerindeki okuma yükü azalır.

Disk cache bir yedek değildir. Önbellekteki veri gerektiğinde silinebilir ve RAM başka işler için kullanılabilir. Ayrıca “boş” görünen RAM’in tamamı kullanılmıyor anlamına gelmez; Linux, boş belleği disk verilerini önbelleğe almak için değerlendirebilir.

Nasıl çalışır?​


Bir web sunucusu bir dosyayı ilk kez okuduğunda işletim sistemi ilgili blokları diskten alır ve RAM’de tutabilir. Aynı dosya tekrar okunursa işletim sistemi önce RAM’deki kopyayı kontrol eder. Kopya geçerliyse disk erişimi yapılmadan sonuç döndürülür. RAM yetmezse daha az kullanılan cache verileri çıkarılır ve alan yeni veriler için kullanılır.

Bu nedenle cache hit olarak düşünülebilecek tekrar okumalar hızlıdır; ancak ilk okuma, büyük dosyalar, düşük RAM, yoğun disk yazma işlemleri veya verinin cache’ten çıkarılması hâlinde disk erişimi yine gerçekleşir. Cache, yavaş bir diski sınırsız biçimde hızlandırmaz ve ağ gecikmesi, uygulama kodu veya veritabanı sorgusu gibi diğer darboğazları ortadan kaldırmaz.

Sunucuda hangi cache kastedilebilir?​


“Disk cache” tek bir bileşeni ifade etmeyebilir. Teşhis yaparken aşağıdaki ayrımı korumak gerekir:

TürNerede bulunur?Temel amacı
İşletim sistemi page cacheRAM ve çekirdekDosya okuma ve yazma erişimini hızlandırmak
Disk veya RAID denetleyici cache’iDisk donanımı ya da denetleyici belleğiDisk komutlarını ve veri aktarımını geçici olarak düzenlemek
Tarayıcının disk önbelleğiCihazdaki kalıcı depolamaHTTP yanıtlarını daha sonraki kullanımlar için tutmak; RAM içi tarayıcı cache’inden ayrıdır
Uygulama cache’iWeb uygulaması, veritabanı veya ayrı cache servisiİşlenmiş sonuçları tekrar üretmeden sunmak

Bu türler birlikte çalışabilir fakat birbirinin yerine geçmez. Örneğin işletim sistemi bir görsel dosyasını RAM’de tutsa bile uygulamanın her istekte aynı pahalı veritabanı sorgusunu çalıştırması, uygulama katmanında ayrı bir optimizasyon ihtiyacı olduğunu gösterir.

Durumu nasıl kontrol edilir?​


Linux sunucuda önce genel bellek görünümünü kontrol edin:

  1. free -h komutunu çalıştırın ve özellikle available değerine bakın. buff/cache değerinin yüksek olması tek başına bellek sorunu değildir; düşük available ve devam eden swap giriş/çıkışı daha anlamlı uyarılardır. Önceden swapte kalmış verinin bulunması tek başına o anda bellek baskısı olduğunu göstermez.
  2. cat /proc/meminfo çıktısında Cached, Buffers, Dirty ve Writeback alanlarını inceleyin. Dirty henüz diske yazılmayı bekleyen, Writeback ise aktif olarak yazılmakta olan belleği gösterir. Süreklilik, değişim hızı ve disk gecikmesi birlikte değerlendirilmelidir; tek bir yüksek örnek darboğaz kanıtı değildir.
  3. Disk darboğazı şüphesinde iostat gibi sistem izleme araçlarıyla bekleme süresini, işlem yoğunluğunu ve aktarım hızını izleyin. Yalnızca RAM cache büyüklüğüne bakarak disk performansı hakkında karar vermeyin.
  4. Sorun yalnız belirli bir uygulamada görülüyorsa web sunucusu, veritabanı ve uygulama günlüklerini birlikte inceleyin. Cache hit oranı düşükse dosyanın sürekli değişmesi, çalışma kümesinin RAM’e sığmaması veya asıl darboğazın disk dışındaki bir katman olması mümkündür.

Komutlar beklenen şekilde çıktı veriyorsa sonuç, sistemin belleği cache için kullandığını gösterir; tek başına “cache’i temizlemek gerekir” anlamına gelmez. Çıktı alınamıyorsa araç kurulu olmayabilir veya yetki eksik olabilir. Önce izleme aracının mevcut olup olmadığını ve ilgili işletim sistemi yetkilerini kontrol edin.

Cache’i temizlemek gerekir mi?​


Genellikle hayır. Cache’i elle temizlemek, kısa süreli teşhis dışında kalıcı performans çözümü değildir; temizlenen veriler sonraki erişimlerde yeniden diskten okunacağı için performans geçici olarak düşebilir. Üretim sunucusunda sırf buff/cache yüksek görünüyor diye temizlik komutu çalıştırmak yerine önce bellek baskısını, swap kullanımını ve disk beklemesini doğrulayın.

Gerçek bir bellek baskısı varsa sonraki karar, cache’i silmek değil nedenini bulmaktır: gereğinden büyük süreçler, sınırlı RAM, yoğun veritabanı işlemleri, aşırı yazma veya uygulamanın kendi cache ayarları incelenmelidir. Yazma cache’i ve donanım cache’iyle ilgili ayarlar değiştirilmeden önce veri bütünlüğü ve güç kesintisi davranışı ayrıca değerlendirilmelidir.

Kaynaklar​



Sık sorulan sorular​


Disk cache ile RAM aynı şey midir?​

Disk cache çoğunlukla RAM’in bir bölümünü kullanır; ancak RAM’in tamamı cache değildir. Uygulamaların kullandığı bellek, çekirdek belleği ve cache alanı farklı amaçlara hizmet eder.

Cache büyüdükçe sunucu mutlaka hızlanır mı?​

Hayır. Cache ancak tekrar kullanılan veriyi hızlı sağlayabildiğinde yararlıdır. Çalışma kümesi RAM’e sığmıyorsa, dosyalar sürekli değişiyorsa veya darboğaz CPU, veritabanı ya da ağ ise daha büyük cache beklenen sonucu vermeyebilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic