我正在使用 DBMS 和虚拟机执行一些基准测试。我正在使用这个命令
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
在执行查询之前,在每个来宾和每个主机上,以尽量减少缓存/缓冲对执行时间的影响。如果数据被缓存/缓冲,则查询的执行时间可能会根据之前执行的查询而有所不同,因为用于回答查询的文件的一部分可能位于内存中。
我看到了这个帖子: 如何清空 Linux 系统上的缓冲区和缓存?
但对我来说,在每次查询后执行同步/删除缓存有点棘手。我需要要求每个虚拟机和每个物理服务器同步/删除缓存。我可以编写一个脚本,并使用 SSH 来执行此操作,但我想知道是否有一种方法可以阻止操作系统缓冲/缓存文件,因为这对我来说会更容易。
我在所有虚拟机(使用 KVM)和服务器上使用 Ubuntu 12.04。
答案1
使用类似的东西https://code.google.com/p/linux-ftools/将数据库系统使用的所有文件标记为FADV_DONTNEED?