Cách tăng bộ đệm đĩa của Windows 7


18

Trong Windows 7 (64 bit), tôi đang đọc qua 9000 tệp có kích thước vừa phải. Tổng cộng, có hơn 200 MB dữ liệu. Sử dụng Java (JDK 1.6.21) Tôi đang lặp lại các tệp. 1400 đầu tiên hoặc lâu hơn đi ở tốc độ tối đa nhưng sau đó tốc độ giảm xuống còn 4ms mỗi tệp. Nó chỉ ra rằng chi phí chính phát sinh chỉ đơn giản bằng cách mở các tập tin.

Tôi đang mở các tệp bằng cách sử dụng new FileInputStream(và tất nhiên là đóng chúng kịp thời để tránh rò rỉ tệp). Sau một số điều tra, tôi thấy rằng bộ đệm đĩa của Windows chỉ sử dụng 100 MB RAM hoặc hơn mặc dù tôi có sẵn 8 GiB. Tôi đã thử tăng kích thước bộ đệm bằng công cụ CacheSet nhưng mọi giá trị tôi cung cấp đều bị coi là nằm ngoài phạm vi .

Tôi cũng đã thử bật LargeSystemCachekhóa đăng ký nhưng (sau khi khởi động lại), CacheSetcông cụ vẫn cho biết tôi đang sử dụng 100 MB bộ nhớ cache (và không tăng trong quá trình chạy thử). Có ai có bất kỳ đề xuất nào để "khuyến khích" Windows 7 lưu trữ các tệp 9000 của tôi không?


3
Nơi nào bạn có thông tin từ đó chỉ có 100 MB được sử dụng cho bộ đệm đĩa? Theo những gì tôi biết, Windows sử dụng theo mặc định tất cả bộ nhớ trống cho bộ nhớ đệm trên đĩa. Giá trị chỉ 100MB đối với tôi giống như một giá trị tối thiểu.
Robert

1
Một phần của vấn đề có thể là Java và đó là JVM. Có rất nhiều tùy chọn để điều chỉnh JVM - publib.boulder.ibm.com/infocenter/javasdk/v6r0/ . Tôi nghĩ rằng cách tốt nhất của bạn là chỉ viết nó bằng C ++ hoặc FreeBASIC (cả hai đều biên dịch thành mã gốc và chỉ bị giới hạn bởi những gì HĐH cho phép).
Natalie Adams

Câu trả lời:


4

Superfetch không lưu trữ tất cả các tệp lớn, chỉ các phần được truy cập. Vì vậy, truy cập tập tin đó yêu cầu đĩa vẫn đọc. Bộ đệm đĩa ở mức 210mb như của tôi có thể lưu trữ mọi thứ từ tất cả các tệp nhỏ đó trong Windows. Và hiệu suất là đáng chú ý. Tuy nhiên, tôi nghi ngờ rằng nó sẽ có tác động đến các hệ thống nhanh hơn.


2
Superfetch là gì và nó liên quan đến câu hỏi này như thế nào?
jpaugh

4

Tôi đã thử tăng kích thước bộ đệm bằng công cụ CacheSet nhưng mọi giá trị tôi cung cấp đều bị coi là nằm ngoài phạm vi.

  1. Hãy chắc chắn rằng bạn chạy Cache "As Administrator" một cách rõ ràng. CacheSet sẽ nói rằng các giá trị là ra khỏi phạm vi khi bất cứ điều gì khó khăn.
  2. Đảm bảo rằng kích thước bộ đệm chia hết cho 4 KB

Ngoài ra, tôi nhận thấy rằng CacheSet có một số rắc rối với các giá trị lớn, có thể vì đây là ứng dụng 32 bit từ năm 2006. Tôi đã viết và viết một chương trình 64 bit xung quanh cùng API, cho phép đặt kích thước bộ đệm trên 4GB: http: / /blog.thwordbershadow.net/2012/12/14/64-bit-cacheset/

Lưu ý: Bài viết về CacheSet đề cập đến CacheMan, tuy nhiên phiên bản mới nhất dường như sử dụng cùng API với CacheSet - nó chỉ được đóng gói vào một giao diện người dùng với một loạt các cài đặt trước và chức năng khác.


0

Tôi biết điều này đã cũ, nhưng đối với những người khác gặp phải vấn đề này: Bạn cần chạy CacheSet với các đặc quyền quản trị theo cách thủ công. Nếu bạn không, bạn sẽ gặp lỗi OutOfRange; nó sẽ KHÔNG tự động yêu cầu đặc quyền.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.