Estoy ejecutando algunas pruebas comparativas utilizando un DBMS y máquinas virtuales. Y estoy usando este comando
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
en cada Invitado y en cada Host, antes de ejecutar una consulta, para minimizar el efecto del caché/almacenamiento en búfer en mi tiempo de ejecución. Si los datos están almacenados en caché/búfer, el tiempo de ejecución de una consulta puede variar dependiendo de qué consulta se ejecutó antes, porque una parte del archivo utilizado para responder a la consulta puede estar en la memoria.
Vi esta publicación: ¿Cómo se vacían los buffers y el caché en un sistema Linux?
Pero para mí es un poco complicado ejecutar sincronización/eliminación de cachés después de cada consulta. Necesito solicitar que cada VM y cada servidor físico sincronicen/eliminen cachés. Podría escribir un script y usar SSH para hacer esto, pero me pregunto si hay una manera de evitar que el sistema operativo almacene en búfer o caché los archivos porque sería más fácil para mí.
Estoy usando Ubuntu 12.04 en todas las máquinas virtuales (usando KVM) y servidores.
Respuesta1
Usa algo comohttps://code.google.com/p/linux-ftools/¿Marcar todos los archivos utilizados por el sistema de base de datos como FADV_DONTNEED?