首页 文章

什么限制了来宾VM中virtio网络接口的吞吐量

提问于
浏览
1

假设一个带有KVM的Linux主机运行带有virtio接口的Linux来宾VM,那么对于virtio接口可以实现的吞吐量的限制因素是什么?

尽管从虚拟接口开始带宽可能是1 Gbps,但我假设数据吞吐量可能更高 . 吞吐量是否受访客VM的CPU限制,或者之前是否存在virtio驱动程序限制?

1 回答

  • 4

    virtio驱动程序是一个半虚拟化驱动程序,这意味着驱动程序的一些内部,环形缓冲区和寄存器向客户机公开,并且可以由客户机访问,就好像它以较少的命中写入客户机内存一样 .

    暴露的环形缓冲区的大小是一个限制,并且硬编码为256个元素 . 我已经看到一些qemu补丁增加了这个大小,但它不在主线中所以我猜测额外内存使用的缺点是太高而不允许这样做 .

    更好的方法是让您的客户操作系统使用多个virtio队列 . 对于tx,默认值为1,对于rx,默认值为1 . 因此,您有多个tx队列,然后通过该负载 balancer 流量 . 这将提供更高的吞吐量,但不能用于单个会话 .

    vhost-net也许是一个更好的方法 . 我想象一下 . 哦,是的,中断延迟是另一个限制因素,我发现客户端驱动程序可以在每次中断时尽可能多地从环中拉出数据包以最大化速度 . vhost-net详细信息在这里http://www.linux-kvm.com/content/how-maximize-virtio-net-performance-vhost-net

相关问题