云计算百科
云计算领域专业知识百科平台

【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程

 更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛

https://forum.kylinos.cn/home


了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:product.kylinos.cn

开发者专区:developer.kylinos.cn

文档中心:document.kylinos.cn

交流论坛:forum.kylinos.cn


服务器环境以及配置

【内核版本】

4.19.90-25.22.v2101.ky10.x86_64

【OS镜像版本】

银河麒麟高级服务器操作系统

Kylin Linux Advanced Server release V10 (SP2) /(Sword)-x86_64-Build09/20210524

现象描述

服务器业务访问很慢,可能存在网卡丢包,交换机侧有收到反压帧(有反压帧,说明服务器网卡的接收缓存区可能满了)。

网卡品牌是:Mellanox,有多个优先级缓存区(8个,优先级0-7)。目前通过ethtool -S查看,发现rx_prio0_buf_discard值很大,不为0。但是rx_out_of_buffer为0。

关于迈络思网卡有几个问题:

  • 数据包到服务器网卡,到底走哪个优先级缓存区(因为有8个,走哪个缓存区是网卡判定的还是操作系统判定的,还是说交换机上面控制的)?
  • 如果某个优先级的缓存区满了,继续有包过来是不是会丢弃,还是说等待排队,如果这个优先级的缓存区没有开启PFC功能,是不是数据包就会丢弃?
  • 迈洛思网卡是不是可以调整各个优先级的缓存区大小(通过命令mlnx_qos -i 网卡名 –buffer_size),这个调整是不是调整的网卡的硬件缓存区大小?
  • 现象分析

    现象1分析

    数据包到服务器网卡,走哪个优先级缓存区,由报文DSCP和网卡配置决定。

    通过mlnx_qos工具将不同DSCP绑定到不同优先级缓存区,以设置具备不同DSCP的报文走哪个优先级缓存区。

    DSCP(Differentiated Services Code Point,差分服务代码点)是一种用于网络报文优先级分类的标记,使用每个数据包IP头部的TOS字段进行标识,通过不同的编码值来区分不同优先级。

    用户可以将不同DSCP绑定到网卡不同的接收缓冲区。网卡收到某个报文后从IP头部读取DSCP值,根据DSCP值和网卡配置规则,确定该报文进入哪个硬件缓存区。

    现象2分析

    如果某个优先级的缓存区满了,后续包的处理逻辑受PFC(优先级流量控制)功能影响:

  • 若开启了PFC功能,处理过程如下:
  • 接收该报文,并向对端发送PFC PAUSE帧,通知对端设备暂时停止发送该类报文;对端设备在接收到PFC PAUSE帧后,将暂时停止向本端发送该类报文;当拥塞仍然存在时,此过程将重复进行,直至拥塞解除。

    需要注意,必须保证本端和对端的PFC功能都处于开启状态,PFC功能才能生效。PFC中流量暂停只针对某一个或几个优先级队列,不针对整个接口进行中断,每个队列都能单独进行暂停或重启,而不影响其他队列上的流量。

  • 若没有开启PFC功能,处理过程如下:
  • 系统不进行反压处理,即在发生拥塞时直接丢弃报文。

    现象3分析

    迈洛思网卡可以调整缓存区大小。

    通过迈络思官方文档,可以查到通过命令“mlnx_qos -i 网卡名 –buffer_size sizelist”来设置接收缓冲区大小,如下说明:

    图2 迈络思参数说明

    官方文档链接:

    https://enterprise-support.nvidia.com/s/article/mlnx-qos

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!