如何在Linux中创建多队列tap设备?

How to create a multiqueue tap device in Linux?

我已经尝试使用以下命令为我的虚拟机 tap0 创建一个 tap 设备 vm1:

$ tunctl -t tap0 -u root
$ brctl addif br0 tap0
$ ifconfig tap0 up

检查频道时出现以下错误:

$ ethtool -l tap0
Cannot get device channel parameters
: Operation not supported

我想也许我创建的方法 tap0 不正确,但我不知道正确的方法。

感谢任何帮助。

关于这个问题,我还不知道如何实现。但是我找到了另一种方法来使用 qemu-kvm 为 VM 创建多队列分路器设备。这是我的脚本:

#!/bin/bash

qemu-kvm -name vm1 -smp cpus=8 -m 8192 \
        -drive file=/opt/kvm/vm1.qcow2,if=virtio \
        -netdev tap,id=dev0,script=no,downscript=no,ifname=tap0,vhost=on,queues=8 \
        -device virtio-net-pci,netdev=dev0,mac=52:54:00:56:78:90,mq=on,vectors=18 \
        -daemonize

if [ $? -eq 0 ];then
        sleep 5
        brctl addif br1 tap0
        ifconfig tap0 up
fi

该脚本创建一个带有 8 个队列的分路器 tap0,将 tap0 添加到网桥 br0,并设置 tap0

您可以在您的 VM 中使用 ethtool -l [ifname],这是我的输出:

$ ethtool -l eth0
Pre-set maximums:
RX:             0
TX:             0
Other:          0
Combined:       8
Current hardware settings:
RX:             0
TX:             0
Other:          0
Combined:       8         # current has 8 queues enabled

完成。