<small id='vtuBd'></small> <noframes id='jA2Kai'>

  • <tfoot id='PY96Ih'></tfoot>

      <legend id='1pis'><style id='jqNo'><dir id='Mg5Lk6py'><q id='PHMljnRau'></q></dir></style></legend>
      <i id='bXrS'><tr id='MoHJ4u'><dt id='ZiSmg'><q id='qOKGsL2t'><span id='nXEu0'><b id='2Rowxs9Hb'><form id='Uoba8dY'><ins id='WVlsMXop'></ins><ul id='m20kVozFce'></ul><sub id='t0vZ'></sub></form><legend id='LNafg'></legend><bdo id='H3B4j1kIlT'><pre id='QqBYh7S'><center id='qGBWHywb'></center></pre></bdo></b><th id='n2qy8u403'></th></span></q></dt></tr></i><div id='5aBy4IAOKT'><tfoot id='UjEJ9'></tfoot><dl id='8Bwt'><fieldset id='qxoMV1uF'></fieldset></dl></div>

          <bdo id='l3N1'></bdo><ul id='GaC3yTc'></ul>

          1. <li id='YuSWklZLH'></li>
            登陆

            章鱼彩票 资讯-火爆业界的明星, 下一代存储技能的先行: NVDIMM

            admin 2019-05-14 308人围观 ,发现0个评论

            跟着存储技能的开展,对存储功能的不懈寻求,高功能存储开端探究向内存通道的搬迁。在这样的状况下, NVDIMM 技能便应运而生了。

            NVDIMM (Non-Volatile Dual In-Line Memory Module) 章鱼彩票 资讯-火爆业界的明星, 下一代存储技能的先行: NVDIMM是一种能够随机拜访的,非易失性内存, 又被称作PMem (Persistent Memory)。在之前的微信文章中,咱们介绍了NVDIMM几种硬件上的完成方法,以及为了支撑和优化功能所做的硬件上的改动。今日,咱们来讨论一下为了充沛发挥NVDIMM的功能,软件方面做了哪些支撑。有些人或许会有疑问, 为什么用起来这么费事?既然是持久性内存,不是应该关机什么样, 开机什么样, 就能够了吗? 其完成在来看, 这种主意还不会变为实际。 由于除了DRAM是易失性的,比方 cache,寄存器这种也是易失性的。仅仅把内存做成持久性的也不能达到这样的意图。另一个问题是, memory leak。假如发生了内存走漏, 重启一下就好了。 那假如是持久性内存的走漏呢?这也是一个很扎手的问题。Pmem有些方面类似于内存,也有些方面类似于存储。可是,一般上咱们不会以为Pmem能够代替内存或存储。其实,能够把它看作是一种弥补,填补了内存和存储之间巨大的差异。

            SPDK 在 17.10 中开端引进关于Pmem的支撑。Pmem在SPDK的bdev层露出为一个块设备, 运用快设备接口和上层进行通讯。如图(1)所示。

            图(1)

            从图中咱们能够看到libpmemblk 把块操作转化成了字节操作。它是怎样做到的呢? 在介绍libpmemblk 和 它背面的PMDK之前, 咱们了解一下基础知识。

            mmap和DAX

            首要,咱们来看传统的I/O方法, 即缓存I/O (Buffered I/O). 大多数操作体系默许的IO操作方法都是缓存IO。该机制使IO数据缓存在操作体系的page cache 中, 也便是说, 数据会被先复制到操作体系的内核空间的缓冲区中,然后才会从内核空间的缓冲区复制到指定的用户地址空间。

            图(2)

            在Linux 中, 这种拜访文件的方法便是经过read/write 体系调用来完成,如图(2)。接下来, 咱们比较一下内存映射IO mmap().

            接下来, 咱们比较一下内存映射IO mmap().

            图(3)

            经过mmap获得了对应文件的一个指针,然后就像操作内存相同进行赋值或许做memcpy/strcpy. 这种咱们称之为load/store操作(覃远通这种操作一般需求msync、fsync来落盘)。

            mmap由于树立了文件到用户空间的映射联系, 能够看作是把文件直接复制到用户空间,减少了一次数据复制。可是, mmap仍然需求依托page cache。

            图(4)

            讲完了mmap, 那么DAX是什么呢?DAX即direct access,这个特性是根据mmap的。而DAX的差异在于彻底不需求page cache. 直接对存储设备拜访。 所以它便是为了NVDIMM而生的。运用关于mmap的文件操作, 是直接同步到NVDIMM上的。DAX现在在XFS, EXT4, Windows的 NTFS 上都现已支撑。需求留意的是, 运用这个形式, 要对运用程序或许文件体系进行修正。

            图(5)

            NVM Programming Model

            NVM Programming Model 大致界说了三种运用方法。

            图(6)

            1. 最左面Management 主要是经过driver供给的API对NVDIMM进行办理, 比方检查容量信息, 健康状况, 固件版别, 固件晋级, 形式装备等等。
            2. 中心, 作为存储快设备运用, 运用支撑NVDIMM driver 的文件体系和内核, 运用程序不用做任何修正,经过标准文件接口拜访NVDIMM。
            3. 第三种, 根据文件体系的DAX特性,经过章鱼彩票 资讯-火爆业界的明星, 下一代存储技能的先行: NVDIMMload/store操作,不需求page cache, 同步落盘。没有体系调用, 没有中止。这也是NVM Programming Model 的中心, 能够充沛开释NVDIMM的功能优势。但它的缺陷在于,运用程序或许需求做一下改动。

            PMDK

            libpmemblk 完成了一个驻留在pmem中的相同巨细的块的数组。里边每个块关于章鱼彩票 资讯-火爆业界的明星, 下一代存储技能的先行: NVDIMM忽然掉电,程序溃散等状况仍然坚持原子事务性。libpmemblk是根据libpmem库的。

            libpmem是PMDK中供给的一个更底层的库, 尤其是关于flush的支撑。它能够追寻每次对pmem的store操作,并确保数据落盘为持久性数据。

            除此以外, PMDK 还供给了其他编程库, 比方libpmemobj, libpmemlog, libvmmalloc 等。感兴趣的同学能够拜访http://pmem.io/pmdk/ 获取更多信息。

            SPDK实战

            bdevperf测模仿NVDIMM功能

            (1) 创立一个虚拟的Pmem bdev

            ./configure --with-pmdk

            make

            PMDK 现已在一些新的Linux发行版中被引进。假如configure犯错,请到https://github.com/pmem/pmdk 自行装置PMDK库。

            接下来, 咱们能够经过SPDK RPC指令来树立一个pmem_pool。

            rpc.py create_pmem_pool /path/to/pmem_pool

            这儿假定咱们没有一个真实的NVDIMM做测验, 所以pmem_pool的途径就随意挑选一个就好。比方:

            rpc.py create_pmem_pool /mnt/pmem 128 4096

            咱们也能够用pmem_pool_info来获取创立pmem_pool的信息:

            rpc.py pmem_pool_info /path/to/pmem_pool

            或许,删去刚创立的pmem_pool:

            rpc.py delete_pmem_pool /path/to/pmem_pool

            然后, 咱们在咱们创立的pmem_pool上, 树立一个bdev块设备:

            rpc.py construct_pmem_bdev /path/to/pmem_pool -n pmem_bdev_name

            (2) 更新装备文件

            更改/path/to/spdk/test/bdev/bdev.conf.in, 只保存Pmem装备的部分。

            [Pmem]

            Blk

            Example:

            [Pmem]

            Blk /mnt/pmem-pool pmem-bdev

            (3) bdevperf 测验

            ./bdevperf -c ../bdev.conf.in -q -t

            Example command:

            ./bdevperf -c ../bdev.conf.in -q 128 -t 100 -w write -o 4096

            ./bdevperf -c ../bdev.conf.in -q 1 -t 100 -w randwrite -o 4096

            结语

            至此, 关于NVDIMM硬件和软件上的不同, 我们都有了一个大致的知道。Intel 在2018年5月发布了根据3D XPoint™ 技能的Intel Optane™ DC Persistent Memory, 引发了NVDIMM爆点。假如你对NVDIMM的用法很感兴趣,或许关于NVDIMM的运用有好的主意, 欢迎经过私信或许在谈论区谈论沟通。期望我们持续重视NVDIMM和SPDK技能。

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP