Ejecutando una consulta sin el caching del sistema operativo

Quiero emular un sitio de cliente que no tiene mucho almacenamiento en caching porque tiene mucho E / S todo el time. Quiero ejecutar una consulta SQL en mi máquina (en mi máquina virtual para ser precisos) con las mismas limitaciones que tienen, así que pensé que iba a enjuagar el caching antes de ejecutarlo cada vez.

Necesito eliminar el caching de postgres SQL (lo que puedo hacer reiniciándolo, aparentemente). También necesito limpiar el caching del sistema operativo en mi máquina virtual (donde se está ejecutando el código) y en mi equipo host que ejecuta la máquina virtual para asegurarme de que no optimice toda la máquina virtual. Mi objective es poder ejecutar la consulta de una manera completamente no optimizada (sin ningún tipo de almacenamiento en caching, ni el sistema operativo, ni postgres, nada).

Así que he estado ejecutando estos commands (que encontré en foros), en mi VM y en mi host:

sync; echo 1 > /proc/sys/vm/drop_caches; echo 2 > /proc/sys/vm/drop_caches; echo 3 > /proc/sys/vm/drop_caches; 

¿Crees que estos son apropiados? ¿Y crees que es suficiente? ¿O debería usar otro enfoque por completo?

Estoy ejecutando Red Hat 6.2.

En primer lugar, echo 3 > /proc/sys/vm/drop_caches es suficiente ya que combina los commands echo 1 y echo 2 . De lo contrario, sí, son apropiados para borrar el caching – http://linux-mm.org/Drop_Caches

Estos commands simplemente eliminan los cachings existentes, por ejemplo, usted crea un entorno de arranque en frío, pero después de ejecutar sus primeras consultas, se usará el caching. También puede ayudar a des-optimizar la configuration de postgres y disminuir cosas como shanetworking_buffers .

Si está utilizando kvm para su máquina virtual, asegúrese de usar un dispositivo de bloque como disco y de usar virtio sin almacenar en caching – http://www.linux-kvm.org/page/Tuning_KVM