Curve 存储是网易自研开源的分布式存储服务编程网站 洛谷本文作家网易数帆云搜集数据面肩负人汪翰林,正在作事中从事办事网格的搜集数据面功能优化,发觉此中的搜集功能优化的道理具有相通性。本文对通用的搜集功能优化技巧做出了总结,搜罗办事网格及搜集功能优化领会、搜集功能优化技能先容、搜集功能优化思绪三个方面,并枚举了本质案例举办进一步批注,供大师正在本质做功能优化时参考。

  前段时辰,团队连续正在做办事网格的搜集数据面功能优化,发觉此中的搜集功能优化的道理是相通的,是以就思着总结少少通用的搜集功能优化技巧,供大师正在本质做功能优化时参考。

  交易微办事化之后,为了提拔微办事的管理才干,大凡会引入一个交易无侵入的 sidecar 署理来供给微办事的流控、熔断、升级等办事管理才干。sidecar 会转发统统微办事的出口和入口流量,但如许会导致搜集道途扩充两跳,所有道途拉长,相应地时延也会扩充。

  引入的时延闭键分为 sidecar 交易照料时延以及搜集收发时延。广义上的搜集功能优化应当是端到端的时延优化,既搜罗照料时延优化,也搜罗搜集收发时延优化。咱们这里闭键计划狭义的搜集功能优化,仅搜罗搜集收发的时延优化。

  假使掀开搜集传输的链道,sidecar 分外引入了 Service 到 sidecar 以及 sidecar 到 sidecar 的链道,搜集时延的扩充闭键是由于链道中众过程的四次内核态 TCP/IP 赞同栈的开销。

  咱们通过 perf 火焰图领会了 sidecar 使用 Envoy 的 CPU 占用,发觉内核态赞同栈的 CPU 占比近 50%,而剩下的 50% CPU 闭键花费正在 Envoy 自己照料逻辑上。可睹,搜集时延的优化的要点也便是对内核态赞同栈的优化。

  咱们先来看一下针对内核态赞同栈的搜集功能优化技能,留意这里特指针对内核态赞同栈的优化,由于搜集功能优化的思绪再有良众,咱们会正在后面章节提到。

  针对内核态赞同栈的优化闭键思绪是 kernel bypass,即让报文只是程内核态赞同栈或者只是程无缺的内核态赞同栈,通过缩短搜集道途来到达功能优化的主意。目前闭键用到的技能搜罗 eBPF、用户态赞同栈以及 RDMA。

  eBPF(extended Berkeley Packet Filter)是一个内核技能,能够正在不须要从头编译内核的境况下,通过一种和平的、可编程的格式扩展内核的功效。eBPF 的闭键功效是正在内核层面举办和平、高效的搜集数据包过滤和照料,以及正在运转时对体例举办监控和调试。eBPF 能够通过独立的用户空间秩序来编写和加载,这些秩序能够和平地与内核交互,而不会影响内核的宁静性和和平性。

  轻易来说,目前的内核赞同栈照料流程的代码中预留了良众 hook 点,用户态编写的秩序编译成 eBPF 字节码之后能够注册到这些 hook 点,之后内核照料报文到 hook 点时就会挪用这些预编译好的字节码秩序落成特定的功效。如许咱们就能够独揽内核针对报文的照料流程,连合 eBPF 的 redirect 才干能够将报文直接转发到对应的搜集装备或者 socket,从而做到 kernel bypass。

  这里不得不提两类 hook 点:XDP 和 socket。XDP hook 是网卡收到报文后最早的 hook 点,能够竣工正在搜集驱动秩序中拦截和照料报文。而 socket hook 能够拦截相接扶植、收发的报文,是使用层照料报文最早的 hook 点。

  只是,eBPF 秩序终归照旧运转正在内核态,使用层举办搜集报文传输时照旧避免不了内核态和用户态的上下文切换开销。看待能够统统运转正在内核态的使用,如和平检测、负载平衡等场景则能够避免这个开销。

  顾名思义,用户态赞同栈是将赞同栈的竣工卸载到用户态来竣工。卸载到用户态竣工会带来几个好处:一是避免用户态和内核态的上下文切换;二是凭据须要定制和精简赞同栈的竣工;三是调测和运维也会愈加容易。

  报文卸载到用户态大凡采用 DPDK 或者 AF_XDP 的技巧。DPDK 是 Intel 主导的开源项目,目前主流网卡都援助,成熟且功能高,只是看待虚拟口(如 veth 口)的援助不敷好,正在容器化场景受限。AF_XDP 是基于 eBPF 的报文卸载技能,能够竣工正在网卡驱动层针对报文拦截并卸载到用户态,看待物理网口或者虚拟口的兼容性好,功能比拟于 DPDK 稍差。

  用户态赞同栈大凡须要开拓适配层来兼容 socket 接口,拦截 socket 挪用并分发到用户态赞同栈照料,如许使用层能够做到无需窜改代码,统统无感知。

  RDMA (Remote Direct Memory Access) 是一种高功能、低延迟的搜集通讯技能,它也许让估计机之间直接拜望互相内存中的数据,从而避免了守旧搜集通讯中的数据拷贝和 CPU 插手的进程。是以,RDMA 是一项软硬连合的搜集功能优化技能,将搜集传输卸载到 RDMA 硬件网卡中竣工,提拔功能的同时能够将 CPU 俭朴出来给使用应用。

  RDMA 的竣工技能分为 InfiniBand、RoCE 和 iWARP。InfiniBand 是最早的竣工格式,须要特意的硬件网卡和 InfiniBand 互换机配合组网,和以太网不兼容,本钱高但功能最好。RoCE 基于以太网传输 RDMA 报文,应用 UDP 封装报文,大凡须要组修基于 PFC/ECN 的无损搜集,不然丢包会导致功能劣化吃紧,总体功能较好,RoCE 的闭键代外是英伟达的 Mellanox 网卡。iWARP 基于 TCP,搜集适合性好,但功能最差,代外是 Intel 网卡。

  RDMA 对外供给 ibverbs 编程接口,和 socket 接口照旧有较大区别,只是直接基于此举办使用代码改制外面上功能收益最大。Mellanox 网卡正在此底子上封装了 UCX 接口,照旧不行做到统统兼容 socket 接口。由 Intel 和阿里主导的 SMC-R 能够竣工 socket 接口的统统兼容,因为封装后只可援助报文收受的中缀形式而不援助 polling 形式,会导致功能有耗损,底层只可适配 RoCE,无法兼容 iWARP。

  功能优化是一个端到端的体例性工程,遵从二八规矩,即 80% 的功能损耗正在 20% 的照料流程上。是以优化前照旧须要领会下导致 80% 功能损耗的 20% 的照料流程真相正在哪儿,是使用自己的照料逻辑照旧搜集传输层面。大凡咱们能够先应用功能领会器械(如 perf)做一下领会,确定瓶颈点。尽管确定是搜集传输的瓶颈,咱们也能够先从硬件修设和组网层面举办领会:

  其余,咱们也能够检验下内核参数修设,如网卡众部队修设,收发部队巨细修设,相接跟踪修设等。

  假使以上检验后发觉照旧知足不了条件,搜集传输还是是瓶颈,就能够推敲应用针对内核态赞同栈的功能优化技能。那么 eBPF/ 用户态赞同栈 /RDMA 技能咱们奈何来拔取呢?

  RDMA 归纳本钱和功能,RoCE 用的最众,只是 RoCE 目前受限于无损搜集,组网会有限定,大凡限定正在一个机房以至一个 ToR 下。

  用户态赞同栈由于赞同栈的定制竣工,没有内核态赞同栈的功效一共,是以使用的兼容性须要 case by case 的去做验证测试,斗劲适合于针对办事端的已知使用(如 Redis/Nginx/Envoy 等)的功能加快,而不太适合于举动一个通用的赞同栈供给给统统使用应用。

  eBPF 形似于给内核打补丁,哪里功能欠好就能够打上一个补丁,适合于小的功能优化点的修修补补。

  办事网格本质优化时连合了 eBPF Sockops 和用户态赞同栈技能。

  用户态赞同栈用来加快 sidecar 和 sidecar 之间的通讯链道,能够 bypass 掉 sidecar 之间通讯的内核赞同栈。由于 sidecar 之间通讯的链道不肯定能组修无损搜集,RDMA 加快不太适当。

  如今用户态赞同栈咱们援助功能优先形式和兼容优先形式。功能优先形式中,底层通过 DPDK 举办报文卸载,合用于物理口或者虚拟 VF 口的场景,容器化场景也能够对接 SRIOV 的容器搜集。兼容优先形式中,底层通过 AF_XDP 举办报文卸载,合用于虚拟 veth 口的场景,能够援助目前主流的容器搜集场景。

  其余,用户态赞同栈正在本质应用进程中或许见面对双栈的需求,即须要同时援助用户态赞同栈和内核态赞同栈。办事网格加快场景中 sidecar 和 Service 之间通讯固然通过 eBPF 举办了加快,但本色上照旧走内核。是以用户态赞同栈也须要援助凭据道由修设来确定报文走内核态照旧用户态赞同栈。

  图中是兼容优先形式最终加快的功效。时延有 35-40% 的低浸,其顶用户态赞同栈孝敬 30% 驾御,eBPF 孝敬 8% 驾御。

  Curve 存储是网易自研开源的漫衍式存储办事。正在 Curve 块存储的开拓及优化进程中,咱们发觉举动漫衍式体例,客户端须要通过搜集和存储节点通讯,存储节点之间也须要搜集通讯来落成众副本之间的相似性商讨进程。正在守旧的 TCP/IP 搜集赞同栈中,搜集数据包须要正在用户态 / 内核态之间举办拷贝、TCP/IP 赞同的层层解析和照料,花费了大方的 CPU 和内存带宽。是以咱们引入 RDMA 的 RoCE v2 技能来优化这局部的搜集功能,存储组网相对可控,互换机举办 PFC/ECN 的无损搜集修设,连合网卡的 DCQCN 堵塞独揽算法能够竣工基于无损搜集的 RDMA 组网。

  正在本质的适配进程中,应用 UCX 接口来加快客户端和存储节点以及存储节点之间的的 RPC 通讯,如许能够低浸具体的开拓难度及对交易代码的侵入窜改。为了担保牢靠且高效的 RDMA 报文传输,一方面,咱们与互换机厂商举办亲切疏导,领会并寻求扶植了一套适合于体例的 ECN+PFC 修设格式;另一方面咱们与网卡厂商协同领会网卡 DCQCN 堵塞独揽参数对 RDMA 流量传输的影响,最终得出最适宜的网卡参数修设。

  正在单深度 4K 随机写场景下,均匀延迟低浸 35%;4K 随机读,均匀延迟低浸 57%;

  与杭研云原生数据 BosonDB 落成对接测试和上线。正在数据库斗劲闭怀的 16K 随机 / 按次写中,IOPS 提拔起码 25%。

  跟着云估计,大数据和 AI 等技能的不竭发扬,大方的估计资源之间的交互越来越一再,对搜集的条件也越来越高,痴肥的内核赞同栈照料逐步成为搜集传输的瓶颈所正在。本文先容几种内核赞同栈的优化技能、闭联的使用场景以及本质的优化案例,供大师参考。

  汪翰林,网易数帆高级技能专家,云搜集数据面肩负人。近 20 年软件架构、策画和研发体会,曾就职于华三和华为,主办众个和平、视频监控、大数据和云估计等技能范围的产物策画和研爆发事。目前正在网易数帆静心于高功能搜集技能预研和产物化落地,指导团队落成 VPC 搜集 / 容器搜集 / 办事网格 / 存储 /P4 网闭等众个场景下的高功能搜集套件正在网易集团内部落地以及贸易化输出作事。

转载请注明出处:MT4平台下载
本文标题网址:Curve存储是网易自研开源的分布式存储服务编程网站洛谷