温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

网络接口队列如何调优

发布时间:2026-09-26 11:28:13 来源:亿速云 阅读:95 作者:小樊 栏目:系统运维

网络接口队列(NIC queues / 收发队列 / 多队列网卡)调优,核心目标是:减少丢包、降低延迟、提升吞吐、均衡 CPU 负载。下面从「概念 → 排查 → 调优手段 → 常见场景」系统说明。


一、先搞清楚你在调什么

现代网卡通常有:

  • TX queue(发送队列)
  • RX queue(接收队列)
  • Queue count(队列数量)
  • Ring buffer(环形缓冲区)
  • NAPI / 中断(IRQ)
  • RPS / RFS / XPS(软件队列优化)

关键关系:

网卡硬件队列 → 中断 → CPU → 协议栈

二、第一步:先确认问题

1. 是否有丢包?

ethtool -S eth0 | grep -i drop
ethtool -S eth0 | grep -i miss
  • rx_dropped
  • rx_missed_errors
  • tx_timeout

2. 队列是否打满?

ethtool -g eth0

看:

  • RX(pre-set / current)
  • TX

3. 中断是否集中在一个 CPU?

cat /proc/interrupts | grep eth0
mpstat -P ALL 1

如果某个 CPU 100%,其他空闲 → 队列/中断不均衡。


三、硬件队列数量调优(最重要)

1. 查看/设置队列数

ethtool -l eth0        # 查看
ethtool -L eth0 combined 8

建议:

  • 队列数 ≈ 物理 CPU 核心数
  • 云服务器:受虚拟化限制(常 ≤ 4–8)

四、Ring Buffer 调整(防丢包)

ethtool -G eth0 rx 4096 tx 4096

经验值:

  • 高吞吐:4096 / 8192
  • 低延迟:不要盲目加大(增加延迟)

⚠️ 受网卡上限限制(ethtool -g)


五、中断亲和性(IRQ Affinity)

1. 手动绑核

# 假设 eth0-rx-0 对应 IRQ 45
echo 2 > /proc/irq/45/smp_affinity

2. 自动工具

irqbalance

或:

set_irq_affinity.sh eth0

✅ 目标:

  • 每队列绑定不同 CPU
  • 避免和业务进程抢核

六、NAPI / 中断合并(延迟 vs 吞吐)

查看

ethtool -c eth0

调整(例:高吞吐)

ethtool -C eth0 rx-usecs 50
ethtool -C eth0 tx-usecs 50
场景 建议
高吞吐 大 usecs
低延迟 小 usecs / 关合并
交易系统 rx-usecs 0

七、软件队列优化(多核必开)

1. RPS(接收软队列)

echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus

2. RFS(按流绑核)

echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
echo 2048 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt

3. XPS(发送队列选择)

echo f > /sys/class/net/eth0/queues/tx-0/xps_cpus

八、TCP / 队列联动优化(常被忽略)

net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.netdev_max_backlog = 10000
net.core.somaxconn = 65535

九、典型场景建议

✅ 高并发 Web / API

  • 多队列 + RPS/RFS
  • IRQ 绑核
  • backlog ↑

✅ 低延迟交易

  • 队列少而精
  • 中断合并关闭
  • CPU 隔离(isolcpus)

✅ 大带宽下载

  • Ring buffer ↑
  • TX/RX usecs ↑
  • TSO/GRO 开

十、验证是否生效

iperf3 -c target
ping -i 0.01 target
ethtool -S eth0
mpstat -P ALL 1

总结一句话

网卡队列调优 = 队列数匹配 CPU + 中断均衡 + Ring buffer 防丢 + 延迟/吞吐权衡

如果你愿意,可以告诉我:

  • 网卡型号(ethtool -i eth0)
  • 系统(CentOS / Ubuntu / 容器 / 云)
  • 场景(Web / 存储 / 交易 / 视频)

我可以直接给你一套可执行的调优命令。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手