5

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

因此,我们编写了一个小型 ruby​​ 基准测试(斐波那契)并执行了几次(平均值如下):

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"

使用 XEN 之前的机器:6s

使用 OpenVZ 后的机器:11,5

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

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


  • 带 XEN 的机器:6s
  • 带 OpenVZ 的机器:11.5 秒
  • 使用 VMware ESXi 的机器:11 秒
  • KVM机器:2.5s

那么我们可以在虚拟化中进行哪些更改以使我们的 ruby​​ 更快呢?或者您有其他想法可能是什么问题?

4

3 回答 3

1

我刚刚在使用 Debian Squeeze 的 ESXi 5 系统和使用 Ubuntu Precise(服务器)的系统上对其进行了测试。在 Squeeze 上必须编译 Ruby-1.9.3-p194 而在 Ubuntu 上不需要。但是两个系统上的结果是相同的:11.x 秒。所以我认为我们也可以忽略内核版本并专注于虚拟化层。

于 2012-11-21T11:42:12.903 回答
1

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

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

于 2012-12-11T16:12:37.953 回答
0

也许@martinseener 正在做某事。你可能想看看这个:
http ://alisnic.net/blog/making-your-ruby-fly/

而这个:
https ://gist.github.com/1688857?utm_source=rubyweekly&utm_medium=email

基本上 rvm 正在编译没有优化标志的 ruby​​。也许这就是问题所在?然而,我发布的链接通过补丁更深入地提高了速度,但基本修复是在使用 rvm 编译 ruby​​ 时启用优化标志。

这里有一些进一步的讨论:
http ://www.reddit.com/r/ruby/comments/13mc3s/making_your_ruby_fly/

于 2012-11-23T11:35:20.040 回答