我们有一个由两个节点组成的Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt群集。每个节点都运行带有以下软件包/版本的Ubuntu 12.04 64位:
- 内核3.2.0-32-通用#51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- 起搏器1.1.7
- 心跳3.0.5
虚拟客户机正在运行Ubuntu 10.04 64位和Ubuntu 12.04 64位。我们使用libvirt功能将主机CPU的功能传递给虚拟客户机,以实现最佳的CPU性能。
现在,这是此群集上的常见设置:
- VM“监视”具有4个vCPU
- VM“监视”使用ide作为磁盘接口(出于显而易见的原因,我们目前正在切换到VirtIO)
我们最近进行了一些简单的测试。我知道他们不是专业人士,没有达到高标准,但是他们已经显示出强劲的趋势:
节点A正在运行虚拟机“ bla”节点B正在运行虚拟机“监控”
当我们将文件从VM“ bla”同步到VM“ monitoring”时,我们仅达到12 MB / s。当我们在虚拟机“监控”中执行简单的dd if = / dev / null of // tmp / blubb时,我们达到了约30 MB / s的速度。
然后,我们向虚拟机“监视”中又添加了4个vCPU,然后重新启动。VM“监视”现在具有8个vCPU。我们重新运行测试,结果如下:当我们将文件从VM“ bla”同步到VM“ monitoring”时,我们现在达到了36 MB / s。当我们在虚拟机“监视”中执行简单的dd if = / dev / null of // tmp / blubb时,现在达到约61 MB / s。
对我来说,这种效果令人惊讶。显然为该虚拟客户机添加更多虚拟CPU会自动意味着VM内部磁盘性能提高了吗?
我对此没有任何解释,非常感谢您的投入。我想了解是什么原因导致此性能提高,因为我可以100%重现此行为。
kvm_trace
以查看IO_Exits
更改CPU编号时的更改数量。我猜这是因为您使用的是IDE,它是与来宾CPU一起调度的。使用virtio时,性能应保持一致,并且当数据平面位于qemu中时,它将获得极大的提升。另一个猜测可能是您使用的是已知的错误虚拟化堆栈发行版。