Windows disk okuma önbelleği nasıl temizlenir?


13

Performans testi için Windows disk okuma önbelleğini temizlemem gerekiyor. Google'ı denedim ancak yeniden başlatma veya diğer manuel şeylerden başka bir şey bulamadım. Bunu vermeden ve yapmadan önce, herkesin Windows disk okuma önbelleğini temizlemenin bir yolunu bilip bilmediğini bilmek istiyorum. Windows 7 üzerinde test yapıyorum, ancak Windows XP çözümleriyle de ilgileniyorum.

Yanıtlar:


3

Alternatif olarak, önbelleği testte kullanılmayacağını bildiğiniz verilerle doldurun, ardından testi çalıştırın.


1
Alternatif olarak, kullanılabilir tüm RAM'leri alabilirsiniz. Windows bu RAM'i kullanmak için dosya önbelleğini serbest bırakır. Ayrıntılar için Stephen Denne tarafından verilen cevaba bakınız.
Ultralisk

Ben daha az 'çözüm' bir şey umuyordum ama benim durumumda otomatik test senaryosunda uygulamak için en kolay olduğunu düşünüyorum. Önerin için teşekkürler.
Sebastiaan M


3

Windows XP Dosya Sistemi Önbelleğini çok daha iyi görüntülemek için - ATM'yi Tim Murgent tarafından deneyin - hem dosya sistemi önbelleğini Çalışma Kümesi boyutunu hem de Bekleme Listesi boyutunu daha ayrıntılı ve doğru bir görünümde görmenizi sağlar. Windows XP için - V2 ve V3 için Server 2003, Vista veya daha üst bir sürüm gerektiğinden, buradan indirebileceğiniz eski ATM 1 sürümüne ihtiyacınız vardır .

Cacheset'in "Önbellek WS Min" i azaltmasına rağmen, gerçek verilerin, başka bir şeyle değiştirilinceye kadar kullanılabileceği Bekleme listeleri biçiminde var olmaya devam ettiğini gözlemleyeceksiniz. Daha sonra başka bir şeyle değiştirmek için Windows Server 2003 Kaynak Seti Araçları'ndan MemAlloc, flushmem, Chad Austin tarafından veya Consume.exe gibi bir araç kullanın.


3

RAMMap kullandım . Birkaç tür ayırma için boş hafıza imkanı vardır.

Dosya önbelleğinin içeriği "Dosya Özeti" sekmesinde görülebilir ve "Boş" menüsünden "Boş Bekleme Listesini Boşalt" ı seçmek bu önbelleği temizlemelidir.


Bu teorik olarak soruyu cevaplayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
slm

1

Makineyi yeniden başlatın.


Bu 'büyük çekiç' çözümü. Stephen Denne tarafından verilen cevaba bakınız.
Ultralisk

1

En iyi uygulama, karşılaştırma yaptığınız tüm test dosyalarının, en az 1 GB test dosyasıyla, dizi denetleyicisi önbelleğinden (veya bir vm misafirinde karşılaştırma yapılıyorsa Windows işletim sistemi belleğinden) 2 kat daha büyük olmasını sağlamaktır. Bu, önbelleğe almanın reddedilmesini sağlar. Disk kıyaslaması için SQLIO kullanıyoruz ; ekteki belgelerde bol miktarda bilgi bulunmaktadır.


Yapmaya çalıştığım şeylerden biri, projemizin çeşitli yapılandırmalar üzerinde ne kadar hızlı oluşturduğunu kıyaslamak. Gerçekten bence bu dosyaların boyutunu artıramıyorum. :)
Sebastiaan M

1

Greg, bu soruna geçici bir çözüm bulmanın yolu, birlikte çalıştığınız veri kümesinin kullanılabilir RAM miktarını büyük ölçüde aşmasını sağlamaktır. Önemli miktarda denetleyici ve disk tabanlı önbellek içeren bir donanım platformunda test yapıyorsanız, bu miktarları da aştığınızdan emin olmak istersiniz. Bu, gördüğünüz performansın, tüm bu önbellek katmanlarının sunduğu yazılım optimizasyonlarından daha fazla gerçek donanım performansıyla bağlantılı olmasını sağlayacaktır.

Bununla birlikte, okuma önbelleğini kullanmak isteyen kriterlerinizi çalıştırmadan önce gerçekten yararlı verilerin okuma önbelleğini temizlemek istiyorsanız, bunu yapmanın yolu, okuma önbelleğinin hemen altındaki tek bir dosyada okumaktır. ve bazı dosya işlemleri yapın. Bu önbelleği temizler ve bu tek büyük dosyayla doldurur. Kapattığınızda, önbelleğiniz önemsediğiniz verilerden etkili bir şekilde temizlenir . Zor kısmı, dosyanın ne kadar büyük olması gerektiğini buluyor, bu günlerde 3GB büyüklüğünde olabilir; hangi noktada çalışabilmesi için birkaç 1GB önemsiz dosyaya ihtiyacınız olabilir.


0

Bence herhangi bir seçenek "manuel şeyler" olacak. UNIX kapsamında, her bir kıyaslama çalışmasından önce, genellikle iyi bir ölçüm için bir "yeni başlayanlar" a sahip bir cihazın bağlantısını kesmek / yeniden monte etmek oldukça standarttır. Aygıtları çıkarmak / monte etmek için Windows altında komut satırı araçlarını kullanıp kullanamayacağınızı bilmiyorum, ancak otomasyon hedefinizse, bu tür yardımcı programları aramaya değer.


1
Linux altında unmount / remuont herhangi bir nedenden dolayı bir seçenek değilse sync; echo 3 > /proc/sys/vm/drop_caches- bu sadece belirli bir birime ait olanları değil, tüm önbellek / tamponları da etkiler. Daha önce Windows için benzer bir numara aradım ama bir tane bulamadım.
David Spillett

0

StackOverflow ile ilgili kendi sorumu gönderdiğim bu cevaba bir göz atın .

Temel olarak: Yazma paylaşımı erişimi olmayanCreateFile bir tanıtıcı kullanmaya çalışırsanız , bir hata döndürse bile önbelleği temizler ve geçersiz kılar.

Bu yardımcı olur umarım!

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.