KVM和Libvirt:来宾的CPU /网络性能不佳

时间:2016-12-17 10:18:59

标签: linux networking virtualization kvm libvirt

我有一台运行虚拟化路由器的Arch Linux主机。

当使用LXC来宾作为路由器时,一切都很好。我得到100MBits Up / Down,几乎没有CPU使用率。

但是,当我使用libvirt gest(pfSense FreeBSD)作为路由器时,只要有大量网络流量通过访客,CPU使用率就会过高(高达100%),但最糟糕的是网络吞吐量减半了!我最多可以获得45-49Mbits。

主机不支持PCI传递,因此这是我对libvirtd VM的配置:

Nic1 (wan)
Network source: Direct ‘eth0’
Source mode: passthrough
Device model: virtio

Nic2 (lan)
Bridge name: br0
Device model: virtio

我尝试了e1000,但它完全没有改变。

Host CPU: AMD A4-5000 Kabini
Guest CPU: default or Opteron_G3

自从我开始使用KVM以来,已经有一年多了。如果我不解决这个问题,我将不得不转储libvirt,因为这样的性能是不可接受的。

1 个答案:

答案 0 :(得分:0)

用如此有限的信息来诊断这些问题是非常困难的。绝对不要使用e1000或任何其他NIC模型 - virtio-net将提供任何虚拟化NIC的最佳性能。确保主机具有/ dev / vhost-net,因为它可以加速主机内核空间中的访客NIC流量。

如果您想将guest虚拟机用作高性能网络路由设备,则可以通过多种方式对VM进行调整。将guest虚拟机vCPU固定到特定主机物理CPU,并使其他guest虚拟机远离这些CPU可确保guest虚拟机不会被其他进程抢占而导致其缓存被破坏。接下来,为来宾RAM使用大页面来大规模增加访客内存访问的TLB缓存命中率。如果主机有多个NUMA节点,请确保来宾CPU和来宾RAM(大页)固定为来自同一主机NUMA节点。同样,确保guest虚拟机使用的主机NIC的IRQ处理具有与客户端使用的pCPU匹配的亲缘关系。