Cara meningkatkan cache disk Windows 7

18

Di Windows 7 (64 bit), saya membaca 9000 file berukuran sedang. Secara total, ada lebih dari 200 MB data. Menggunakan Java (JDK 1.6.21) saya mengulangi file. Sekitar 1400 pertama berjalan dengan kecepatan penuh tetapi kemudian kecepatan turun menjadi 4 ms per file. Ternyata biaya utama dikeluarkan hanya dengan membuka file.

Saya membuka file menggunakan new FileInputStream(dan tentu saja menutupnya pada waktunya untuk menghindari kebocoran file). Setelah beberapa penyelidikan, saya melihat bahwa cache disk Windows menggunakan hanya 100 MB atau lebih dari RAM meskipun saya memiliki 8 GiB tersedia. Saya sudah mencoba meningkatkan ukuran cache menggunakan alat CacheSet tetapi nilai apa pun yang saya berikan dianggap di luar jangkauan .

Saya juga telah mencoba mengaktifkan LargeSystemCachekunci registri tetapi (setelah me-reboot) CacheSetalat ini masih menunjukkan saya menggunakan 100 MB cache (dan tidak meningkat selama uji coba). Adakah yang punya saran untuk "mendorong" Windows 7 untuk menyimpan 9000 file saya?

Sathyajith Bhat
sumber
3
Dari mana Anda mendapatkan informasi yang hanya 100MB digunakan untuk cache disk? Dari apa yang saya tahu Windows menggunakan secara default semua memori bebas untuk cache disk. Nilai hanya 100MB bagi saya sepertinya nilai minimum.
Robert
1
Sebagian dari masalahnya bisa Java dan itu JVM. Ada banyak opsi untuk mengubah JVM - publib.boulder.ibm.com/infocenter/javasdk/v6r0/… . Saya pikir taruhan terbaik Anda adalah menuliskannya dalam C ++ atau FreeBASIC (keduanya yang dikompilasi dengan kode asli dan hanya dibatasi oleh apa yang diizinkan oleh OS).
Natalie Adams

Jawaban:

4

Superfetch tidak men-cache semua file besar, hanya bagian-bagian yang diakses. Jadi, mengakses file itu masih membutuhkan disk baca. Cache disk pada 210mb seperti milik saya dapat men-cache semuanya dari semua file kecil di Windows. Dan kinerjanya terlihat. Saya ragu, bahwa itu akan berdampak pada sistem yang lebih cepat.

Soren
sumber
2
Apa itu superfetch, dan bagaimana kaitannya dengan pertanyaan ini?
jpaugh
4

Saya sudah mencoba meningkatkan ukuran cache menggunakan alat CacheSet tetapi nilai apa pun yang saya berikan dianggap di luar jangkauan.

  1. Pastikan Anda menjalankan CacheSet secara eksplisit "Sebagai Administrator". CacheSet akan mengatakan bahwa nilai-nilai berada di luar jangkauan ketika sesuatu berjalan salah.
  2. Pastikan ukuran cache habis dibagi 4 KB

Juga, saya perhatikan bahwa CacheSet memiliki beberapa masalah dengan nilai-nilai besar, mungkin karena itu adalah aplikasi 32-bit dari tahun 2006. Saya pergi dan menulis program 64-bit di sekitar API yang sama, yang memungkinkan pengaturan ukuran cache lebih dari 4GB: http: / /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

Catatan: Artikel CacheSet menyebutkan CacheMan, namun versi terbaru tampaknya menggunakan API yang sama dengan CacheSet - itu hanya dikemas dalam UI dengan banyak preset dan fungsi lainnya.

Vladimir Panteleev
sumber
0

Saya tahu ini sudah lama, tetapi untuk orang lain yang mengalami masalah ini: Anda perlu menjalankan CacheSet dengan hak administratif secara manual. Jika tidak, Anda akan mendapatkan kesalahan OutOfRange; itu TIDAK akan secara otomatis meminta hak istimewa.

Jan Schejbal
sumber