要确认网络接口RX/TX队列深度,需区分三层机制:1. 硬件Ring Buffer用ethtool -g eth0查看;2. 内核txqueuelen用ifconfig或ip link show dev eth0查;3. 多队列数量通过/sys/class/net/eth0/device/{rx,tx}_queue/统计。

要确认当前网络接口的 RX(接收)和 TX(发送)队列深度,必须区分三层独立机制:网卡硬件 Ring Buffer、内核协议栈传输队列(txqueuelen)、以及多队列场景下的具体 CPU 绑定队列数。混用命令或误读字段会导致数值完全对不上。
查网卡硬件 Ring Buffer 的 RX/TX 队列大小
执行 ethtool -g eth0(将 eth0 替换为你的实际接口名,如 ens33、enp0s3)。
在输出中定位 Current hardware settings 下的 RX 和 TX 行——这两个数值就是当前生效的硬件级接收与发送环形缓冲区深度,单位是包数。
若显示 No data available,说明该网卡驱动不支持 Ring Buffer 调整,比如某些 virtio_net 虚拟网卡或老旧芯片;此时该值不可查也不可调。
查内核传输队列长度(txqueuelen)
方法一:使用 ifconfig
运行 ifconfig eth0,直接在末尾找到 txqueuelen 1000 字段——这就是内核层向网卡驱动提交数据包时允许排队的最大包数。
注意:如果网卡处于 DOWN 状态,ifconfig 默认不显示该字段,必须加 -a 参数强制列出所有接口。
方法二:使用 ip link(推荐,无需 net-tools)
运行 ip link show dev eth0,查找输出中 txqlen <n></n> 对应的数字,例如 txqlen 1000。
【txqueuelen 是内核协议栈出口队列,和硬件 Ring Buffer 完全无关】。它影响高并发发包时的延迟与丢包,但不控制硬件收包能力。
查多队列网卡的实际 RX/TX 队列数量
第一步:确认网卡是否启用多队列
执行 ls /sys/class/net/eth0/device/msi_irqs/,若目录存在且含多个 IRQ 编号(如 40、41、42),说明已启用多队列。
第二步:统计当前激活的 RX 队列数
运行 ls /sys/class/net/eth0/device/rx_queue/ | wc -l。
第三步:统计当前激活的 TX 队列数
运行 ls /sys/class/net/eth0/device/tx_queue/ | wc -l。
这两步返回的数字分别代表当前启用的硬件 RX 队列个数和 TX 队列个数——每个队列都有独立的 Ring Buffer,由不同 CPU 核心处理。若提示 No such file or directory,说明是单队列网卡(1 RX + 1 TX)。


















