Untuk pengujian kinerja saya perlu menghapus cache baca disk Windows. Saya mencoba googling tetapi saya tidak dapat menemukan selain me-reboot atau hal-hal manual lainnya. Sebelum saya menyerah dan melakukan itu, saya ingin tahu apakah ada yang tahu cara menghapus cache disk baca Windows. Saya menguji pada Windows 7, tetapi saya juga tertarik pada solusi Windows XP.
windows-xp
windows-7
Sebastiaan M
sumber
sumber
Saya telah mengajukan pertanyaan yang sama pada Stack Overflow
/programming/478340/clear-file-cache-to-repeat-performance-testing
Saya menggunakan Win XP, tetapi solusi terbaik yang saya dapatkan adalah:
sumber
Untuk tampilan yang jauh lebih baik dari Cache Filesystem Windows XP - coba ATM oleh Tim Murgent - ini memungkinkan Anda untuk melihat cache sistem file Bekerja Mengatur ukuran dan ukuran Standby List dalam tampilan yang lebih rinci dan akurat. Untuk Windows XP - Anda memerlukan ATM versi 1 lama yang tersedia untuk diunduh di sini karena V2 dan V3 memerlukan Server 2003, Vista, atau lebih tinggi.
Anda akan mengamati bahwa meskipun Cacheset akan mengurangi "Cache WS Min" - data aktual masih terus ada dalam bentuk daftar Siaga dari tempat itu dapat digunakan sampai diganti dengan yang lain. Untuk kemudian menggantinya dengan yang lain gunakan alat seperti MemAlloc, flushmem oleh Chad Austin, atau Consume.exe dari Windows Server 2003 Resource Kit Tools.
sumber
Saya telah menggunakan RAMMap . Ini memiliki kemungkinan untuk membebaskan memori dari beberapa jenis alokasi.
Isi cache file dapat diamati di tab "File Summary" dan memilih "Empty Standby List" dari menu "Empty" yang akan menghapus cache ini.
sumber
Nyalakan ulang mesin.
sumber
Praktik terbaik adalah untuk memastikan bahwa setiap file uji yang Anda benchmarkkan 2x lebih besar dari cache controller array (atau memori windows os jika melakukan benchmarking dalam tamu vm), dengan file uji minimum 1 GB. Ini memastikan bahwa setiap caching akan dinegasikan. Kami menggunakan SQLIO untuk pembandingan disk; ada banyak informasi dalam dokumentasi yang menyertainya.
sumber
Echoing Greg, cara untuk mengatasi masalah ini adalah untuk memastikan bahwa kumpulan data yang Anda kerjakan sangat melebihi jumlah RAM yang tersedia. Jika Anda melakukan pengujian pada platform perangkat keras yang juga mencakup sejumlah besar cache dan pengontrol berbasis disk, Anda harus memastikan bahwa Anda melebihi jumlah tersebut juga. Ini akan memastikan bahwa kinerja yang Anda lihat lebih terkait dengan kinerja perangkat keras yang sebenarnya daripada optimasi perangkat lunak yang diperkenalkan oleh semua lapisan cache.
Yang mengatakan, jika Anda benar-benar hanya ingin membersihkan cache read dari data yang berguna sebelum menjalankan benchmark Anda yang INGIN menggunakan read-cache, cara untuk melakukannya adalah dengan membaca dalam satu file berukuran di bawah memori read-cache Anda dan melakukan beberapa operasi file untuk itu. Ini akan membersihkan cache dan mengisinya dengan file besar tunggal ini. Setelah Anda menutupnya, cache Anda secara efektif memunculkan data yang Anda pedulikan . Bagian yang sulit adalah mencari tahu seberapa besar file itu harus, yang hari ini bisa saja berada di urutan 3GB dalam ukuran; pada titik mana Anda mungkin memerlukan beberapa file sampah 1GB untuk membuatnya berfungsi.
sumber
Saya pikir sebagian besar opsi akan menjadi "barang manual". Di bawah UNIX, cukup standar untuk melepas / memasang kembali perangkat sebelum setiap benchmark berjalan, sering kali dengan "newfs" dilemparkan untuk pengukuran yang baik. Saya tidak tahu apakah Anda dapat menggunakan alat baris perintah di bawah Windows untuk melepas / memasang perangkat, tetapi jika otomasi adalah tujuan Anda, maka ada baiknya mencari utilitas seperti itu.
sumber
sync; echo 3 > /proc/sys/vm/drop_caches
- meskipun ini memengaruhi semua cache / buffer bukan hanya yang terkait dengan volume tertentu. Saya sebelumnya telah mencari trik serupa untuk Windows tetapi tidak menemukannya.Melihat jawaban ini yang baru saja saya kirim ke pertanyaan saya sendiri di StackOverflow.
Pada dasarnya: Jika Anda mencoba
CreateFile
menangani tanpa akses tulis-berbagi, maka ia akan menyiram dan kemudian membatalkan cache, bahkan jika itu mengembalikan kesalahan.Semoga ini membantu!
sumber