首页 文章

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

提问于
浏览
0

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

当使用LXC guest虚拟机作为路由器时,一切都很好 . 我得到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

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

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

相关问题