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

问题描述 投票:0回答:2

我尝试使用以下命令为我的虚拟机创建一个点击设备

tap0
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 tap
2个回答
1
投票

关于这个问题,我还是不知道如何实现。但我找到了另一种方法来使用

qemu-kvm
为虚拟机创建多队列分流设备。这是我的脚本:

#!/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

您可以在虚拟机中使用

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

完成。


0
投票

我使用以下命令来设置多队列 tun0 设备。

sudo ip tuntap add dev tap0 mode tap group netdev multi_queue

然后我使用以下网络设置运行 QEMU VM。

NETWORK=" -netdev tap,ifname=${TAP:-tap0},id=n1,script=no,downscript=no,queues=4 -device virtio-net-pci,mac=AA:BB:CC:DD:CA:B1,netdev=n1,mq=on,vectors=18"

重要选项是

virtio-net-pci
mq=on,vectors=18
。 有关向量参数的信息https://www.linux-kvm.org/page/Multiqueue

另外,为了防止 QEMU 尝试管理 tap0,我禁用了脚本

script=no,downscript=no

我的结果

root@ubuntu:/shared# ethtool -l ens5
Channel parameters for ens5:
Pre-set maximums:
RX:             n/a
TX:             n/a
Other:          n/a
Combined:       4
Current hardware settings:
RX:             n/a
TX:             n/a
Other:          n/a
Combined:       2

两个核心之间的中断分配(我用两个核心运行vm)

root@ubuntu:/shared# cat /proc/interrupts |grep virtio.-input
 28:   20079840          0   PCI-MSI 81921-edge      virtio1-input.0
 30:          1   20235243   PCI-MSI 81923-edge      virtio1-input.1
 32:          0          0   PCI-MSI 81925-edge      virtio1-input.2
 34:          0          0   PCI-MSI 81927-edge      virtio1-input.3

© www.soinside.com 2019 - 2024. All rights reserved.