小编Sve*_*chs的帖子

并行运行多个 VM 时 VirtualBox 性能下降

在 Travis CI ( http://travis-ci.org ),我们使用 VirtualBox VM(通过 Vagrant)来运行 Ruby 社区的测试。

在我们的工作服务器上,我们有多达(最多)N 个并行进程在 N 个 VM 中并行运行 N 个测试套件,即一个工作进程一次在一个 VM 中运行一个测试套件,但其中 N 个同时运行。

现在,一旦许多 worker 实际并行执行构建,与在单个 worker 中运行完全相同的构建(并且没有其他并行运行)相比,每个构建的性能将显着降低。

下面是一个例子:

这个“构建矩阵”由 20 个单独的构建组成:

http://staging.travis-ci.org/#!/svenfuchs/rails/builds/1906

在运行时,有 10 个工作人员在运行,因此此构建开始时在 10 个工作人员(和 VM)中并行执行 10 个单独的构建。这个构建就是其中之一,完成了大约 2 个小时:

[请参阅上页列表中的最后一个链接,我只能发布2个网址]

当没有其他构建并行执行时,完全相同的构建只需要大约 20 分钟。这是一个例子:

http://staging.travis-ci.org/#!/svenfuchs/rails/builds/1927

显然,这种性能下降是我们需要解决的问题,但我们不确定从哪里看。

测试套件基本上执行 Ruby 进程,这些进程可能会退出并产生其他几个 Ruby 进程,每个进程都在代码库上执行单元测试。其中一些攻击了 MySQL、Sqlite3 和 Postgres 等数据库,但我们也注意到完全不命中任何数据库的测试也出现了同样的降级。

托管这些进程和 VM 的工作服务器如下所示:

  • Linux 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux
  • 12x (Hexacore) Intel(R) Core(TM) i7 CPU 950 …

performance virtualbox

3
推荐指数
1
解决办法
2645
查看次数

标签 统计

performance ×1

virtualbox ×1