降低存储网络55% 延迟!阿里云存储论文入选计算机顶会

近日,计算机系统领域的国际顶级学术会议USENIX ATC 2023在美国波士顿市举行。凭借在规模化部署和应用模型上的创新,阿里云存储团队发表的技术论文《Deploying User-space TCP at Cloud Scale with LUNA》被顶会收录,这是继NSDI 21、SIGCOMM 22之后,阿里云又一篇被全球A类顶会收录的存储网络技术论文。

Deploying User-space TCP at Cloud Scale with LUNA.jpg

USENIX ATC全称为USENIX年度技术大会(USENIX Annul Technical Conference),是计算机系统结构方向最重要的国际会议之一,也是中国计算机学会CCF推荐的A类会议。自1992年以来,已成功举办30多届,吸引了来自全球的顶级名校及科技巨头投稿。本届顶会共收到353篇论文投稿,其中录用65篇,录用率约为18.41% ,极为严苛。

云计算时代下,基于内核TCP的数据中心网络已无法满足系统对性能和可用性的要求,在《Deploying User-space TCP at Cloud Scale with LUNA》论文中,全面介绍了阿里云是如何用自研技术解决这一难题的。

顶会现场.png

具体来说,围绕飞天云计算操作系统核心组件之一的盘古存储系统,阿里云存储团队自主研发了名为“Luna”的用户态网络。通过核间资源不共享、数据链路分层融合、全栈零拷贝,Luna极大提高了存储性能、降低存储延迟,可在超大规模的前提下承载不同的应用负载, 覆盖低延迟、高吞吐、高并发等多种复杂场景。

在相同负载下,Luna的延迟比内核TCP降低了55% 以上,吞吐提升了100% ,尤其在短连接场景下,每秒请求数提升了3.5倍。

Luna架构图.png

在多项创新技术的加持下,阿里云将云盘的IOPS提升了3倍,并不断推出满足用户不同需求的存储产品,包括性能和容量解耦、性能秒级弹性突发的云盘新规格ESSD AutoPL,以及延迟低至40微秒、IOPS高达300万的ESSD PL-X。

此外,全系列云盘规格还大幅减少了网络异常引入的I/O抖动,长尾I/O毛刺下降至毫秒级,提供更优的性能SLO,满足从数据库、在线交易系统到高性能计算等多种业务形态的需求。

过去十年,阿里云将计算的成本降低了80%,存储的成本降低了近90%,并持续提升云上用户体验。目前Luna网络技术已在阿里云上大规模应用,配合块存储、对象存储、文件存储、表格存储、备份容灾等云产品服务云上数百万客户,覆盖政企、互联网、金融、零售、制造、医疗等千行百业。

Deploying User-space TCP at Cloud Scale with Luna是今年阿里在USENIX ATC 2023中的一篇文章,介绍了它们的用户态协议栈

文章是概要的介绍了下他们之前的工作

要解决了还是100G网络下,内核协议栈性能比较差的问题,用户态协议栈减少中断,内存拷贝的开销能大幅度的提升系统的效率,但目前常见的用户态协议栈不太能满足他们的需求,例如像mtcp(好古老的开山用户态协议栈)要进行拷贝操作,IX单个应用独占了网卡,常见的用户态协议栈没能好好的利用内核态的鲁棒性等等,所以他们决定自己搞事情

另外文章也同时提到,像RDMA这种高性能的传输方法在一个数据中心内部还挺好用,但跨数据中心就很难部署,所以还是离不开TCP/IP

背景说明

作为背景,以及需求介绍,主要跟着他们的系统结构图来提

主要2点还是,RDMA不合适,同时旧的一些环境还需要内核tcp/ip,所以要兼容

luna目前是这样一个架构,使用了r2c结构,协议栈和APP在一个thread下处理,下层用网卡多队列分流,一部分流走内核态协议栈,即用户态和内核态同时支持

总之三个大的特征

1)r2c

2)零拷贝到传输

3)基于网卡分流的独特的流量分流

r2c

r2c有两套接口,inline-r2c通过事件驱动,一次处理一批包,另外对BSD接口,还有batch-r2c,这种模式下每个包都有自己的call back函数实现,一个一个包进行处理(猜测例如某些要立刻送往内核态的ARP请求包啥的)

2)零拷贝的内存

mbuf采用索引值,记录使用次数,猜测用的dpdk rte_mbuf的refcnt值,这样可以和驱动保持一致,驱动释放时内存不会释放

mbuf找物理地址的方法,先通过虚地址找所属哪一个2MB,然后看offset是啥,驱动用的物理地址就是2MB的物理地址+offset

只要用的是同一块物理地址,就能实现不拷贝的前提下,全程访问同一块内存。同时为了方式内存被以外释放,用索引值记录使用次数,多一个部分用就+1,释放就-1,只有释放一直减为0才能说这块内存被真正释放

3)流量分流

目前用的端口号+flow director分流

flow director可以通过配置,将固定源/目的IP,源/目的端口号,包类型(大至TCP/UDP,小到SYN包和普通包)分流到特定网卡上。

luna会将某非tcp流送入到内核态中处理,tcp流则按照端口送往特定的thread上,thread和网卡队列是绑定关系

luna保留了61440~65530这部分的端口号

flow director一个很大的问题是,网卡的流表项是有限的,记得intel 82599是4K条表项,目前阿里单个服务器按照论文上是160条流表,还算够用

性能测试

然后是一些测试,luna一定是比其他的协议栈在吞吐与延迟要更好一些

同时还有些分析,例如拷贝到底带来多少开销(99分位也只有25%左右延迟开销,似乎也不是非常大)

最后是一些在部署上的教训

例如要好用,API的编写要符合用户APP的原始逻辑

TCP协议栈要可定制,不同环境用需要特定的工作模型

要能快速恢复等等

总的来说算是用户态协议栈如何在工业界使用的一个说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】基础IO之文件操作(文件fd)——针对被打开的文件

系列文章目录 文章目录 系列文章目录前言浅谈文件的共识 一、 回忆c语言对文件操作的接口1.fopen接口和cwd路径2.fwrite接口和"w","a"方法3.fprintf接口和三个默认打开的输入输出流(文件) 二、过渡到系统,认识…

短视频矩阵营销系统工具如何助力商家企业获客?

1.批量剪辑技术研发 做的数学建模算法,数学阶乘的组合乘组形式,采用两套查重机制,一套针对素材进行查重抽帧素材,一套针对成片进行抽帧素材打分制度查重,自动滤重计入打分。 2.账号矩阵分发开发 多平台,…

React Hooks的使用

目录 1.React Hooks使用注意事项 1.useState Hook: 2.useEffect Hook: 3.其他常用Hooks: 2.使用React Hooks需要遵循 1.安装React: 2.导入所需的Hooks: 3.使用Hooks创建组件: 4.在应用中使用组件&…

el-popover触发元素位置改变后更新弹出框的偏移位置

el-popover的使用如下:包含一个触发元素和一个弹出框元素 但是如果触发元素位置发生变化时,如根据弹框选择内容,会显示或隐藏对应的元素,从而导致弹出框触发元素的位置的变化,此时触发元素位置变化了,但是…

[C++]关键字,类与对象等——喵喵要吃C嘎嘎2

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

MATLAB颜色索引表---持续更新中--各个平台都可使用

MATLAB颜色索引表—持续更新中–各个平台都可使用

XCTF-RSA-2:baigeiRSA2、 cr4-poor-rsa

baigeiRSA2 题目描述 import libnum from Crypto.Util import number from functools import reduce from secret import flagn 5 size 64 while True:ps [number.getPrime(size) for _ in range(n)]if len(set(ps)) n:breake 65537 n reduce(lambda x, y: x*y, ps) m …

CentOS、linux安装squid搭建正向代理,window11配置正向代理

1.CentOS安装配置squid 1.1.安装 yum install -y squid1.2.修改配置文件 在配置文件添加以下2行代码 acl localnet src 0.0.0.0/0.0.0.0 # add by lishuoboy http_access allow all # add by lishuoboy1.3.启动squid systemctl restart squid2.win11…

Jmeter只能做性能测试吗?

Jmeter除了可以性能测试,还能做接口测试 1、Jmeter和Fiddler,Postman有什么区别? Fiddler:虽然有接口测试功能,很少用来做接口测试。 一般用Fiddle来做抓包和异常测试,辅助接口测试。Postman: 是接口调试…

VScode + opencv + c++ + win配置教程

准备: 1、下载opencv 2、下载MinGw 3、 3、下载CMake 下载完解压放到一个文件夹里面,便于环境管理,文件夹我重命名了,解压出来文件名不一样正常 环境变量配置 C:\Users\wuxulong\cpp_env\MinGw\mingw64\bin C:\Users\wuxulon…

数字电路与逻辑设计 触发器

与非门构成的RS触发器 在这个中禁止RS 00 要记住s对应Q 或非门构成的RS触发器 注意这里的RS换了位置 且不允许RS 11 同步触发器 钟控RS触发器 钟控D触发器 cp 为 0 的时候不变 钟控JK触发器 00不变11改,JK不同随J摆 钟控T触发器 什么是空翻&am…

ios原生分享

什么是 ios 系统的原生分享呢,如下图所示 具体使用系统UIActivityViewController,完整代码如下: -(void)shareAny:(NSString *)text url:(NSString *)_url imagePath:(NSString *)_imagePath {NSLog("shareAny, text:%, url:%, imagePa…

413 (Payload Too Large) 2023最新版解决方法

文章目录 出现问题解决方法 出现问题 博主在用vue脚手架开发的时候,在上传文件的接口中碰到 这样一个错误,查遍所有csdn,都没有找到解决方法,通过一些方式,终于解决了。 解决方法 1.打开Vue项目的根目录。 2.在根目…

uniapp小程序刮刮乐抽奖

使用canvas画布画出刮刮乐要被刮的图片&#xff0c;使用移动清除画布。 当前代码封装为刮刮乐的组件&#xff1b; vue代码&#xff1a; <template><view class"page" v-if"merchantInfo.cdn_static"><image class"bg" :src&q…

基于计算机视觉的身份证识别系统 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-sen…

Scala集合操作

1 集合简介 Scala 中拥有多种集合类型&#xff0c;主要分为可变的和不可变的集合两大类&#xff1a; 可变集合&#xff1a; 可以被修改。即可以更改&#xff0c;添加&#xff0c;删除集合中的元素&#xff1b; 不可变集合类&#xff1a;不能被修改。对集合执行更改&#xff0c;…

CSDN规则详解(一)

文章目录 前言CSDN博客用户准则总则博客注册博客行为规则被投诉侵权用户处理规则附则 博客积分规则博客等级博客VIP文章说明后记 前言 CSDN是一个专业的技术社区&#xff0c;不仅可以分享自己的技术经验&#xff0c;还可以向其他行业专业人士学习。在CSDN上写出优秀的博客可以…

tcp/ip协议2实现的插图,数据结构2 (15 - 章)

(40) 40 十五1 插口层 结构socket,sysent (41) 41 十五2 插口层 实用函数与file结构描述汇总 (42) 42 十五3 插口层 函socket,socreate,pr_usrreq (43)

第23期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

适用于 Linux 的 WPF:Avalonia

许多年前&#xff0c;在 WPF 成为“Windows Presentation Foundation”并将 XAML 作为 .NET、Windows 等的 UI 标记语言引入之前&#xff0c;有一个代号为“Avalon”的项目。Avalon 是 WPF 的代号。XAML 现在无处不在&#xff0c;XAML 标准是一个词汇规范。 Avalonia 是一个开…