Alat atau teknik apa yang dapat saya gunakan untuk menghapus konten file cache untuk mencegah hasil kinerja saya miring? Saya yakin saya perlu benar-benar menghapus, atau secara selektif menghapus informasi cache tentang file dan isi direktori.
Aplikasi yang saya kembangkan adalah utilitas kompresi khusus, dan diharapkan melakukan banyak pekerjaan membaca dan menulis file yang belum disentuh sistem operasi baru-baru ini, dan yang blok disknya kemungkinan tidak akan di-cache.
Saya ingin menghapus variabilitas yang saya lihat di waktu IO ketika saya mengulangi tugas membuat profil berbagai strategi untuk melakukan pekerjaan pemrosesan file.
Saya terutama tertarik pada solusi untuk Windows XP, karena itu adalah mesin pengembangan utama saya, tetapi saya juga dapat menguji menggunakan linux, dan saya juga tertarik dengan jawaban untuk lingkungan itu.
Saya mencoba SysInternals CacheSet , tetapi mengklik "Clear" tidak menghasilkan peningkatan yang dapat diukur (pemulihan ke waktu setelah cold-boot) pada waktu untuk membaca ulang file yang baru saja saya baca beberapa kali.
sumber
Jawaban:
Gunakan aplikasi RAMMap SysInternal .
Opsi menu Empty / Empty Standby List akan menghapus cache file Windows.
sumber
Untuk Windows XP, Anda harus dapat mengosongkan cache untuk file tertentu dengan membuka file tersebut menggunakan CreateFile dengan opsi FILE_FLAG_NO_BUFFERING dan kemudian menutup pegangannya. Ini tidak didokumentasikan, dan saya tidak tahu apakah ini berfungsi pada versi Windows yang lebih baru, tetapi saya menggunakan ini sejak lama ketika menulis kode uji untuk membandingkan pustaka kompresi file. Saya tidak ingat apakah akses baca atau tulis memengaruhi trik ini.
sumber
Googling cepat memberikan opsi ini untuk Linux
sync && echo 1 > /proc/sys/vm/drop_caches
sumber
Utilitas baris perintah dapat ditemukan di sini
dari sumber:
sumber
dengan opsi saran
POSIX_FADV_DONTNEED
:Data yang ditentukan tidak akan diakses dalam waktu dekat.
sumber
Saya telah menemukan satu teknik (selain me-reboot) yang tampaknya berfungsi:
Itu tidak selektif. Idealnya saya ingin dapat menghapus bagian tertentu dari memori yang digunakan untuk menyimpan blok disk dari file yang saya ingin tidak lagi di-cache.
sumber
Untuk tampilan Cache Sistem File Windows XP yang jauh lebih baik - coba ATM oleh Tim Murgent - ini memungkinkan Anda untuk melihat cache sistem file ukuran Set Kerja dan ukuran Daftar Siaga 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 Sysinternals Cacheset akan mengurangi "Cache WS Min" - data sebenarnya masih tetap ada dalam bentuk daftar Standby dari mana ia dapat digunakan hingga diganti dengan yang lain. Untuk kemudian menggantinya dengan sesuatu yang lain gunakan alat seperti MemAlloc atau flushmem oleh Chad Austin atau Consume.exe dari Alat Kit Sumber Daya Windows Server 2003 .
sumber
Seperti pertanyaan yang juga ditanyakan untuk Linux, ada jawaban terkait di sini .
Alat baris perintah vmtouch memungkinkan untuk menambahkan dan menghapus file dan direktori dari cache file sistem, antara lain.
sumber
Ada panggilan Windows API https://docs.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-setsystemfilecachesize yang dapat digunakan untuk membersihkan cache sistem file. Ini juga dapat digunakan untuk membatasi ukuran cache ke nilai yang sangat kecil. Tampak sempurna untuk jenis tes ini.
sumber