基于英特尔® 傲腾™ 持久内存100系列的Docker方案实践

摘要

  英特尔® 傲腾™ 持久内存是Intel在2019年发布的一款革命性的产品,英特尔® 傲腾™ 持久内存是一种全新的内存类型,其架构设计旨在从数据中心中汲取更多价值,重构数据中心内存/存储层次结构。不同于传统的DRAM,英特尔® 傲腾™ 持久内存集大容量、经济性和持久性于一身,能够支持数据中心多个应用场景。浪潮基于英特尔® 傲腾™ 持久内存做了大量的应用场景解决方案,覆盖大数据分析、数据库、云与虚拟化、分布式存储等应用场景。为了帮助用户通过更加灵活的架构来实现创新型的应用,助力企业实现性能突破,浪潮发布了基于英特尔® 傲腾™ 持久内存技术的Docker容器应用方案。

背景介绍

  Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。Redis是一个开源的基于内存也可持久化的日志型、键值数据库,鉴于其优秀的性能而应用广泛。云计算时代的到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维定势。Docker 与Redis的结合使用,其好处不言而喻。在基于Docker部署的Redis应用中,为了帮助企业化解因为数据快速增长所出现的应用瓶颈,浪潮进行了基于英特尔® 傲腾技术的Docker +Redis性能优化实践,通过将英特尔® 傲腾™ 持久内存作为Docker实例中Redis的内存,相比于传统的DRAM内存方案,不仅可以大幅提升内存容量或容器密度,而且实现了更高的成本效益。

  挑战:化解Docker+Redis存在的性能和容量瓶颈

  Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。将Redis部署在Docker中更是方便了Redis在云上的使用。虽然基于Docker部署应用被广泛应用,但由于应用应对的是超大规模数据集的存储需求,因此数据吞吐性能和延时性能的重要性不言而喻。要提升Docker + Redis的性能,可以从优化内存规划、参数调优等多个方面进行。但是,要想在控制总体拥有成本(TCO)的前提下,对Docker + Redis内存进行最优规划并不是一件容易的事情。首先,Redis的可用内存由Docker分配的内存容量定义,而Docker的内存容量受到存储节点的内存插槽数量、支持内存容量等的极大限制,在内存容量增长到一定程度后就会出现瓶颈。如果要进一步对于内存容量进行扩展,企业在传统上一般会采取两种方法,第一种是使用大容量的内存,第二种方法是扩展集群规模。

  但是,这两种方法都不具备良好的成本效益。对于前者来说,虽然很多Docker + Redis存储节点支持的单条内存容量理论上限是128GB,但是这种大容量的内存普遍处于验证阶段,可获得性不足,而且价格的提升远高于其容量的提升,会带来很高的成本压力;对于后者来说,扩展Docker + Redis存储节点固然能够提升内存池的容量,但是这些存储节点的采购、空间占用、运维、供电无疑也会显著抬升成本。

  因此,如何打破现有存储架构的限制,寻找一种创新的线上Docker + Redis内存规划方法,在显著提升Docker + Redis性能的同时有效控制成本,也就显得至关重要。

解决方案介绍

  为了解决此问题,浪潮工程师团队对于基于Docker部署的Redis应用行了分析,为了减轻内存资源的压力,持久性内存(PM)被称为存储类内存(SCM),在业界出现,它不仅可以为Docker + Redis提供大容量内存,摆脱单节点内存大小的限制,同时还能有效降低成本。

  要将存储介质从内存更换为高性能固态盘,一个重要的条件就是固态盘在IOPS、时延方面与内存不能有太大的差距。在方案验证的过程中浪潮发现,英特尔® 傲腾™ 持久内存位于内存和存储介质之间(如图1),能够填补两者间的性能和时延差距,对存储层次模型进行重新划分和定义。因此,浪潮决定使用英特尔® 傲腾™ 持久内存作为Docker + Redis内存,并进行性能、成本等方面的验证。

  图1

  图1

  英特尔® 傲腾™ 持久内存是一种全新的内存类型,不同于传统的DRAM,其集大容量、经济性和持久性于一身,读写带宽比NVME设备高数倍,并大幅降低延时问题。由于写入方式不同,英特尔® 傲腾™ 持久内存也比Flash NAND更耐用,并通过高达512GB的单模块容量,实现了远超传统DRAM的系统内存容量。其从根本上改变了数据中心的弹性,将内存数据库重启时间从以前的几天、几小时缩短到现在的几分钟甚至几秒钟,并提供经济实惠的内存空间,将系统内存容量扩展到前所未有的水平。

  英特尔® 傲腾™ 持久内存拥有两种特殊的运行模式——App Direct 模式和内存模式。具体来看,采用App Direct 模式,经过专门调试的应用程序可以从产品固有的持久性中充分获取价值,同时获得更大的容量;在内存模式下,在受支持的操作系统或虚拟环境中运行的应用程序可将该产品用于易失性存储,在无需重写软件的情况下,有效利用高达512GB的内存模块带来的附加系统容量,在大型内存池中获得新的洞察。

  在实际的方案部署中,浪潮使用了英特尔® 至强® 第二代可扩展处理器与英特尔® 傲腾™ 持久内存组成强强组合,代替Docker + Redis中DRAM缓存,改善Docker + Redis内存容量,以支撑云、数据库、高性能计算、内存分析和内容分发网络等关键数据工作负载。

  方案验证:英特尔® 傲腾™ 内存性能和成本优势显著

  为了测试英特尔® 傲腾™ 持久内存作为Docker + Redis缓存的性能,浪潮决定分别测试基于英特尔® 傲腾™ 持久内存/ DRAM内存两种配置下的性能对比。

  在实际测试中,浪潮将英特尔® 傲腾™ 持久内存设置为内存模式运行,并依据以下硬件配置来搭建了测试方案(如表1)。测试使用1台服务器部署搭载Redis应用的Docker实例。

  表1

  表1

  在至关重要的内存方面,英特尔® 傲腾™ 持久内存方案中每个数据节点使用192GB(12*16GB)的DRAM,并使用1.5TB(12*128GB)的英特尔® 傲腾™ 持久内存作为Docker + Redis的内存设备;DRAM方案中使用768GB(24*32GB)内存作为Docker + Redis内存设备。

  本次进行了两种场景测试,场景一:在两个方案中分别使用内存容量的80%,进行多种读写比例性能测试。场景二:测试在两个方案内存用尽情况下,可容纳的容器个数。

  从场景一结果可以看出(吞吐量结果如图2,平均延时结果如图3)。英特尔® 傲腾™ 持久内存方案可以容纳远超于DRAM方案的数据容量,同时性能表现出色。在吞吐量方面两种方案性能相当,英特尔® 傲腾™ 持久内存方案吞吐量可达DRAM方案90%以上。在平均延时方面,两种方案相差不大,都能保持在1ms之内。

  图2

  图2

  图3

  图3

  从场景二结果可以看出(容器实例个数如图4,吞吐量结果如图5)。英特尔® 傲腾™ 持久内存方案可容纳98个docker实例,DRAM方案可容纳50个docker实例,英特尔® 傲腾™ 持久内存方案约为DRAM方案的2倍,同时性能表现出色。在内存容量接近用尽时,英特尔® 傲腾™ 持久内存方案可以达到DRAM方案性能90%左右,特别是读操作比较多时,性能表现为DRAM方案的95%以上。

  图4

  图4

  图5

  图5

客户收益

  效果:大幅改善基于Docker部署应用的性能与成本表现

  从测试结果可以看出,通过将基于Docker部署的Redis应用缓存由传统的DRAM内存替换为英特尔® 傲腾™ 持久内存,可以在保证性能的情况下,成倍提升数据容量或者容器数量。之所以会有如此显著的提升效果,很大程度上是因为英特尔® 傲腾™ 持久内存支持的总容量远高于 DRAM 内存。

  尤为重要的是,英特尔® 傲腾™ 持久内存方案比DRAM方案内存池容量可以增加1.25倍,容器个数可以增加1倍,换言之,如果企业在需要保证性能的情况下想增大数据容量或容器个数,那么使用英特尔® 傲腾™ 持久内存将带来极大的成本节约,这在当前企业数据爆发式增长、在大数据方面的投入逐渐增大的背景下,显然具有重要意义。


线




×
联系我们
ERP、企业软件购买热线
400-018-7700
云服务产品销售热线
400-607-6657
集团客户投诉热线
400-691-8711
智能终端产品客服热线
400-658-6111