英特尔傲腾持久内存有两种操作模式,内存模式(Memory Model)和APP Direct模式,无论哪种模式,总归都能享受到大容量,亲民价的内存,广而言之,有了大内存之后,机器重启速度快了,运行各种程序的速度只能更快不会变慢,升级系统什么的也会变的更快。
在之前的文章里提到过随着负责的提升,延迟并不会像NAND一样升高,傲腾的特性有这样一点,写之前不需要先擦除,直接写就可以。
内存模式:大容量,价格亲民,易失性
当被配置成内存模式后,应用和操作系统将其视为易失性内存池,跟现在基于DRAM的系统没什么分别。在这种模式下,不需要应用程序做持久存储器编程,断电时数据会丢失。
在内存模式下,DRAM作为高频热数据的Cache,但英特尔的傲腾数据中心持久内存的容量能做到非常大,英特尔至强可扩展处理器的内存控制器来管理Cache。
当需要从内存读取数据时,内存控制器先查看一下DRAM cache,如果有的话,那就从DRAM里读数据,延迟非常低。如果DRAM里没有这个数据的话,就从英特尔傲腾数据中心持久内存里读数据,延迟也会相应高点。
应用程序数据检索相对稳定时与内存控制器匹配后可提高缓存的命中率,性能表现自然会相应提升,会有近似于DRAM的表现。当请求数据的随机性比较大的时候,性能表现会差一些,大约100纳秒的级别。
在内存模式下,数据是易失性的,断电的话数据就没了。不丢失数据的模式是第二种模式,叫App Dircet模式。
内存模式将大容量,平民价的内存带给了原来的应用,包括虚拟化的数据库,大数据分析应用非常适合用这个。
App Direct模式:大内存,亲民价,非易失性持久
App Direct笔者目前还没看见官方怎么翻译,App Direct翻译成“应用直连”模式可能比较合适,此前,应用软件访问存储的过程比较复杂,想拿到数据的过程比较绕,App Direct模式下应用可直接连到硬件,通过DDR内存通道拿到存储,把文件系统当内存用,软件无需做太多适应和修改。
当配置成App Direct之后,应用和操作系统会识别出有两种直接载入(direct load)/存内存(Store memory)模式,会自动判断哪些读写操作适合DRAM还是傲腾持久内存。
需要低延迟同时不需要永久存储的数据可以放在DRAM上。需要持久存储或者结构化存储的大量数据适合放在傲腾数据中心持久内存上。如果想让内存中的数据持久化,那么肯定就得选App Direct模式了。
内存数据库,内存分析框架,需要快速存储的应用都非常适合用App Direc模式。傲腾持久内存有其特殊性,但仍有非常适用于此的应用。
App Direct模式需要能识别持久内存的文件系统,该文件系统需要操作系统或者虚拟环境的支持,包括微软Win Server 2019,Ubuntu,Red Hat,VMware ESX v6.7都支持傲腾数据中心持久内存,思科的Hyperflex超融合也支持,RDMA技术也支持,
模式决定了系统能使用多少内存。在App Direct模式下,DRAM和英特尔傲腾数据中心持久内存,在内存模式(Memory Mode)下,DRAM和傲腾持久内存都算内存,在内存模式下,DRAM用作cache,不作为独立的内存资源来显示,简单说系统不把它认作内存。
比如,一个平台里有1.536TB的英特尔傲腾持久内存和192GB的DRAM内存,如果是App Direct模式下的话,系统显示有1.728TB内存,如果是内存模式的话,只能显示1.536TB的内存。
系统管理员可以通过BIOS或者内存管理工具来配置这个模式,也可以把内存池分区,不同分区可同时运行两种模式。
在非易失性的App Direct模式下,内存数据有可能泄露掉,比较安全的flush掉内存的方式是丢掉内存加密的密钥,但在共享内存场景下也不行,比较合理的方式是参考SSD中用的TRIM指令。