乐趣区

关于c++:关于持久内存你了解多少

你说不定在不同的渠道曾经据说过一些相似的让人一头雾水的技术名词,比方非易失性存储,长久内存,傲腾长久内存,甚至英文的名词 Optane SSD, Optane persistent memory, PMem, DCPMM, AEP 等等…… 这些名词到底是什么?有什么分割?有什么用途?本文从科普的角度,帮你答复这些问题。心愿你看了本文当前,不论你是程序员还是相干行业从业者,至多都能明确什么是长久内存,它到底能施展什么样的作用。


长久内存到底是什么?
首先答复一下凌乱的命名问题,咱们临时不纠结于这些名字之间的演变关系了,简略来说能够认为大部分都是指的同一个货色(当然不是严格正确)。目前 Intel 中文官网命名为“英特尔傲腾长久内存”,简称为“长久内存”。英文官网名为 Intel Optane Persistent Memory,简称为 PMem。因而在本篇文章中,对立应用“长久内存”或者“PMem”进行指代。
那么正式开始……说到底,长久内存其实是一种新型的内存条,咱们能够先来看一下,它长这个样子,和一般内存条其实没啥特地大差别,而且它就是插在服务器的内存插槽里的。

所以简略来说,你能够自行购买,而后插到你的服务器上的内存插槽上,你就能够应用长久内存啦。当然,长久内存对于硬件是有肯定的要求的,AMD 的 CPU 就不必想了,长久内存属于 Intel 的独家法宝,天然不会留给竞争对手做反对。具体 CPU 的反对型号能够自行查找,这里不多赘述。当然如果想要施展长久内存的最大劣势,其在硬件配置插法上是有肯定的考究的,前面将会具体开展。
而后咱们钻研下长久内存在整个计算机体系架构中的地位。学过计算机的同学,肯定对计算机的存储金字塔的架构十分相熟,那么如果咱们把长久内存也放到这个金字塔里,会是在什么地位呢?咱们具体来看一下。如下图所示的存储金字塔中,咱们能够看到长久内存处于外存(HDD 或者 SSD)以及内存 DRAM 之间,其不管在容量、性能、价格上都是处于两者的两头地位。除此以外,在性能上,它齐全就是个 DRAM 和外存的混血儿(所以为什么在图上 PMEM 标记为一半是淡水,个别是火焰)。也就是说,它即能够当做内存应用,也能够当做长久化外存设施应用,当然也能够两者兼顾,齐全取决于你如何应用长久内存。

如果你还是不太能了解我形容的是什么,那么最间接的,通知你长久内存三个最重要的特色:大,快,持久性:

  1. 大:目前长久内存单条内存容量最大能够达到 512 GB,而目前服务器单条内存个别最多到 32/64 GB。也就是说,单台服务器应用长久内存能够轻松达到 TB 级别的内存容量。另一方面,单位价格来说,长久内存为一般内存的一半左右。
  2. 快:既然也号称为内存,那必然不能慢。能够看到,长久内存相比拟于一般 SSD 有 1 - 2 个数量级的提早性能劣势,相比拟于硬盘劣势更加微小。当然比照与 DRAM,其会有肯定的性能差距。然而理论应用中因为性能瓶颈不肯定在内存上,所以个别不会有特地显著的差距(个别性能消退在一倍以内)。
  3. 持久性:艰深来说,就是长久内存有跟硬盘一样的个性,断电当前重启,内存中的数据仍然存在。此项个性能够说是秒杀内存,内存中的数据咱们都晓得断电或者程序以外退出当前就不复存在。此项个性使得长久内存即能够当做一个高速长久化设施应用,也能够满足内存利用某些场景下的疾速复原的需要。
    如下表格总结了对于数据中心单台服务器上的典型配置,以及相应的大抵的性能数字作为参考。

    常见内存和长久化设施在单台服务器上的大抵性能体现
    长久内存次要劣势场景是什么?
    说完了长久内存的个性,大家肯定也能设想出它在某些利用场景下具备得天独厚的劣势。具体来说,长久内存在理论落地中可能有以下几种玩法。以下从几个具体场景举例登程,并且辩证的给出应用长久内存带来的劣势,以及可能引入的问题。
    场景 1:大内存低成本解决方案
    如果你的利用内存消耗量是要害,是整个零碎的资源瓶颈,那么应用长久内存将会是你降低成本的最佳解决方案。你的零碎个别在两种状况下对于大内存有特地的需要
  4. 基于内存性能的考量,你必须应用基于内存的解决方案,而不可能应用基于磁盘的计划,比方内存数据库(Redis, MemSQL)。
  5. 尽管你的利用能够承受基于磁盘而带来的性能损耗,然而显然如果内存扩充,你的利用能够跑得更快更加节省时间,比方基于 Spark 搭建的利用。
    此种场景下,你能够思考应用长久内存来提供一个大内存低成本的解决方案。
    劣势:长久内存在单位价格上约为一般内存的一半,并且能够在单台机器上轻松达到 1.5 TB,甚至 3 TB 的内存大小。因而比方你指标须要 20 TB 的总内存容量,长久内存可能只须要 10 台机器即可满足,然而基于 DDR 内存的集群可能须要 40 台甚至更多。思考机器投入以及经营上带来的老本,长久内存所带来的低成本解决方案的劣势是不言而喻的。
    可能的问题:当然引入长久内存,相比拟于内存可能会带来肯定的性能消退,消退的起因可能是长久内存自身所引起的,也可能是因为机器台数缩小,其余硬件资源(比方 CPU 核数或者网络带宽)缩小所引起的。所以理论我的项目落地中,作为决策者,肯定须要进行审慎评估,来量化长久内存带来的利害关系。
    场景 2:高性能长久化需要的利用
    长久内存作为一个内存和外存的混合体,其高速长久化的个性在某些磁盘 IO 作为性能瓶颈的场景下是一个破局的解法。尽管 SSD 肯定水平上也能够缓解磁盘 IO 性能瓶颈,然而相比拟于 PMem 这种能够实现两个数量级的吞吐和提早改良的长久化设施来说,PMem 无疑是具备革命性的意义的。以下抛砖引玉举几个磁盘 IO 作为性能瓶颈的场景。
  6. 音讯队列:大家相熟的开源音讯队列 Kafka,因为其音讯长久化逻辑的存在,其吞吐最终会卡在硬盘 IO 上。目前的解法是一直堆机器来扩大整个 Kafka 集群的吞吐。
  7. 搜寻零碎:相似于 Kafka,风行的开源搜寻零碎 Elasticsearch,也将局部的数据结构寄存在磁盘上。那么最终影响整体提早和吞吐的将会是磁盘 IO 的性能。
  8. 数据库或者 KV 存储引擎:比方 MySQL 或者 RocksDB,都具备重要的面向外存的数据长久化逻辑。
  9. 分布式文件系统:在人工智能场景中,经常会有大量的小文件存在。比方在 Ceph 的文件系统中,在 metadata server 上对大量小文件的治理经常因为大量随机读写的存在而产生性能问题。
    劣势:显然,对于有高速长久化读写需要的场景,长久内存引入间接有了数量级的性能晋升。在吞吐方面,因为单机吞吐晋升,因而总的机器数量规模能够大量缩小,在提早方面则是提供了另一给维度的劣势。具体性能比对能够参照上一节开端给出的性能比对表格。
    可能的问题:PMem 作为纯正的长久化设施可能是把双刃剑,最次要的问题是其容量相比拟于传统硬盘来说还是偏小,同时单位成本也高。因而对于某些场景下如果除了对于性能,对于容量也有较高的要求,那么应用 PMem 带来性能的晋升,然而也可能会造成老本的回升。
    场景 3:内存数据持久性的利用
    这种场景下,实质上还是把 PMem 当做一个内存来应用,和上一个高性能长久化的场景有所类似有所区别。上一个场景次要是针对原本软件架构设计就有长久化逻辑(比方文件系统原本就须要存在硬盘上),而后咱们把长久化逻辑搬移到 PMem 上就能够。其自身可能并不波及到简单的数据结构的批改,因为其原本的设计就曾经带有了长久化逻辑。然而在场景 3 这种内存数据长久化场景中,软件自身的内存数据结构的设计是没有思考到长久化逻辑的。因而你须要针对内存中的数据结构从新设计长久化数据结构和逻辑。这一类利用对开发的要求是最高的,同时也是最能齐全施展 PMem 的特点。
    此种场景往往是原本就是基于纯内存的利用,然而心愿减少数据长久的个性,最常见的需要是因为要疾速数据恢复。此种需要个别来自线上服务零碎(比方数据库 Redis,或者人工智能场景下的参数服务器、特色工程数据库等),线上服务一旦节点离线,都会造成服务质量的影响。因为零碎是基于内存数据结构,离线当前的数据恢复往往须要小时级别的工夫来从新抓取数据,并且从新构建内存中的数据结构。如果有了长久内存,此类服务不仅可能通过大内存降低成本,而且能够减少疾速复原性能,保障线上服务质量。
    劣势:如上所述,此种模式下,能够把长久内存的劣势充分发挥进去。首先大内存带来硬件老本的降落,其次,通过持久性,赋予了原本的内存利用的新的长久化个性,能够反对数据疾速回复,保障线上服务质量。
    可能的问题:此种利用惟一的问题可能是带来比拟多的额定的开发工作量。个别的内存数据结构都没有长久化逻辑,个别要求程序员通过 PMDK 从新设计长久化数据结构和逻辑,实现冀望中的内存数据长久化。
    如何做做长久内存的开发?
    首先必须弄明确,如果 memory mode 这种低成本扩大内存容量的形式能够满足你的业务需要,那么你基本不须要开发成本。然而如果不能满足你的需要,存在以下几种问题,那么你可能得动脑子想想须要如何对现有场景进行革新。
    • 内存模式性能消退过于显著,心愿应用大容量内存的同时,放弃和 DRAM 靠近的性能
    • 想利用长久内存来代替(或者一部分代替)传统外存设施,利用其高速长久化个性
    • 心愿对内存数据做长久化,提供离线当前的疾速复原性能
    长久内存的开发会是一个十分大的 topic,而且依据你想要达到的目标不同,思路会齐全不一样,咱们这里不做开展。
    较量邀请
    基于以上介绍,置信你曾经对长久内存有了初步的理解。那么你想理解更多吗?你想切身感受这项技术吗?如果你想体验长久内存在 AI 利用上进一步的摸索的话,咱们为你提供了良好的机会!
    第四范式联结英特尔独特举办了【AI 利用与异构内存编程挑战赛】,此次较量基于人工智能利用,以异构内存架构为硬件底座,基于英特尔® 傲腾™ 长久内存的前沿利用摸索及硬核编程挑战赛。通过较量你将会对人工智能如何在异构内存架构上受害有全新的意识,步入技术新境界。
    大赛会有技术专家亲自领导及解说。同时还设有高达 20 万元的赛道处分,以及为高校学生提供了 Intel& 第四范式联结实验室实习机会。欢送所有技术背景或对此项技术感兴趣的人群报名。高处分、双赛道、低门槛、良好的体验环境及技术支持,还不赶快报名!

大赛官网:https://opensource.4paradigm….
报名注册链接:http://openaios.4paradigm.com

退出移动版