【Linux】网卡队列查询

  • 网卡队列:单队列、双网队列
    查看操作系统。资源配置,更新ip到文档,查看网卡队列

在这里插入图片描述

技术背景

  • A
    单CPU处理网络IO存在瓶颈, 目前经常使用网卡多队列提高性能.通常情况下, 每张网卡有一个队列(queue), 所有收到的包从这个队列入, 内核从这个队列里取数据处理. 该队列其实是ring buffer(环形队列), 内核如果取数据不及时, 则会存在丢包的情况.
    一个CPU处理一个队列的数据, 这个叫中断. 默认是cpu0(第一个CPU)处理. 一旦流量特别大, 这个CPU负载很高, 性能存在瓶颈. 所以网卡开发了多队列功能, 即一个网卡有多个队列, 收到的包根据TCP四元组信息hash后放入其中一个队列, 后面该链接的所有包都放入该队列. 每个队列对应不同的中断, 使用irqbalance将不同的中断绑定到不同的核. 充分利用了多核并行处理特性. 提高了效率。引用一张图来描述单网卡单队列与多网卡多队列之间cpu处理的差异。
    通过这种设置单网卡多队列的方式,将不同队列绑定到不同cpu,从而实现cpu利用率的负载分担。实现该技术的前提是网卡必须支持RSS(Receive Side Scaling)。RSS是网卡的硬件特性,实现了多队列,可以将不同的流分发到不同的CPU上。
    X86系统采用中断机制协同处理CPU与其他设备工作。长久以来网卡的中断默认由cpu0处理,在大量小包的网络环境下可能出现cpu0负载高,而其他cpu空闲。后来出现网卡多队列技术解决这个问题。

if [[ $(ls -l /sys/class/net/e*/queues/|awk -F\- '{print $NF}'|sort -rn|uniq|head -1) > 0 ]] ;then echo "是多队列" ; else "是单队列";fi

猜你喜欢

转载自blog.csdn.net/weixin_53240476/article/details/132474493
今日推荐