主页 > 国内 > 正文

美团使用第二代英特尔至强可扩展处理器 加速Cellar存储性能

更新时间:2020-12-17点击数:文字大小:

综述

互联网推动着商业社会的快速变革,对于美团等超大型互联网服务提供商而言,其数据库系统需要对仍在飞速增长的海量业务数据进行快速处理。这些核心数据库往往属于典型的性能密集型应用,内存的容量与性能在很大程度上影响着上层业务的处理效率以及可用性。此外,庞大的部署规模也使得内存的总体拥有成本TCO变得相当敏感。

为了应对亿级用户给数据库系统带来的性能压力,支撑业务创新,为用户提供高速稳定的互联网服务,美团将 Cellar存储系统服务器中的处理器替换为第二代英特尔至强可扩展处理器,同时结合美团面向 Cellar存储系统进行的软件优化,最终将数据库性能提升 20,帮助美团进一步优化了数据库系统,可有效支撑未来业务的增长需求。

挑战:如何解决 Cellar存储面临的 PAUSE指令问题

作为中国领先的生活服务电子商务平台,美团服务涵盖餐饮、外卖、打车、共享单车、酒店旅游、电影、休闲娱乐等200多个品类,业务量实现了快速发展。2019年,美团年度交易用户总数达4.5亿,平台活跃商户总数达620万,用户平均交易笔数达到 27.4笔。近年来,美团一直使用分布式 KV存储系统Cellar作为最重要的在线存储服务之一,承载其海量的互联网业务。

Cellar是一个在 Tair基础上研发的NoSQL存储,在底层支持Leverldb、rockdb、mdb和 rdb等引擎,各节点直接通过raft进行复制。Cellar支持异地容灾、无损数据迁移,元信息存在单独节点,并且通过添加observer的形式实现路由查询能力扩展、客户与中间节点分离。目前,Cellar已经承载了美团在线服务每天万亿级的请求量,并保持着高达 99.999的服务可用性。

图1:美团 Cellar存储架构

互联网服务的典型特征是流量大,美团发现,在业务高峰期的时候,Cellar存储系统常常会遇到异常的性能降低问题。研究之后发现,其原因在于英特尔处理器中使用的 PAUSE指令:不同架构的英特尔至强处理器有着不同的 PAUSE指令时长。其中,第二代英特尔至强可扩展处理器CascadeLake架构的指令时长为 44 cycle,而上一代的英特尔至强可扩展处理器Skylake架构 PAUSE指令时长为 144 cycle。业务应用程序设计一般基于Broadwell架构,频繁调用该指令的应用程序运行在Skylake上时,就会出现负载相对过高的现象。

这是因为,这些程序的内部自旋,就是通过固定次数的 PAUSE循环实现,PAUSE指令周期增加时,执行自旋的时间也会增加,对于系统整体的吞吐量会造成影响。如果程序中使用固定次数的PAUSE循环来实现一段时间的延迟,以此阻塞程序执行,可能引发非预期的延迟,这突出体现在对于 Spinlock的影响。

Spinlock又称自旋锁,是为实现保护共享资源而提出的一种锁机制。当执行spin-wait循环的时候,处理器会因为在退出循环的时候检测到内存访问顺序冲突而导致严重的性能损失,而 PAUSE指令主要用于提示处理器目前处于spin-wait中。如上所述,这些程序的内部自旋,是通过固定次数的PAUSE循环实现,在 PAUSE指令时长增加之后,可能会带来执行自旋的时间延长。

此外,普通 Spinlock在处理器多核心的情况下,同一时间只能有一个 CPU线程获取变量并自旋,而缓存一致性协议为了保证数据的正确,会对所有 CPU线程的状态和数据进行同步、失效等操作,导致性能下降。

除了 Spinlock之外,PAUSE指令还会对于内存分配带来影响。在内存分配过程中,锁会造成线程等待,对性能影响巨大。

在 Cellar的业务实践中,美团发现,当负载较高时,与Broadwell架构的英特尔立处理器相比,Skylake的英特尔处理器负载高15左右。通过vTune分析和源码分析,原因随之浮现:Cellar服务在高负载时会大量调用Spinlock,PAUSE指令周期的增加导致了CPU负载的增高。

虽然通过软件优化的方式有助于解决 PAUSE指令所带来的性能下降问题,但是如果在新部署的存储服务器中直接选择了针对此指令进行优化的新型处理器,则不仅能够降低问题影响,还有助于充分发挥新型号处理器在性能、创新功能等方面的优势。在此背景下,美团与英特尔密切合作,对于最新的硬件产品与技术进行测试、验证、部署,并充分优化存储软件,以最大化发挥硬件性能。

解决方案:基于第二代英特尔至强可扩展处理器的 Cellar存储优化

为了在提升 Cellar存储系统性能的同时控制 TCO的增长,美团与英特尔展开了深度合作,将服务器中的处理器替换为二代英特尔至强金牌处理器5218,并在性能验证中将Cellar存储系统的工作负载迁移到使用该处理器构建的平台上。

针对PAUSE指令对 Cellar造成的影响,美团采用了两种方法:在软件层面,美团动态调整Cellar对Spinlock的调用次数,在应用中将循环次数降低,从而控制 PAUSE指令执行的时长。

此外,美团还将替换libc的内存分配为Jemalloc,以减少锁的使用,优化 Cellar存储系统实际业务。JeMalloc是一款内存分配器,与其它内存分配器相比,它最大的优势在于多线程情况下的高性能以及内存碎片的减少。为避免线程竞争锁的发生,JeMalloc使用了线程变量,内存分配将在线程自带的内存管理器中完成,无需和其它线程进行竞争。此外,JeMalloc中的每个线程都通过线程号的映射对应到一个数组元素中,可降低多个线程竞争一个元素的机率。由于竞争锁发生机率的降低,PAUSE指令时长的增长对于内存管理的影响也能得到相应的控制。因此,通过将应用中的内存分配器更改为 JeMalloc,有助于缓解 PAUSE指令周期增加所带来的吞吐量降低的问题。

在硬件层面,美团将部分存储服务器中的处理器升级为采用了 Cascade Lake架构的二代英特尔至强可扩展处理器,二代英特尔至强可扩展处理器将PAUSE指令时长从 144 cycle降低为 44 cycle,从而彻底消除了PAUSE指令变化带来的影响。

此外,二代英特尔至强可扩展处理器还带来了额外的性能提升。该处理器专为数据中心现代化革新而设计,能够提高各种基础设施、企业应用及技术计算应用的运行效率,进而改善总体拥有成本TCO,提升用户生产力。它拥有更高的每核性能,能够在计算、存储和网络应用中,为计算密集型工作负载提供高性能和可扩展性。得益于英特尔超级通道互联英特尔 UPI、英特尔Infrastructure Management技术英特尔IMT、英特尔高级矢量扩展指令集512英特尔 AVX-512等领先功能,它可满足严苛的 I/O密集型工作负载的需求,能够帮助企业打造出性能更强的敏捷服务和突破性功能。

效果:Cellar存储系统性能提升20

为了验证在处理器更换为二代英特尔至强可扩展处理器之后,Cellar存储系统的性能提升,美团通过测试进行了验证测试配置如表2所示

表2

数据显示,与基于英特尔至强E系列处理器的 Cellar存储系统相比,基于二代英特尔至强可扩展处理器的 Cellar存储系统提升了 20左右。

从成本效益来看,二代英特尔至强可扩展处理器的应用通过显著的性能提升,节约了在存储节点方面的投入,总体拥有成本能够得到更好的控制,也更具面向未来工作负载的扩展性。

合作伙伴表示:“无论是卓越的硬件特性,还是在 PAUSE指令等方面的优化,二代英特尔至强可扩展处理器都对 Cellar存储系统性能的提升起到了至关重要的作用。通过双方的密切合作,我们不仅验证了二代英特尔至强可扩展处理器在存储系统性能优化过程中的关键作用,也为之后的进一步优化奠定了坚实基础。”

图3:性能优化对比

展望:美团与英特尔加速互联网基础设施创新

在发展过程中,美团正致力于去探索Cellar等具备突破性的存储解决方案,并实践新的运维方式,以满足业务的快速增长需求。美团计还将继续携手英特尔,充分利用软硬件技术的最新发展成果,打造高性能数据库解决方案,为内外部用户提供更高效、更可靠的服务。

除了数据库之外,美团与英特尔还在广泛的领域进行了合作,利用二代英特尔至强可扩展处理器等产品所带来的革命性技术能力,构建高性能的基础设施,在不断增长的核心互联网业务场景以及关键应用和服务中发挥越来越重要的作用,这也有助于美团为用户提供更高效、更多元化的应用体验。


关于我们 | 联系我们 | 招聘信息 | 版权申明 | 广告服务 | 联系我们 |

免责声明:本站为非营利性网站,部分图片或文章来源于互联网如果无意中对您的权益构成了侵犯,我们深表歉意,请您联系,我们立即删除。