4

我目前正在运行 Ubuntu 12.04 的虚拟机上进行一些数据库基准测试。我注意到第二次执行查询时它的运行速度明显更快。这很可能是由于操作系统缓存将所有数据保存在主内存中。为了防止缓存搞砸我的测量,因此我想在后续运行之间清除它。

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

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

sysctl -w vm.drop_caches=3

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

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

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

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

非常感谢你,安蒂戈

4

0 回答 0