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

标签 ruby performance vmware virtualization kvm

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

所以我们写了一个小的 ruby​​ 基准测试(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"

XEN 之前的机器:6s

使用 OpenVZ 后的机器:11,5

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

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


  • XEN 机器:6 秒
  • 装有 OpenVZ 的机器:11.5 秒
  • 配备 VMware ESXi 的机器:11 秒
  • 配备 KVM 的机器:2.5 秒

那么我们可以在虚拟化中做些什么来让我们的 ruby​​ 更快呢?或者您是否有其他想法可能是什么问题?

最佳答案

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

关于Ruby 在虚拟机上运行缓慢取决于虚拟化引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13490187/

相关文章:

python - 不支持的操作导致 pyvmomi 出现租赁错误

c - INADDR_ANY 接口(interface)是否包括 VMware Network Adapter?

ruby-on-rails - 如何在数据库中存储不同用户的信息?

mysql - mysql View 的sql查询

ruby-on-rails - 使用 ActiveSupport::Concern 功能时,如何通过将 "nested"模块包含为该类的实例方法来将方法添加到类中?

performance - Firebase Firestore 查询性能

c - 传递许多变量与传递结构

vmware - 如何正确使用 vmware 清晰度 sidenav?

ruby-on-rails - Rails 中的嵌套组查询

html - 是否可以在不使用 Shopify 的情况下编辑和预览 Shopify Liquid 代码?