非易失性内存在阿里生产环境的首次应用:Tair NVM最佳实践总结

  

  本文介绍了非易失性内存在阿里巴巴集团生产环境的首次应用:线上运行的情况,使用NVM遇到的问题和优化的过程,最后,总结性地给出了基于NVM构建缓存服务的设计要点,希望这些实践总结能对大家的工作有所启发。   

  

  非易失性内存在阿里生产环境的首次应用:Tair NVM最佳实践总结”>
  </p>
  <p>
  <强>
  简介
  </强>
  </p>
  <p>
  Tair MDB是阿里巴巴生态系统内广泛使用的缓存服务,它采用非易失性内存非易失性内存(NVM)作为DRAM的补充,辅助DRAM作为后端存储介质,从天猫618购物节开始在生产环境上线灰度,经历了2次全链路压测,至今运行稳定。在使用NVM的过程中,Tair MDB遇到了写不均衡,锁开销等问题,经过优化之后取得了非常显著的效果。
  </p>
  <p>
  通过这一系列优化工作和生产环境的实践,Tair工程团队总结出了一些在非易失性内存(NVM)/持久记忆(PMEM)上实现缓存服务的设计准则,相信这些准则对其它有意愿使用非易失性内存来进行优化的产品会非常有指导意义。
  </p>
  <p>
  <强>
  背景
  </强>
  </p>
  <p>
  Tair Mdb主要服务于缓存场景,在阿里巴巴集团内部有着大量的部署和使用。随着用户态网络协议栈,无锁数据结构等特性的引入,单机每秒极限能力已经达到了1000 w +的级别.Tair Mdb所有的数据都是存储在内存中,随着单机每秒极限能力的上升,内存容量逐渐成为限制集群规模的主要因素。
  </p>
  <p>
  NVM产品单根DIMM的容量相对于DRAM DIMM要大很多,价格相对于DRAM更有优势,将Tair Mdb的数据存放在NVM上,是突破单机内存容量的限制的一个方向。
  </p>
  <p>
  <强>
  生产环境
  </强>
  </p>
  <p>
  <强>
  效果
  </强>
  </p>
  <p>
  端到端,读写平均延时和相同软件版本下使用DRAM的节点数据持平;服务行为表现正常。生产环境的压力并没有达到Tair MDB节点的极限,后面的章节会介绍压测时我们遇到的问题和解决方案。
  </p>
  <p>
  成本
  </p>
  <p>
  前面提到了单根NVM DIMM最大容量比DRAM DIMM要高,相同容量的价格会比DRAM便宜.Tair MDB容量型的集群,如果采用NVM来补充内存容量的不足,规模可以大幅减少。算上机器价格,电费,机架等因素,成本大约可以降低30% ~ 50%左右。
  </p>
  <p>
  <强>
  原理
  </强>
  </p>
  <p>
  <强>
  使用方式
  </强>
  </p>
  <p>
  Tair MDB使用NVM设备的方式,是把NVM以块设备的形式使用Pmem-Aware文件系统挂载(DAX挂载模式)。分配NVM空间对应的操作是在对应的文件系统路径上创建并打开文件,使用posix_fallocate分配空间。
  </p>
  <p>
  <img src=   <李>   

  缓存元,存放了一些最大分片数之类的元数据信息,还有板经理的索引信息。   

非易失性内存在阿里生产环境的首次应用:Tair NVM最佳实践总结