多队列网卡介绍

1)   简介

多队列网卡是指一个网卡上有多个队列,内核会给每个队列注册一个中断号,具体可以在/proc/interrupts | grep {网卡} 查看,其中第一列是中断号,最后一列是网卡队列信息。CPU和中断号有亲和性,一般网卡中断和一个CPU绑定,绑定关系可以在/proc/irq/{中断号}/smp_affinity_list查看。网卡收到消息后会根据源IP+PORT和目标IP+PORT进行hash,然后分配指定队列(有些网卡有自己的hash规则)。这里补充一点,之前想到个问题,网卡为什么知道端口号。问了大佬才知道现在网卡是可以解析到传输层协议的。

2)   疑惑

网卡与内存数据传输有两种方式,一种是DMA,一种是IRQ。DMA是指有个DMAC(DMA控制器)负责将网卡数据放到指定buffer上,然后CPU在空闲时去处理这部分信息。IRQ是指网卡通过中断提醒CPU可操作,然后CPU进行读写。

这里我有疑问,网上有人说网卡上的队列就是所谓的DMA的缓冲区,那么就是说IRQ和DMA是同时应用在网卡上的。但我又看到一种说法是, DMA是不需要中断的,一般是CPU有空就去处理。具体是哪种我也不清楚。

在测试时,通过查询CPU处理中断的次数,可以发现中断次数和发包数不一致,所以应该是一次中断处理了多个包。

转载于:https://www.cnblogs.com/scaugsh/p/10256360.html

### 虚拟机中多队列网卡的配置与使用 为了提升虚拟机的网络性能,可以通过启用和配置多队列网卡来分担网络流量负载并减少单核 CPU 的瓶颈。以下是关于如何在 KVM 和 CentOS 中配置多队列网卡的相关说明。 #### 1. 多队列网卡的工作原理 多队列网卡的核心在于将多个接收/发送队列分配给不同的 CPU 核心,从而提高并发处理能力。这种机制能够显著改善高吞吐量环境下的网络性能[^4]。 #### 2. 启用硬件支持的多队列功能 大多数现代网卡都支持多队列特性,但在实际应用前需确认其是否已开启。可通过以下命令查看当前网卡的队列数量: ```bash ethtool -l eth0 ``` 如果显示的队列数较少或者未启用多队列,则需要调整为最大可能值。例如: ```bash ethtool -L eth0 combined 8 ``` 上述命令会尝试将 `eth0` 设置为拥有 8 个组合队列(即 RX/TX 对)。具体的最大队列数目取决于硬件规格以及驱动程序的支持情况。 #### 3. 绑定中断至不同 CPU 核心 为了让每条队列都能充分利用独立的计算资源,应合理规划各队列所对应的 CPU 核心。这一步骤通常涉及修改 `/proc/irq/<IRQ>/smp_affinity` 文件的内容。假设某个多队列网卡占用 IRQ 编号为 47 至 54 ,则可以分别指定它们关联的不同核心 ID 。例如对于第四个队列 (IRQ=50),执行如下操作将其固定于第三颗逻辑处理器之上: ```bash echo "8" | sudo tee /proc/irq/50/smp_affinity_list ``` 这里 `"8"` 表示第三个 CPU 核心(从零计起)。 #### 4. 在 KVM 环境下创建具备多队列特性的虚拟 NIC 当宿主机已经完成必要的准备工作之后,在定义新的虚拟机接口时也需要特别指明允许该设备利用多队列优势。借助 libvirt 工具集中的 virsh 命令行工具即可轻松达成目标。下面展示了一个典型例子用于向现有域附加一个多队列 vNIC : ```bash virsh attach-interface --domain my_vm \ --type bridge \ --source br0 \ --model virtio-net-pci \ --config \ --live \ --managed yes \ --link up \ --multifunction on \ --driver-options name=virtio_net_queues,value=4 ``` 此脚本片段不仅新增了一块基于 VirtIO 协议栈构建起来的标准以太网适配器而且明确规定它内部应该存在四组数据交换通道以便更好地发挥底层物理设施潜力[^3]。 #### 5. 测试与验证效果 最后不要忘记进行全面的功能性和压力测试以确保一切改动均按预期生效并无任何副作用影响正常业务运转。可以采用 iperf3 或者 netperf 这样的专门软件来进行定量分析比较改造前后各项指标差异程度大小。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值