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.
windows-xp
windows-7
Sebastiaan M
fuente
fuente
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:
fuente
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.
fuente
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é.
fuente
Reinicia la máquina.
fuente
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.
fuente
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.
fuente
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.
fuente
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é.Eche un vistazo a esta respuesta que acabo de publicar en mi propia pregunta en StackOverflow.
Básicamente: si intenta
CreateFile
un identificador sin acceso de escritura compartida, entonces vaciará y luego invalidará el caché, incluso si devuelve un error.¡Espero que esto ayude!
fuente