我之前已经build立了几个基于KVM的networking,从来没有遇到这个问题,不能为我的生活认为我以前有不同的设置。
build立
基本上,我得到和完全戴尔堆栈:
所有机器运行CentOS6.5,pipe理程序,基本上标准安装几个sysctl调整。
目前,我已经有几个testing虚拟机的设置,与其主控(CentOS 6.X,基本安装,基本的木偶驱动configuration)类似的设置。 所有虚拟机是:
所有虚拟机都使用virtio进行networking,阻塞设备(基本上是运行virt-install命令的标准结果) – 例如(例如libvirt config)
<interface type='bridge'> <mac address='52:54:00:11:a7:f0'/> <source bridge='dmzbr0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
所有虚拟机都可以访问2到8个VCPU和8和64GB RAM,而他们的驱动器是主机上的LVM卷
虚拟机中的一些简单的文件副本和ddtesting产生完全可接受的结果(在这些小规模综合testing中为300MB / s – 800MB / s)
物理机之间的networking性能
现在我已经离开了巨型帧/ MTUconfiguration,服务器到服务器之间的传输将非常高兴地超过了千兆位连接(或在那里)( 100MB / s – > 118MB / s在每台机器上进行几次大文件testing)
物理机和虚拟机之间的networking性能(以及虚拟机到虚拟机)
Rsync / SSH传输一直在变化(不稳定),但始终在24MB / s和最大约38MB / s之间
我已经执行了其他几个testing: – 在一个网桥上的物理机器IP与另一个网桥上的VM之间 – 在一个网桥上的物理机器IP与VM(在同一个网桥上)之间 – 尝试使用e1000启动虚拟机设备驱动程序而不是virtio
似乎没有什么工作,有没有人遇到过这么多的性能下降? 我刚刚检查了旧networking(在另一个DC上托pipe),除了使用其他交换机(非常便宜的旧PowerConnect 2824)之外,VMnetworking性能似乎接近原始networking的80-90%performance(不低于一半)
如果我可以提供任何设置/configuration或额外的信息,我很乐意!
更新(14/08/2014)
试了几件事情:
主机似乎坐在125%的CPU(主机进程),这可能与分配太多的VCPU客户或CPU / Numa亲和力有关吗?
不过,毕竟我似乎已经把平均持续的速度提高了25-30MB / s到40-45MB / s。 这是一个不错的进步,但是我相信我可以接近裸机性能(目前还是一个公平的方式)。
任何其他的想法?
您的KVM实例应该能够饱和主机networking连接,而不会出现问题。
我的第一个build议是升级主机和客户的内核。 股票CentOS 6.5内核对KVM没有太大的性能。 我build议使用ELRepo的kernel-lt(如果你感觉很勇敢的话,可以使用kernel-ml)。 这应该给你一个体面的提升performance在马上。
接下来,尝试使用iperf3(甚至是较老的iperf)进行testing。 这将使您尽可能接近纯粹的networking连接。 你的rsync / sshtesting不是真正有效的,因为它们肯定会碰到磁盘。 RSync尤其可能不会像你的ddtesting那样做顺序IO(试着用fio来代替)。
这里有趣的是VM到VM的stream量实际上并不会影响到networking控制器。 这将完全在主机上完成,因此networking的其他部分(以及各种卸载设置)在这里没有任何意义。
还有一件事要检查:你的服务器扼杀了CPU吗? 我们有一些戴尔机器认为他们是空闲的,并开始运行CPU显着较慢,他们应该已经。 省电的东西并不总能很好地识别服务器工作负载。
你一定要在这里的virtio,甚至不要浪费你的时间来testing任何模拟的选项。
您没有提到它,但是如果您的服务器具有基于i350的NIC,则可以查看SR-IOV(假设您只需要每台计算机less于7个虚拟机)。 这使VM可以直接访问物理网卡(以损失function为代价,例如不支持nwfilter),并且效率更高。 尽pipe如此,你不需要这个来获得完整的千兆速度。