Cómo aumentar el caché de disco de Windows 7

18

En Windows 7 (64 bits), estoy leyendo 9000 archivos de tamaño moderado. En total, hay más de 200 MB de datos. Usando Java (JDK 1.6.21) estoy iterando sobre los archivos. Los primeros 1400 más o menos van a toda velocidad, pero luego la velocidad cae a 4 ms por archivo. Resulta que el costo principal se incurre simplemente abriendo los archivos.

Estoy abriendo los archivos usando new FileInputStream(y, por supuesto, cerrándolos a tiempo para evitar fugas de archivos). Después de investigar un poco, veo que el caché de disco de Windows usa solo 100 MB de RAM, aunque tengo 8 GiB disponibles. Intenté aumentar el tamaño de la memoria caché con la herramienta CacheSet , pero los valores que proporciono se consideran fuera de rango .

También intenté habilitar la LargeSystemCacheclave de registro pero (después de reiniciar) la CacheSetherramienta aún indica que estoy usando 100 MB de caché (y no aumenta durante la ejecución de la prueba). ¿Alguien tiene alguna sugerencia para "alentar" a Windows 7 a almacenar en caché mis archivos 9000?

Sathyajith Bhat
fuente
3
¿De dónde sacaste la información de que solo se usan 100 MB para el caché de disco? Por lo que sé, Windows usa por defecto toda la memoria libre para el almacenamiento en caché del disco. Un valor de solo 100 MB me parece un valor mínimo.
Robert
1
Parte del problema podría ser Java y es JVM. Hay toneladas de opciones para modificar la JVM: publib.boulder.ibm.com/infocenter/javasdk/v6r0/… . Creo que su mejor opción es escribirlo en C ++ o FreeBASIC (ambos que se compilan en código nativo y solo están limitados por lo que permite el sistema operativo).
Natalie Adams

Respuestas:

4

Superfetch no almacena en caché todo un archivo grande, solo las partes a las que se accede. Por lo tanto, acceder a ese archivo requiere lectura de disco todavía. Un caché de disco en 210mb como el mío puede almacenar en caché todo, desde todos esos pequeños archivos en Windows. Y el rendimiento es notable. Sin embargo, dudo que tenga un impacto en sistemas más rápidos.

Soren
fuente
2
¿Qué es superfetch y cómo se relaciona con esta pregunta?
jpaugh
4

Intenté aumentar el tamaño de la memoria caché con la herramienta CacheSet, pero los valores que proporciono se consideran fuera de rango.

  1. Asegúrese de ejecutar explícitamente CacheSet "Como administrador". CacheSet dirá que los valores están fuera de rango cuando algo sale mal.
  2. Asegúrese de que el tamaño del caché sea divisible por 4 KB

Además, noté que CacheSet tiene algunos problemas con los valores grandes, posiblemente porque es una aplicación de 32 bits del 2006. Fui y escribí un programa de 64 bits alrededor de la misma API, que permite configurar tamaños de caché de más de 4 GB: http: / /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

Nota: El artículo de CacheSet menciona CacheMan, sin embargo, la última versión parece usar la misma API que CacheSet: solo está empaquetada en una interfaz de usuario con un montón de ajustes preestablecidos y otras funciones.

Vladimir Panteleev
fuente
0

Sé que esto es antiguo, pero para otros que se encuentran con este problema: debe ejecutar CacheSet con privilegios administrativos manualmente. Si no lo hace, obtendrá el error OutOfRange; NO solicitará automáticamente privilegios.

Jan Schejbal
fuente