Bagaimana cara menghapus cache pembacaan disk Windows?

13

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.

Sebastiaan M
sumber

Jawaban:

3

Atau isi cache dengan data yang Anda tahu tidak akan digunakan dalam tes, kemudian jalankan tes.

Maximus Minimus
sumber
1
Atau, Anda dapat mengambil semua RAM yang tersedia. Windows akan merilis file cache untuk menggunakan RAM itu. Untuk detail, lihat jawaban yang diberikan oleh Stephen Denne.
Ultralisk
Saya berharap sesuatu yang kurang 'berhasil' tapi saya pikir saran Anda paling mudah diterapkan dalam skrip pengujian otomatis dalam situasi saya. Terima kasih untuk sarannya.
Sebastiaan M
7

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:

  1. Jalankan beberapa salinan MemAlloc
  2. Dengan masing-masing, alokasikan potongan memori besar beberapa kali
  3. Gunakan Process Explorer untuk mengamati pengurangan Cache Sistem ke tingkat yang sangat rendah
  4. Keluar dari program MemAlloc
Stephen Denne
sumber
3

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.

Robert Collier
sumber
3

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.

pai
sumber
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
slm
1

Nyalakan ulang mesin.

Joe Koberg
sumber
Ini adalah solusi 'palu besar'. Lihat jawaban yang diberikan oleh Stephen Denne.
Ultralisk
1

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.

Greg Askew
sumber
Salah satu hal yang saya coba lakukan adalah mengukur seberapa cepat proyek kami dibangun pada beberapa konfigurasi. Saya benar-benar tidak dapat meningkatkan ukuran file-file itu saya pikir. :)
Sebastiaan M
1

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.

sysadmin1138
sumber
0

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.

Geoff Fritz
sumber
1
Di Linux, jika unmount / remuont bukan opsi untuk alasan tertentu, Anda juga dapat melakukannya 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.
David Spillett
0

Melihat jawaban ini yang baru saja saya kirim ke pertanyaan saya sendiri di StackOverflow.

Pada dasarnya: Jika Anda mencoba CreateFilemenangani tanpa akses tulis-berbagi, maka ia akan menyiram dan kemudian membatalkan cache, bahkan jika itu mengembalikan kesalahan.

Semoga ini membantu!

pengguna541686
sumber