我目前正在运行Ubuntu 12.04的虚拟机上进行一些数据库基准测试。我注意到第二次执行查询时运行得更快。这很可能是由于操作系统缓存只是将所有数据保存在主内存中。为了防止缓存搞砸我的测量结果,我希望在后续运行之间清除它。
我在google上找到了以下命令来实现这一目标:
sync;echo 3 > /proc/sys/vm/drop_caches
和
sysctl -w vm.drop_caches=3
即使我以root用户身份登录,所有权限都会在权限中被拒绝。似乎无法从来宾系统中清除系统的缓存。我想这是因为它使用了主机缓存。由于我无法访问主机,因此我必须找到解决方法。目前我有两个想法。
首先想法是在运行之间重新启动计算机,因为这会清除缓存。因为我想执行几十次运行,我真的需要自动执行此操作。所以我可以将程序放入自动启动,让它执行查询并重新启动,并在下次启动时继续下一个查询。感觉就像写病毒一样。
第二个想法是用其他数据充斥内存。因为我的机器有相当多的RAM,所以我会生成一些大型的随机数据文件,只需将其读入/ dev / null。
所以最后我的问题是,有没有人更好的想法清除缓存,或者可能一起避免使用缓存?或者对于如何轻松实现我的两个想法之一有任何建议吗?
非常感谢您提前, 安蒂戈