冯诺依曼架构的 IO 鸿沟,谁能来填补?

简介: 阿里云ECS弹性计算产品团队负责人王志坤与阿里云持久内存型实例产品经理唐湘华,揭秘阿里云对持久内存实例的设计理念与对存储未来方向的理解。

随着AI技术、数据分析等领域兴起,数据变得越来越重要了,数据处理往往需要用到大量的内存,数据量爆发式增长让各种内存密集型应用层出不穷,如Redis数据库、SAP HANA企业核心系统。在CSDN 2019、2020年度的开发者调查数据中,有四成的开发者在数据收集和消息处理中采用Redis,并且比例在逐年上升。

不过现阶段的困境是,底层基础设施的发展却未能完全匹配数据爆炸的需求

随着5G和网络性能的提升,计算存储网络三部分中的存储短板问题变得更加突出,内存的容量密度及速度与处理器的核数增长之间的差距越来越大,内存成为了短板。为了让机器得以处理更多的数据,部分企业只能扩大内存,而内存与CPU的配比有限,这又会造成CPU算力的浪费,昂贵的内存也会让企业面临更高的成本压力。

长久以来,虽然分级存储机制已经最大化平衡了各类存储介质的性能与成本要求,但业界对于新存储介质的探索一直未停歇。而在去年,阿里云推出了持久内存实例(简称re6p),更像是向冯诺依曼计算机体系中的终极梦幻存储方案迈进了一步。CSDN近日采访了阿里云ECS弹性计算产品团队负责人王志坤与阿里云持久内存型实例产品经理唐湘华,揭秘阿里云对持久内存实例的设计理念与对存储未来方向的理解。

冯诺依曼架构的难题:“内存墙”

eipykdtz.jpg

过去近一个世纪,冯诺依曼架构构成了计算机科学的基础。在冯诺伊曼架构中,中央处理器(CPU)通过指令从内存中读取数据,并完成计算,再将数据返回内存保存。冯诺依曼理论模型的一个很重要的假设,就是计算与存储的速度相当。但是一旦出现不匹配,慢的一方会成为瓶颈。

如今,虽然数据量在猛增,但底层技术未能均衡发展。内存的容量密度及速度与处理器的核数增长之间的差距越来越大,内存发展速度跟不上计算核数的增长,内存成为的短板,这就是“内存墙”。

为此,不少企业用提升内存的方式对应对该问题。阿里云弹性计算为了满足客户需求也推出了大内存实例,比如阿里云最近推出了6TB 大内存的实例。然而,如前所述,这又会造成CPU算力的浪费,昂贵的内存也会让企业面临更高的成本压力。这并非长久之计,也难以规模化,需要从底层技术角度解决“内存墙”这个行业难题。

王志坤回忆,自己跟存储颇有渊源,自己在读博士的时候刚好就研究这一领域。“IO在整个计算机也好,服务器也好,一直是比较慢速的设备……冯诺依曼架构为什么有一层缓存系统?就是为了解决我们计算、内存和存储之间的性能鸿沟。”其实早在十几年前,学术界就在致力于研究存储领域的介质,来填补这个鸿沟。学术界和工业界都在寻找一种新型的存储介质,能够同时具备内存级别的性能,和硬盘对数据存储的持久性。

可惜,不少尝试都局限在实验室阶段,缺乏大规模商业化的可能性。

打破“内存墙”困境

oixxyzum.jpg

直到这几年,阿里云发现了成熟的、可商用的产品——英特尔傲腾持久内存。该产品重新定义了传统的两级存储架构,性能和形态已经接近内存,而且同时也具备了存储的持久特性。傲腾持久内存与内存的IO性能几乎在相同数量级,但成本大大降低,几乎是为打破内存困境而生。

不过,要发挥这款产品的真正威力,需要非常高的技术能力,仅有少数技术领先的大型企业可以运用得当。阿里巴巴就是其中一家。阿里云启动了研发,希望能将这种能力产品化,让更多的企业低门槛地享受到技术红利。

最终,阿里云基于英特尔傲腾持久内存,赋予了其可为客户提供直接IaaS级云服务的能力,将内存非易失性这种颠覆性的存储架构特性带到了云上。阿里云持久内存实例产品经理唐湘华介绍,阿里云研发推出的持久内存实例提高了单条内存的容量密度,扩大了单颗CPU对应的内存容量,提高了CPU的利用率。持久内存实例应用会帮助用户打破“内存墙”藩篱,获得更高性能的同时,有效降低整体IT基础设施拥有成本(TCO)

不过,任何IT新的技术从推出到企业级市场落地,企业用户只会用脚投票,拷问新技术与新产品的性价比。所以持久内存在初始期,必定是用来解决IT存储中的短板、最痛的那个问题。

关于持久内存实例的应用场景,阿里云从Redis缓存型数据库、SAP HANA这类典型的内存密集型应用入手,因为这些应用能够最直接地体现介质升级所带来的性能红利。不过唐湘华表示,阿里云团队正在更深入分析持久内存实例,例如在消息队列MQ的应用场景,可以大幅度地降低消息的长尾延时和业务抖动。除了作为内存的低成本替代品之外,傲腾持久内存也可以作为SSD来使用,在游戏前端、直播前端这些高负载、高并发的IO密集型应用中,持久内存实例想象空间将更加巨大,这也会是阿里云弹性计算的重点发力方向。

持久内存实例,从技术到产品

hailuo_279521189_RF_线上全媒体用途.jpg

傲腾持久内存听起来具有如此巨大的优势,但所有新技术在早期较高的技术研发门槛,是让用户望而却步的主要原因。

从全球领域来看,很多传统服务器厂商也在推出持久内存产品,客户购置回来却很难直接使用。除了技术门槛,新介质与已有IT资源的兼容也是需要解决的问题。而云端的优势是用户可以随时随地享受到弹性计算的产品迭代、享受到最新的存储介质。同时,云厂商的多种付费模式,也会降低用户使用门槛。通过云厂商,用户可以非常低的门槛使用持久内存,应用于自身的业务,而这几乎是所有企业级生意的最佳切入模式。

所以当业界还在讨论持久内存与DRAM性能对比、持久内存适用的场景和用例时,阿里云已经正式推出了基于英特尔傲腾持久内存的产品。不过,全球知名的云计算厂商有很多,为什么是阿里云,成为全球率先推出商业化的持久内存实例的云服务商?这是更有趣的问题。

作为推崇技术普惠宗旨的云计算厂商,阿里云既是最贴近用户一方需求的技术资源提供者,也是将高深技术规模化商用、降低技术门槛的变革者。

王志坤认为,阿里云的体量与规模发展到一定阶段,在服务客户过程中看到了客户的诉求,原来的大内存实例十分昂贵,无疑是不符合云计算的普惠原则。不过,在云端将持久内存规模化提供给用户,对技术能力的要求是非常高的。

纵观阿里云的架构,除了有自主研发“神龙”云服务器架构之外,还有“飞天”云操作系统、“盘古”存储平台、“洛神”网络平台、PolarDB云原生数据库等等,构成了统一的云平台,让阿里云具备了从虚拟化层到操作系统内核层全链路的整合与调优能力。这些能力最终使得阿里云弹性技术团队对持久内存的产品化研发变得更加敏捷。

“阿里云所有的弹性计算产品全部是基于神龙架构的。我们所有的虚拟化工作,得到了极大简化,我们整个飞天云操作系统底层的很多工作,都是由我们神龙芯片来完成的。这也大大提升了引入AEP这种新型存储介质对于整个产品迭代演进的速度。”王志坤表示。

阿里云全面融合了英特尔持久性内存的产品特性,在Redis数据库中,阿里云从虚拟化层到操作系统内核层,全链路进行了优化加速。

在应用层的优化中,Redis缓存型数据库,是典型的KV数据结构,在持久内存和普通内存同时存在的系统中,尽量将Redis的索引数据放到DRAM(动态随机存取存储器,即原来的内存)而将用户数据放到持久内存中。动态阈值管理数据分布,既可以保证较小的索引数据尽量放到内存中,又可以保证普通内存和持久内存符合一定的容量比列。同时对于一些生命周期较短并频繁访问的数据,阿里云会通过优化将其放置到普通内存中。利用此方法阿里云持久内存实例的性能可以非常接近于DRAM。

而在内核层面,阿里云持久内存实例搭载了阿里云官网操作系统Aliyun Linux,针对Redis应用,阿里云从内存锁操作、进程fork流、内存合并等Redis应用数据流处理及管控关键技术节点上,进行了针对性的优化设计。让运行在持久性内存实例上的Redis数据库读写性能相对于运行在开源Linux操作系统上的性能提升20%以上。

附:阿里云持久内存实例的性能与收益:

  • 性能大幅提升:在Redis等内存型数据应用中,经过阿里云全链路优化,性能相对于运行在开源Linux操作系统上提升20%以上;

超大内存配比:提供1:20超大内存容量配比,更低的价格,更大的内存容量;
断电数据不丢:机器断电数据不丢失,重载速度最快提升高达12倍以上。

未来:存储介质界限模糊,走向软硬一体

hailuo_664284316_RF.jpg

就在刚刚过去的2020年底,英特尔的傲腾持久内存已经发布至第二代了。从磁带、磁盘、闪存再到持久内存,存储介质的性能与成本在持续向前迭代演进。每一代存储介质均是逐步退出舞台中央,去承担更低性能的存储归档数据的职责。

阿里云两位专家认为,未来无论介质抑或是产品层面,内存和传统存储的界限在不断趋于模糊,各类存储介质将是长期并存的状态。同时,随着IOT、5G的兴起,数据的量级将继续增大,人们对于数据的访问、检索、处理的要求将越来越高,IO密集型应用也会促使超高性能的存储设备更加广泛地被使用

从更广阔的角度看,IT系统从硬件主导,进入了云计算的软件定义时代,但在阿里云专家看来,未来软件与硬件不再是IT的两个对立面,阿里云从神龙架构和芯片开始,已经走向软硬一体的下一个时代。软硬一体化将让阿里云作为一个整体去接纳新的介质、新的技术,提升迭代速度。

5G、人工智能的普及,数据量爆发式增长,让数据的流动与应用变得更加普遍,对海量数据的快速处理将是一切人工智能创新的基础。未来,阿里云在AI、大数据等方向对软硬一体化、芯片化的探索,仍将不停向前。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
存储 缓存 Linux
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
【看表情包学Linux】冯诺依曼架构 | 理解操作系统 | 基于 Pintos 实现新的用户级程序的系统调用
113 1
|
网络协议 Java 关系型数据库
MyCat - 架构剖析 - 网络 IO 架构 | 学习笔记
快速学习 MyCat - 架构剖析 - 网络 IO 架构
MyCat - 架构剖析 - 网络 IO 架构 | 学习笔记
|
网络协议 Unix Windows
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
5月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
3月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
4月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
49 2
|
4月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。

热门文章

最新文章