本文参考了https://gist.github.com/mcastelino/43cc733e53d65ef67452ecaf78e936c2
vhost-net是一种较virtio-net更为高效的网络虚拟化技术。在qemu中使用vhost-net非常容易,只需在 -netdev tap,之后加上vhost=on。但是默认情况下host只会产生一个vhost线程,当虚拟机有多个核心时无法发挥最大的效率。下面展示一下如何创建与vcpu数量匹配的vhost线程数。
qemu \
...
-netdev tap,fd=3,4,id=hostnet0,vhost=on,vhostfd=5,6 3<>$"$tapdev" 4<>$"tapdev" 5<>/dev/vhost-net 6<>/dev/vhost-net
上面的tapdev是macvtap。创建macvtap的方法:
ip link del testbr
ip link del testvlan
ip link del testtap
ip link add name testbr type bridge
ip link add link testbr name testvlan type macvlan mode bridge
ip addr add 172.20.0.1/16 dev testvlan
ip link set dev testvlan up
ip link set dev testbr up
ip link add link testbr name testtap type macvtap mode bridge
ip link set testtap up
tapindex=$(< /sys/class/net/testtap/ifindex)
tapdev=/dev/tap"$tapindex"
不使用macvtap的方法我没找到,因为一般的tap设备不会产生对应的字符设备。

本文介绍了一种提高QEMU中vhost-net网络虚拟化技术效率的方法。通过与虚拟机vCPU数量相匹配的vhost线程数设置,可以显著提升多核虚拟机的网络性能。此外,还详细介绍了使用macvtap创建tap设备的具体步骤。
1374

被折叠的 条评论
为什么被折叠?



