7.4 vhost-net调优
为虚拟机选择网卡类型时,virtio类型网卡是专为虚拟化而设计的网卡,相比于传统的全模拟网卡e1000,e1000e等虚拟机切换更少,效率更高。在virtio-net的基础上,设计了vhost-net网卡,减少了系统调用次数和数据拷贝而更加高效,目前当选择virtio网卡时默认使用vhost-net。
vhost-net支持poll-us选项,允许在没有包处理任务时忙等一段时间,如果很快有数据来到,此时的等待是有效的,可以避免无效的进程切换开销。如果在等待的时间内没有任何数据处理则忙等是无意义的,并且额外占据了CPU。目前在netperf -t TCP_RR/UDP_RR
测试中可以显著提升性能,其他场景以实际应用效果为准。
在qemu中可以直接以-netdev tap,vhost=on,poll-us=1000
进行设置,但是libvirt不支持该参数选项,龙芯 KVM 虚拟化对此进行了支持,配置如下:
- 普通NAT
<interface type='network'> <mac address='52:54:00:a0:ab:5c'/> <source network='default'/> <model type='virtio' poll-us='100'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </interface>
- 桥接物理网卡时配置
<interface type='bridge'> <mac address='52:54:00:a0:ab:5c'/> <source bridge='virbr0'/> <model type='virtio' poll-us='10'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </interface>