Ruby在虚拟机上运行缓慢,具体取决于虚拟化引擎

MMo*_*ore 5 ruby virtualization performance vmware kvm

我们切换到一个新的开发服务器,并体验到我们的测试套件需要两倍的时间.我们测试了数据库,文件系统等,但这些都非常快,甚至比以前更快.

所以我们写了一个小红宝石基准测试(Fibonacci)并执行了几次(平均值低于以下):

time_start = Time.now
f = lambda { |x| x < 2 ? x : f.call(x-1) + f.call(x-2) }
f.call(35)
time = Time.now - time_start

puts "#{time.round(4)}s needed"
Run Code Online (Sandbox Code Playgroud)

XEN之前的机器:6s

使用OpenVZ后的机器:11,5

两台机器上都安装了rvm的Debian Squeeze( - >编译)ruby-1.9.3-p194.这些机器没有高负荷,内存也可以.

或多或少唯一的区别是虚拟化引擎.在生产中,我们使用VMware ESXi.基准需要大约11s.我们用KVM测试了另一台服务器,基准测试需要2,5s.


  • XEN机器:6s
  • OpenVZ机器:11,5s
  • 使用VMware ESXi的计算机:11s
  • KVM机器:2,5s

那么我们可以在虚拟化中改变什么来使我们的红宝石更快?或者您是否有其他想法可以解决问题?

MMo*_*ore 1

问题是rvm。现在这个问题解决了!

https://github.com/wayneeseguin/rvm/issues/1326