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

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

Setup 1: (~300k request/second)

  • OSX 10.7.4主机

  • Ubuntu Linux 12.04服务器在VirtualBox中虚拟化

  • VirtualBox已设置为使用最多100%的主机资源

  • VirtualBox在网桥模式下,Ubuntu在网络上获取自己的IP

  • 测试在OSX上运行的客户端程序

Setup 2: (~100k request/second)

  • Ubuntu Linux 12.04服务器主机操作系统

  • Tester和服务器本机运行,通过localhost连接

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

Here are the possibilities I have come up with so far:

  • OSX调度程序在处理测试程序中的256个线程时效率更高

  • Virtualbox 's network interface is more efficient than linux' s环回接口

  • 虚拟化服务器允许调度程序更有效地在测试仪和服务器之间划分时间

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

编辑其他信息:

  • 我无法访问任何其他计算机来运行测试仪

  • 服务器类似于memcached,它不访问磁盘

  • 4 Core i7 - 8GB RAM(测试仪和服务器的RAM足够多(即使在VM中))