linux üzerindeki fileytem'in önbelleğini nasıl temizleyebilirim?


9

Bir performans testinde, linux sisteminin önbelleğinin (sayfa önbellek / inode önbellek vb. Dahil) etkisini atlamak istiyorum.

O_DIRECT bayrağını denedim, ancak doğrudan I / O hala bazı önbellek etkisi "zevk" olduğu ortaya çıktı.

Sistem önbelleğinin etkisini kapatmanın kapsamlı bir yolu var mı?


2
Böyle bir "gerçek dışı" performans testinin amacı nedir? Hiçbir modern işletim sisteminin asla izin vermeyeceği bir şeyi test etmeye çalışıyorsunuz.

Ne yazık ki, hiç de gerçek değil, hala çekirdek aio bugün nasıl çalışıyor. Sooooooo, Mr.T'nin eşzamansız I / O ve önbelleğin birbirini dışlayan terimler olmadığını fark etmesini diliyorum. Bu Microsoft'un 15 yıl önce fark ettiği bir şeydi (Vista'dan önceki performans, özellikle eşzamanlılık altında hayal kırıklığı yaratabilir). Bazı Hintli adamlar da yıllar önce bir yama yazdı, ancak geri çevrildi.

Yanıtlar:


14

(aslında düşüyor ..) syncönce koş , sonra

ücretsiz sayfalama:

echo 1 > /proc/sys/vm/drop_caches

ücretsiz dişçilik ve inode:

echo 2 > /proc/sys/vm/drop_caches

ücretsiz sayfa, dişçilik ve inode:

echo 3 > /proc/sys/vm/drop_caches

Sonra temiz bir önbellek ile başlayabilirsiniz, ancak elbette önbellekleme yine de işe yarayacaktır.


bir yerde bu yöntemi duydum. ama benim ubuntu 10.04 üzerinde böyle bir dosya yok. bu yüzden yukarıdaki komutları yürütemedim.

@ tom_cat: 2.6.16'dan daha yeni bir çekirdeğe ihtiyacınız var ve yanılmıyorsam Ubuntu 10.04 2.6.32 ile geldi, bu yüzden bu işe yaramalı. Ben sadece bu proc girişi (şanssız hiçbir 10.04 burada artık) var

@Damon: Evet, haklısın. çok teşekkürler. Eski çekirdeğin uzak bir makinesinde oturum açtığımı fark ettim.

0

hayır, önbelleği atlayamazsınız. Ancak, ek sistem çağrısı fsync (3) ile bir dosya sistemi senkronizasyonunu (yani, önbelleği temizleyip verileri diske yazabilirsiniz) zorlayabilirsiniz.

Selamlar, CK

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.