应用程序在虚拟机中运行得更快?

cha*_*e55 5 c linux virtualization

我正在调整一些服务器代码以获得最佳性能,但我得到了一些奇怪的结果.服务器似乎在虚拟机中比在本机运行时运行得更快.两种设置都使用相同的硬件.

服务器是为Linux编写的,测试客户端是100%标准POSIX.两个应用程序都用C语言编

设置1 :(约300k请求/秒)

  • OSX 10.7.4主机
  • Ubuntu Linux 12.04服务器在VirtualBox中虚拟化
  • VirtualBox已设置为使用高达100%的主机资源
  • VirtualBox在网桥模式下,Ubuntu在网络上获得自己的IP
  • 测试在OSX上运行的客户端程序

设置2 :( ~100k请求/秒)

  • Ubuntu Linux 12.04服务器主机操作系统
  • 测试器和服务器本机运行,通过localhost连接

测试人员通过产生256个线程来工作,这些线程都独立连接到服务器并发送命令.服务器处理流水线中的请求,仅生成与可用核心数相等的多个线程.

以下是我迄今为止提出的可能性:

  • OSX调度程序在处理测试程序中的256个线程时效率更高
  • Virtualbox的网络接口比linux的环回接口更有效
  • 虚拟化服务器允许调度程序更有效地在测试器和服务器之间划分时间

我需要弄清楚导致速度减慢的原因,以及我可以采取哪些措施来解决问题.

编辑其他信息:

  • 我无法访问任何其他计算机来运行测试程序
  • 服务器类似于memcached,它不访问磁盘
  • 4 Core i7 - 8GB RAM(测试仪和服务器的RAM足够多(即使在VM中))