企业类应用与桌面类应用的一个显著区别,就是它们在设计时可以充分利用超大内存,会主动对内存和硬盘的使用进行规划以及性能优化,都做得很专业。然而,在这个数据暴涨的时代,一些大数据类应用对内存的需求已经超出了可接受的成本范围,此时不得不使用NVMe硬盘来承载大量的从主存中腾挪出来的数据。
对于某些强烈依赖内存的系统,比如内存数据库,内存计算系统而言,SDRAM到NVMe盘的性能落差甚至都觉得太大,而导致最终性能不令人满意。所以对于这类应用,一个位于SDRAM和NVMe盘之间的存储器层级,就十分必要。英特尔®傲腾™持久内存恰恰填补了这个空缺。
针对大数据激增企业端的存储压力,英特尔推出了两大数据中心产品:英特尔®傲腾™ 持久内存和英特尔®傲腾™固态盘。虽然英特尔®傲腾™持久内存 和英特尔®傲腾™固态盘都使用了相同的英特尔®傲腾™ 内存介质,但它们是完全不同的产品。英特尔®傲腾™ 持久内存容量大,性能接近于传统的DRAM内存,但价格更亲民。位于 DIMM 封装中,在 DRAM 总线上运行,可以作为易失性内存或持久内存使用。而英特尔®傲腾™固态盘严格用于标准 NAND 封装模型(AIC、M.2、U.2、EDSFF 等)中的快速存储,并采用 NVMe* 协议驻留于 PCIe 总线上,作为存储设备始终保持数据持久,可以让更多存储中的数据更加靠近CPU。
想要理解英特尔®傲腾™ 持久内存的优越性,不妨说说传统的内存和存储架构。在传统内存和存储架构中,是让 DRAM 内存直接访问存储设备。这些存储设备可以是以往的块存储设备,也可能是 NAND 固态盘。然而,内存和存储设备之间,在数据读取速度和容量上难以匹配。DRAM 的数据读取速度快,缺点是太贵且容量密度有限,因此服务器总内存容量受限,且DRAM内存上的数据无法持久保存;存储设备成本低、容量大,数据可持久保存,缺点是数据的读取速度慢。基于此,通过在 DRAM 内存和块存储设备之间加入大容量 SCM 层——英特尔®傲腾™持久内存,极大地提升了内存存储,保证最常用的数据以最高性能进行访问,以高性价比提供了出色性能。
说说离我们生活较近的案例,在我们日常生活中,很容易发现自己的使用习惯、消费习惯、生活喜好很容易被大数据抓取,用于用户画像、商品推荐等业务,这些业务的背后都可能有Redis存储的支持。作为内存数据库,Redis 依赖高内存容量,这样才能惬意地享受比固态盘更高的数据吞吐带宽,以及更低的数据处理延时。
英特尔®傲腾™持久内存可在每个CPU的内存总线上提供高达 3TB 的内存容量,同时性能接近 DRAM。与第二代英特尔®至强®可扩展处理器搭配使用,提供比前几代处理器更出色的单位内核性能和内存容量,这些因素均有利于 Redis 的部署,并且体现在具体数据中。
来看数据测试,两套配置几乎完全相同的服务器系统,区别在于一台使用英特尔®傲腾™持久内存,另一台使用传统内存,测试下来,两系统提供的性能和虚拟机密度类似,延迟均小于 1 毫秒。但采用英特尔®傲腾™持久内存的系统,每个虚机可以降低 20% 成本,同时还能满足所有虚拟机 SLA 要求。这是针对单机同内存容量的状况的成本分析。
在 Redis 服务器集群中使用英特尔®傲腾™持久内存,成本可以降低高达 40%,而且由于单台服务器搭载内存更多,因此服务器节点更少,无论是基础设施的运维,还是数据的管理,都更加方便。
英特尔®傲腾™持久内存加速阿里Mars系统
在一次测试中,阿里的Mars分布式内存计算框架利用英特尔®傲腾™持久内存,取得了很不错的性能加成。如下图所示,当需要处理的数据集超过了主存承载能力之后,溢出后的数据被放置在傲腾™存储器而不是之前的NVMe硬盘中,随着数据量溢出主存,傲腾™方案的性能会有显著提升。
Mars是一个基于张量的统一分布式计算框架,突破了现有大数据计算引擎以关系代数为主的计算模型,将分布式技术引入科学计算和数值计算领域,极大地扩展了科学计算的计算规模和效率。目前Mars已经实现了70%的Numpy常见接口,用户只需要通过import Mars就可以将已经编写好的基于Numpy的代码移植到Mars中。
Mars会将张量自动在各个维度上切分成小的chunk来分布式处理从而提升并行性,以便于将小颗粒任务派发到GPU,或者网络远端的其它集群节点上并行计算。
举例来讲,对于张量矩阵乘法,Mars会生成如下图所示的chunk级别执行图。在执行过程中,会有大量的中间过程,这些过程生成大量的数据会占用宝贵的主存资源。
每个chunk执行完毕之后,结果数据会被放置在shared memory中,当share memory中数据过多时,Mars会启动spill溢出控制机制,将溢出的数据转移到下层更大容量的存储器中。
经过评估,阿里发现使用英特尔®傲腾™持久内存来作为主存的下一层存储器,无论是在性能上还是TCO上,相比直接用NVMe盘作为下层,都非常符合Mars系统的预期。
英特尔®傲腾™持久内存提供128GB、256GB和512GB容量,远高于目前最大容量仅限于每DIMM 128GB的可用SDRAM DIMM,而且与传统DRAM DIMM相比,英特尔®傲腾™持久内存的每GB成本更低。英特尔®傲腾™持久内存通过内存总线直接连接到处理器,在基于App Direct(简称AD)模式下,应用程序可以完全绕过操作系统,不需要设备驱动程序、系统调用、中断和上下文切换,就可以从用户空间直接访问英特尔®傲腾™持久内存上的数据。下图所示为采用NVMe闪存盘、NVMe傲腾™盘和英特尔®傲腾™持久内存的访问延迟对比。
总体而言,使用英特尔®傲腾™持久内存,解决了Mars科学计算中因数据溢出传到硬盘,导致I/O开销增大,计算性能降低的问题。通过测试,验证了在TCO成本相当的情况下,使用英特尔®傲腾™持久内存能够有效提升Mars科学计算性能。
傲腾™固态盘加速Ceph分布式存储系统
Ceph是最常见的块和对象存储后端解决方案。作为一款开源的分布式存储软件解决方案,它在分布式、可靠性、易扩展、并发性能的优势越来越被行业作为专业存储高性能解决方案。随着云服务以及产业互联网升级对存储性能要求越来越高,英特尔®傲腾™固态盘可以在IOPS和延迟方面助力客户产业升级,并且其高寿命的优势帮助企业降低维护成本。
在 Ceph分布式存储方案中,使用英特尔®傲腾™固态盘作为缓存盘为RocksDB、 WAL、OSD缓存提速,低延迟加速负载间的传输响应,并配合英特尔®CAS缓存加速软件进一步增强系统性能和可靠度。
在以成本和性能为导向的前提下,如何以较低成本实现最大性能的发挥?针对Ceph架构中的热数据和温数据进行优化,英特尔®傲腾™固态盘+英特尔®QLC 3DNAND 方案(O+Q方案),通过傲腾™解决小的随机I/O,QLC来解决容量问题,实现性能瓶颈的突破。
综上所述,傲腾™对于企业级应用具有非常明显的加速效果,作为下一代固态介质的排头兵,Intel傲腾™近几年逐步扩大生态,在企业级应用加速场景先显现出了优良的效果。