栏目头部广告

Linux性能异常经典案例分析之包量吞吐

一、网卡包量介绍

聊到网卡,我们通常第一个想到的就是带宽处理能力,像千兆、万兆、全双工等等指标更多展示的就是带宽有多大,但很少有人关心网卡的包处理能力上限在哪儿,到底是每秒1万、10万还是100万。为什么呢?因为极少有人会遇到包数转发处理能力的瓶颈,这种情况只出现在业务压力非常大、平均网络包size非常小的业务场景上,否则通常包数还没达到瓶颈,带宽就已经满了。

二、案例分享

2.1 业务场景说明

客户是加速类业务,即云主机负责流量、数据包的转发,云主机并不会去处理转发的数据报文。类似国内的很多游戏加速器服务~ Linux性能异常经典案例分析之包量吞吐(图1)

2.2 故障分析

故障现象回顾:客户通过监控发现,云主机的CPU使用率很高,但是TOP实时无法采样到消耗CPU较高的进程。同时,TOP采样显示云主机CPU si指标较高,即服务器CPU软中断消耗了大量CPU性能。如下图:

 Linux性能异常经典案例分析之包量吞吐(图2)

推荐文章:Linux性能异常经典案例分析之D进程  可参考伏笔篇了解TOP参数输出信息含义!

软中断知识补充说明:对同一个 CPU 来说,中断处理比进程拥有更高的优先级,所以中断上下文切换并不会与进程上下文切换同时发生。同样道理,由于中断会打断正常进程的调度和执行,所以大部分中断处理程序都短小精悍,以便尽可能快的执行结束。另外,跟进程上下文切换一样,中断上下文切换也需要消耗 CPU,切换次数过多也会耗费大量的 CPU,甚至严重降低系统的整体性能。所以,当你发现中断次数过多时,就需要注意去排查它是否会给你的系统带来严重的性能问题。(来源极客时间“Linux性能优化实战”篇)

恶补完软中断的知识,让我们回到客户问题的分析上:经过一系列的排查与分析,可以排除宿主异常影响虚机的场景,与此同时也无法找到异常的软件进程……此处省略200字 Linux性能异常经典案例分析之包量吞吐(图3)

当排查到云主机网卡时,发现主机的网卡包量非常高,与此同时通过观察发现,软中断si值与网卡包量呈现正相关趋势,网卡包量下降时,软中断si值也在下降,如下图:

 Linux性能异常经典案例分析之包量吞吐(图4)

 Linux性能异常经典案例分析之包量吞吐(图5)

sar -n DEV 1  #通过sar命令1s输出一次网卡包量吞吐情况

 Linux性能异常经典案例分析之包量吞吐(图6)

文章推荐:Linux服务器性能分析命令sar详解

通过以上截图不难发现,云主机的包量吞吐峰值已经达到了10w+pps,通过sar分析的时候,包量已经降到了3W+pps,此时主机的软中断si值也下降到了20左右。所以可以确定虚机的峰值包量吞吐已经接近虚机网卡的瓶颈,云主机需要消耗更多的CPU去处理网卡数据包的转发。那么如何解决主机包量吞吐触及瓶颈的问题呢?让我们一起看看以下三个解决方案 Linux性能异常经典案例分析之包量吞吐(图7)

三、常规解决方案

3.1 方案一:传统IDC物理服务器多张网卡做Bond负载均衡

多网卡绑定一方面能够提高网络吞吐量,另一方面也可以增强网络高可用。从软件的角度来看,多网卡绑定实际上只需要提供一个额外的bond区动程序即可,通过该虚拟网卡驱动程序可以将实际多块网卡屏蔽,对TCP/IP协议层而言只存在一个Bond网卡。

 Linux性能异常经典案例分析之包量吞吐(图1)

-mode=0 round-robin轮询策略(Round-robin policy)
-mode=1 active-backup主备策略(Active-backup policy)
-mode=2 load balancing(xor)异或策略(XOR policy)
-mode=3 fault-tolerance(broadcast)广播策略(Broadcast policy)
-mode=4 lacp IEEE 802.3ad 动态链路聚合IEEE 802.3ad Dynamic link aggregation)
-mode=5 transmit load balancing适配器传输负载均衡(Adaptive transmit load balancing)
-mode=6 adaptive load balancing适配器负载均衡(Adaptive load balancing)

3.2 方案二:云服务器横向扩展,增加节点数量

当单台UHost云主机网卡性能包量转发达到瓶颈时,可以通过ULB负载均衡横向扩展主机节点,将业务流量打散到多台UHost云主机上,即间接扩展了网卡所能承载的最大包量。

 Linux性能异常经典案例分析之包量吞吐(图1)

3.3 方案三:开启UCloud云主机网络增强功能

RSS(Receive-Side Scaling, also known as multi-queue receive),是网卡的硬件特性,实现多队列,将不同的流分发到不同的CPU上,同一数据流始终在同一CPU上,避免TCP的顺序性和CPU的并行性发生冲突。

(1)UCloud云主机的网络增强1.0特性,优化的就是网络数据包并行收发的能力,打开网络增强1.0配置,创建的新主机可以拥有网络高包量多队列并发特性,使带宽能力大幅提升,能并行处理和接受批量连接的报文,极大提升了虚拟机的包处理能力。原理如下图:

 Linux性能异常经典案例分析之包量吞吐(图1)

(2)UCloud网络增强2.0特性是基于新一代智能网卡进行网络包转发的优化方案,原理如下图:

 Linux性能异常经典案例分析之包量吞吐(图2)

注:快杰云主机使用的高性能智能网卡,主机内部可以看到三块网卡。对于业务侧来说,只需要关注eth0即可。快杰主机中出现的另外两块网卡的主要作用是,一块用于高性能网卡流量转发,另外一块是应对在迁移场景下的网络不中断。

网络增强性能数据参考UCloud官网。

作者:UStarGao
链接:https://www.starcto.com/systemtool/165.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`