0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux网络性能瓶颈和解决方案

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2023-04-06 14:43 次阅读

我们的活动在互联网上每天都会产生海量的数据。我们知道这是一个“很大”的数字,但你知道到底有多大吗?

据粗略估算,目前互联网上每天新增的数据量超过 1.15 EB 。而预测到 2025 年,这一数字会增长到 491 EB。如果看不出来这个数字有多大,那么看下这个单位换算公式:1 EB = 1*1024*1024*1024 GB。

因为物联网也在超快地发展,无处不在的 IoT 设备会产生更多的数据,所以互联网数据会呈指数级增长。那么无论是云计算、大数据分析应用,还是 AI 处理,网络传输能否及时“吞”下暴涨的数据,就决定了服务的能力。

但目前承载互联网服务的主流操作系统 Linux却存在网络性能瓶颈,问题出在哪里呢?

1Linux 网络的瓶颈

当 Linux 在 20世纪90 年代初设计开发 Linux 内核时,还无法预料到未来30年全球互联网的规模,所以也不可能按现在的数据流量去做设计。而 Linux 内核的基本结构也保持到现在。

因此问题就在于 Linux 内核网络协议栈的实现,相对于当下的数据吞吐量需求,有以下三个原因会产生网络传输瓶颈:

应用程序和网络协议栈在交换数据时,会频繁地在用户态与内核态之间切换,导致延时产生;

数据要在用户空间缓存与内核空间缓存之间往来复制,耗费时间;

内核协议栈需要对数据进行封装和解析工作,占用 CPU 时钟

48f54248-d43c-11ed-bfe3-dac502259ad0.png

内核协议栈方案的数据流

办法总比困难多,《Linux高性能网络详解:从DPDK、RDMA到XDP》一书就针对上述问题给出了包括软件与硬件的解决办法。本书的作者是业内资深专家,他在书中以理论结合实践,说明了 DPDK、RDMA、XDP 实现 Linux 高性能网络以及保障传输安全的方案。

2DPDK:低成本的高性能网络技术

DPDK(Data Plane Development Kit,数据平面开发工具包)是在用户态运行的一组软件库和驱动程序。它的一大优点是可以在所有主要 CPU 体系上加速网络数据包的处理,这样一来,现有硬件无须升级,只要在内核加装相应驱动就可以提升网络性能,是一种低成本的实现方案。

DPDK 技术原理是绕过 Linux 内核协议栈直接访问网卡硬件,从而提高网络数据包的处理速度和吞吐量。DPDK 将网卡的数据包直接映射到用户空间,然后使用高效的数据包处理库进行数据包的处理和转发,最后再将数据包发送回网卡。

在数据中心、云计算、虚拟化、网络安全等应用场景中,DPDK可以提高网络应用的性能和吞吐量、降低网络延迟、提高网络应用的响应速度和稳定性,还可以支持多种网络协议和数据包格式,具有很好的灵活性和可扩展性。

DPDK 为处理数据包实现了一个“运行到完成”(run to completion)的模型,在执行数据平面处理逻辑之前,必须先分配所有资源,然后以逻辑核上执行单元(线程)的形式运行。该模型不支持调度器,以轮询的方式访问所有设备。

DPDK 的核心是一组库,下图是核心组件以及它们之间的依赖关系。

48fd0de8-d43c-11ed-bfe3-dac502259ad0.png

DPDK 核心组件

《Linux高性能网络详解:从DPDK、RDMA到XDP》详细说明了 DPDK 的内存管理与优化、DPDK 的编译与运行方法,介绍了测试和分析高性能网卡的工具与方法,是手把手式的贴心教程。这对于讲述内核驱动开发来说,是相当友好的学习体验。

接下来,我们了解一种软硬件结合的解决方案。

3RDMA:软硬兼施的高性能网络技术

RDMA(Remote Direct Memory Access,远程直接内存访问)提供了一种消息服务,应用程序可基于该服务直接读写远程计算机上的虚拟内存。

RDMA 相对于 DPDK 技术,不仅绕过了软件协议栈,最大的优点是将数据封装和解析工作放在了网卡里,由硬件来实现。这样就降低了 CPU 的负载,特别适合高性能计算场景,例如分布式神经网络计算。

它的工作原理是通过操作系统的通信机制建立通道,由应用程序在用户态直接操作硬件,数据无须流经内核,从而实现高效的网络传输性能。

下面我们从数据在两台主机之间的传输过程来了解一下 RDMA 的工作方式:

发送端网卡从本机内存用户空间复制数据到硬件缓冲区,并添加协议头,完成封装工作;

发送端网卡将数据通过网线或光纤将数据发往对端;

接收端网卡收到数据后,进行协议解封装,然后将数据从硬件缓冲区复制到本机用户空间内存中。

49088268-d43c-11ed-bfe3-dac502259ad0.png

RDMA 方案的数据流

由上述可知,采用 RDMA 方案可以稳定获得网卡最大速率传输能力,而不会因为 CPU 负载变化造成传输效能波动。但在部署组网时,必须采购支持 RDMA 的特殊网卡。

《Linux高性能网络详解:从DPDK、RDMA到XDP》对 RDMA 组网方案与性能评估测试有详细说明,对于提供高性能计算服务的企业极具参考价值。

4XDP:高效传输的保障

DPDK 在传输数据时采用了操作系统内核旁路方式,这固然提升了效率,但也失去了操作系统安全机制提供的防护。这样就存在数据被截获、盗取的风险,因此需要有对数据的保护措施,同时保证高效传输。

XDP(eXpress Data Path,快速数据通路)是一种 BPF 的程序/代码,可以理解为挂载在 BPF 处理流程内的挂钩方法。它能够在网络数据到达网卡时就对其处理,而不过多占用 CPU 计算资源。

BPF 提供了在内核事件与应用程序事件发生时执行一段程序的机制。这使得内核可编程,XDP 即基于 BPF 特性为数据高速传输提供了保障。目前,XDP 已经是 Linux 内核的一部分,与现有的内核网络协议栈完全兼容,二者可以协同工作 。

XDP 的典型处理流程如下:

从网卡收到数据包,提取数据报头信息;

读取或更新一些元数据;

根据需要修改或者重写数据包;

根据策略决定是丢包、重传,还是重定向至内核协议栈等。

4913a6b6-d43c-11ed-bfe3-dac502259ad0.png

典型的 XDP 程序的执行流程

XDP 拥有诸多优点。第一,它由 Linux 内核社区维护,长期使用有保障,也无须额外安装组件;第二,它可以与内核协同,可复用内核安全模型;第三,BPF能够识别并拒绝执行不安全指令;第四,它不会独占 CPU,节约计算资源。

所以,在规划高性能网络实施方案时,需要将 DPDK 等技术与 XDP 相结合,尽可能地在性能与稳定、安全之间取得最佳平衡。

5结语

对于企业来说,在规划和实施网络方案时,一定要从自身业务特点出发,切忌巨额投资之后却是高射炮打蚊子的效果。这也需要技术团队对 Linux 网络技术原理有透彻理解,然后才能选择最适合的技术方案。

例如,业务发展稳定且已部署大量 Linux 服务器的企业,为了提升网络效能,可以选择 DPDK、XDP 技术。对于意欲进军 AI 业务的新兴企业来说,就要考虑充分解放算力,获得最优传输效能,可以选择 RDMA 技术路线。而拥有诸多复杂服务的云计算厂商,则要混合部署多种网络传输方案,同时保持稳定和速率。

《Linux高性能网络详解:从DPDK、RDMA到XDP》就为实现上述需求提供了很好的指引。从对 DPDK、RDMA、XDP 技术的原理说明,到深入代码级别的剖析,再以实例展示使用方法。企业据此就可以开展网络环境评估、技术选型参考、规划实施等工作。

在数据还将指数级暴增的未来,互联网企业都要未雨绸缪,及时调整网络环境,消除网络传输瓶颈,在未来赢得先机!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    54

    文章

    11067

    浏览量

    102561
  • Linux
    +关注

    关注

    87

    文章

    11196

    浏览量

    208659
  • 操作系统
    +关注

    关注

    37

    文章

    6658

    浏览量

    123110
  • 网络
    +关注

    关注

    14

    文章

    7470

    浏览量

    88517
  • 性能
    +关注

    关注

    0

    文章

    269

    浏览量

    18949

原文标题:Linux网络性能上不去?三招打通瓶颈,从此网络高性能

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    2009最新LED路灯技术设计和解决方案

    2009年11月19-20日,OFweek光电新闻网,LEDWeekly将举办“2009最新LED路灯技术设计和解决方案”系列在线研讨会。欢迎朋友们参加, 详细情况看这里~: http://webinar.ofweek.com/index.action?user.id=2 有兴趣的朋友可以来参加! 
    发表于 11-08 23:57

    仪表放大器--常见的应用问题和解决方案

    仪表放大器--常见的应用问题和解决方案很完整的资料!
    发表于 12-15 09:53

    高效轻型线程对Linux实时性能有什么影响

    简介上个世纪,研发人员投入了大量精力提高Linux实时性能和行为,最著名的是PREEMPT_RT Linux实时扩展。最近,研发人员致力于研究适用于多核设备的Linux用户空间
    发表于 05-16 10:45

    无线传感器网络的挑战和解决方案

    无线传感器网络的挑战和解决方案
    发表于 09-17 06:53

    多核设备中的Linux实时性能怎么提高?

    解决方案允许从用户空间中直接访问基础硬件,从而可避免因将 Linux 内核引入用户空间应用而带来的额外系统开销。这些用户空间扩展(有多个)已首先由电信/网络性能 IP 数据包处理系统
    发表于 04-06 08:17

    EMI耦合类型和解决方案

    、高性能和解决方案尺寸三个考虑因素通常相互冲突:只能优先考虑一两个,而放弃第三个,尤其当设计期限临近时。牺牲一些性能变得司空见惯;其实不应该是这样的。。
    发表于 10-22 14:10

    ADI锂电池测试设备和解决方案

    ADI锂电池测试设备和解决方案
    发表于 09-08 16:23 15次下载
    ADI锂电池测试设备<b class='flag-5'>和解决方案</b>

    PFC+LLC的产品和解决方案分析

    PFC LLC英雄产品和解决方案
    的头像 发表于 05-29 09:05 1w次阅读
    PFC+LLC的产品<b class='flag-5'>和解决方案</b>分析

    Java:调用window的matlab遇到的问题和解决方案

    Java:调用window的matlab遇到的问题和解决方案
    的头像 发表于 06-20 09:32 3288次阅读
    Java:调用window的matlab遇到的问题<b class='flag-5'>和解决方案</b>

    无线传感器网络的挑战和解决方案

    无线传感器网络的挑战和解决方案
    发表于 03-19 04:28 4次下载
    无线传感器<b class='flag-5'>网络</b>的挑战<b class='flag-5'>和解决方案</b>

    无线传感器网络的挑战和解决方案

    无线传感器网络的挑战和解决方案
    发表于 03-21 13:41 1次下载
    无线传感器<b class='flag-5'>网络</b>的挑战<b class='flag-5'>和解决方案</b>

    针对微处理器的Linux基础和解决方案

    供了关键资源的网络链接,旨在帮助嵌入式 Linux 解决方案的开发人员运行、构建和使用这一功能丰富的生态系统。
    发表于 03-31 11:24 3次下载
    针对微处理器的<b class='flag-5'>Linux</b>基础<b class='flag-5'>和解决方案</b>

    WP001-无线传感器网络面临的挑战和解决方案

    WP001-无线传感器网络面临的挑战和解决方案
    发表于 04-25 08:43 5次下载
    WP001-无线传感器<b class='flag-5'>网络</b>面临的挑战<b class='flag-5'>和解决方案</b>

    无线传感器网络面临的挑战和解决方案

    无线传感器网络面临的挑战和解决方案
    发表于 04-29 12:47 2次下载
    无线传感器<b class='flag-5'>网络</b>面临的挑战<b class='flag-5'>和解决方案</b>

    PCB金手指设计的常见问题和解决方案

    PCB金手指设计的常见问题和解决方案
    的头像 发表于 12-25 10:09 1962次阅读