禁用文件的缓冲/缓存

禁用文件的缓冲/缓存

我正在使用 DBMS 和虚拟机执行一些基准测试。我正在使用此命令

free && sync && echo 3 > /proc/sys/vm/drop_caches && free

在每个客户机和每个主机上,在执行查询之前,将缓存/缓冲对执行时间的影响降到最低。如果数据被缓存/缓冲,查询的执行时间可能会因之前执行的查询而异,因为用于回答查询的文件的一部分可能在内存中。

我想使该过程自动化(我正在手动执行此操作),但每次查询后执行同步/删除缓存有点棘手。我需要要求每个虚拟机和每个物理服务器同步/删除缓存。我可以编写一个脚本,并使用 SSH 来执行此操作,但我想知道是否有办法阻止操作系统缓冲/缓存文件。

我还发现了这个工具: https://github.com/Feh/nocache

但它要求我将其与不能使用缓存的程序一起执行。我有一个在虚拟机环境中运行的分布式 DMBS,因此对于我的情况来说,如何使用它并不简单。我使用命令来启动每台服务器上的每个实例,它们位于虚拟机之上。

PS:我在所有虚拟机(使用 KVM)和服务器上都使用 Ubuntu 12.04。

相关内容