Linux 清除虚拟机的缓存

Linux 清除虚拟机的缓存,linux,caching,virtual-machine,benchmarking,ram,Linux,Caching,Virtual Machine,Benchmarking,Ram,我目前正在运行Ubuntu12.04的虚拟机上进行数据库基准测试。我注意到,第二次执行查询时,它的运行速度明显加快。这很可能是因为操作系统缓存将所有数据保存在主内存中。为了防止缓存破坏我的测量,我希望在后续运行之间清除它 我在google上找到了以下命令来实现这一点: sync;echo 3 > /proc/sys/vm/drop_caches 及 即使我以root用户身份登录,也会出现权限拒绝错误。似乎无法从来宾系统中清除系统的缓存。我猜这是因为它使用了主机缓存。由于我没有访问主机的权

我目前正在运行Ubuntu12.04的虚拟机上进行数据库基准测试。我注意到,第二次执行查询时,它的运行速度明显加快。这很可能是因为操作系统缓存将所有数据保存在主内存中。为了防止缓存破坏我的测量,我希望在后续运行之间清除它

我在google上找到了以下命令来实现这一点:

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

即使我以root用户身份登录,也会出现权限拒绝错误。似乎无法从来宾系统中清除系统的缓存。我猜这是因为它使用了主机缓存。由于我没有访问主机的权限,我必须找到一个解决方法。目前我有两个想法

第一个想法是在两次运行之间重新启动机器,以清除缓存。因为我想执行几十次运行,所以我真的需要将其自动化。因此,我可以将一个程序放入autostart,让它执行查询并重新启动,然后在下次启动时继续执行下一个查询。感觉像是在写病毒

第二个想法是用其他数据填满内存。由于我的机器有相当多的RAM,我会生成一些大的随机数据文件,然后将其读入/dev/null

所以最后我的问题是,有没有更好的方法来清除缓存,或者避免一起使用缓存?或者有人对如何轻松实现我的两个想法之一提出了一些建议吗

事先非常感谢,
Antigo

如果您使用的是MySQL,它将使用自己的查询缓存。阅读如何禁用itI我不使用MySQL,我知道许多数据库本身也缓存数据。但是这个缓存我可以清除,另一方面操作系统缓存没有。忘了提到我作为root用户执行命令,仍然得到了permissioneddenied错误。我在我的帖子中补充了这一点。为什么问MySQL中如何清除缓存比问Ubuntu中如何清除缓存更具体?
sysctl -w vm.drop_caches=3