¿Cómo borrar la caché de lectura de disco de Windows?

13

Para las pruebas de rendimiento, necesito borrar el caché de lectura de disco de Windows. Intenté buscar en Google pero no pude encontrar nada más que reiniciar u otras cosas manuales. Antes de rendirme y hacer eso, me gustaría saber si alguien conoce una forma de borrar la memoria caché de lectura de disco de Windows. Estoy probando en Windows 7, pero también estoy interesado en las soluciones de Windows XP.

Sebastiaan M
fuente

Respuestas:

3

Alternativamente, llene el caché con datos que sabe que no se usarán en la prueba, luego ejecute la prueba.

Maximus Minimus
fuente
1
Alternativamente, puede tomar toda la RAM disponible. Windows liberará el caché de archivos para usar esa RAM. Para más detalles vea la respuesta proporcionada por Stephen Denne.
Ultralisk
Esperaba algo menos 'alternativo' pero creo que su sugerencia es más fácil de implementar en un script de prueba automático en mi situación. Gracias por la sugerencia.
Sebastiaan M
7

Hice la misma pregunta sobre Stack Overflow

/programming/478340/clear-file-cache-to-repeat-performance-testing

Estaba usando Win XP, pero la mejor solución que se me ocurrió fue:

  1. Ejecute algunas copias de MemAlloc
  2. Con cada uno, asigne grandes cantidades de memoria varias veces
  3. Use el Explorador de procesos para observar que el tamaño de la caché del sistema se reduce a niveles muy bajos
  4. Salga de los programas MemAlloc
Stephen Denne
fuente
3

Para una vista mucho mejor de la caché del sistema de archivos de Windows XP, pruebe ATM de Tim Murgent , le permite ver tanto el tamaño del conjunto de trabajo de la caché del sistema de archivos como el tamaño de la lista de espera en una vista más detallada y precisa. Para Windows XP: necesita la versión anterior 1 de ATM que está disponible para descargar aquí, ya que V2 y V3 requieren Server 2003, Vista o superior.

Observará que, aunque Cacheset reducirá el "Cache WS Min", los datos reales siguen existiendo en forma de listas de espera desde donde se pueden usar hasta que se hayan reemplazado por algo más. Para reemplazarlo con algo más, use una herramienta como MemAlloc, flushmem de Chad Austin o Consume.exe de las herramientas del Kit de recursos de Windows Server 2003.

Robert Collier
fuente
3

He usado RAMMap . Tiene la posibilidad de liberar memoria de pocos tipos de asignaciones.

El contenido de la memoria caché de archivos se puede observar en la pestaña "Resumen de archivos" y seleccionando "Lista de espera vacía" en el menú "Vacío" debería borrar esta memoria caché.

pbies
fuente
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
slm
1

Reinicia la máquina.

Joe Koberg
fuente
Esta es la solución 'el gran martillo'. Ver la respuesta proporcionada por Stephen Denne.
Ultralisk
1

La mejor práctica es asegurarse de que cualquier archivo de prueba con el que esté comparando sea 2 veces más grande que la caché del controlador de matriz (o la memoria del sistema operativo Windows si realiza una evaluación comparativa en un invitado vm), con un archivo de prueba mínimo de 1 GB. Esto asegura que cualquier almacenamiento en caché será negado. Utilizamos SQLIO para la evaluación comparativa de disco; Existe una gran cantidad de información en la documentación adjunta.

Greg Askew
fuente
Una de las cosas que estoy tratando de hacer es evaluar qué tan rápido se desarrolla nuestro proyecto en varias configuraciones. Realmente no puedo aumentar el tamaño de esos archivos, creo. :)
Sebastiaan M
1

Haciéndose eco de Greg, la forma de solucionar este problema es asegurarse de que el conjunto de datos con el que está trabajando excede en gran medida la cantidad de RAM disponible. Si está realizando pruebas en una plataforma de hardware que también incluye una cantidad significativa de cachés de controladores y discos, querrá asegurarse de que también está excediendo esas cantidades. Esto asegurará que el rendimiento que ve esté más vinculado con el verdadero rendimiento del hardware que las optimizaciones de software que introducen todas esas capas de caché.

Dicho esto, si realmente está buscando purgar la memoria caché de lectura de datos útiles antes de ejecutar sus puntos de referencia que QUIEREN usar la memoria caché de lectura, la forma de hacerlo es leer en un solo archivo de tamaño justo debajo de su memoria de memoria caché de lectura y hacerle algunas operaciones de archivo. Esto purgará el caché y lo llenará con este único archivo grande. Una vez que lo cierra, su caché se vacía efectivamente de los datos que le interesan . La parte difícil es descubrir qué tan grande debe ser ese archivo, que en estos días bien podría ser del orden de 3 GB; en ese momento puede necesitar varios archivos basura de 1 GB para que funcione.

sysadmin1138
fuente
0

Creo que casi cualquier opción será "material manual". Bajo UNIX, es bastante estándar desmontar / volver a montar un dispositivo antes de cada ejecución de referencia, a menudo con un "newfs" incluido como medida. No sé si puede usar herramientas de línea de comandos en Windows para desmontar / montar dispositivos, pero si su objetivo es la automatización, entonces valdría la pena buscar tales utilidades.

Geoff Fritz
fuente
1
En Linux, si desmontar / remuont no es una opción por alguna razón, también puede hacerlo sync; echo 3 > /proc/sys/vm/drop_caches, aunque esto afecta a todos los caché / buffers, no solo a los que pertenecen a un volumen en particular. Anteriormente busqué un truco similar para Windows pero no lo encontré.
David Spillett
0

Eche un vistazo a esta respuesta que acabo de publicar en mi propia pregunta en StackOverflow.

Básicamente: si intenta CreateFileun identificador sin acceso de escritura compartida, entonces vaciará y luego invalidará el caché, incluso si devuelve un error.

¡Espero que esto ayude!

usuario541686
fuente