SCM(Storage Class Memory)是一种新型的存储介质,其特点与传统的存储介质有很大年夜的不合。若何基于SCM介质的特点,在软件层面做出相干的改变,充分发挥SCM的才能,是下一代超高机能存储体系须要解决的至关重要的问题。
- SCM对存储软件的挑衅
SCM对存储软件的挑衅是多方面的,个中最关键的挑衅是软件栈时延、收集时延以及崩溃一致性,下面分别进内行单的解释。
- 软件栈时延
不合介质的时延如下图所示,在没有SCM出现以前,时延大年夜低到高分别是SRAM、DRAM、NAND(SSD)、Magnetic Disk(HDD)。可以看到,DRAM和NAND之存放在2-3个数量级的差别,这是一个明显的机能鸿沟(Performance Gap)。SCM的时延在在DRAM和SSD之间,它的出现弥补了这个机能鸿沟,这使得SCM既可以或许被算作比较快的存储设备来应用,又可以算作略慢一些的内存(同时有非易掉特点)来应用,如下图右侧所示(在图中标为NVM)。
在现有AFA存储体系中,为寻求NVMe SSD的极致机能,软件栈本身带来的时延已经无法忽视 。比拟SSD,SCM介质的拜访时延有几个数量级的差别(大年夜数百微秒级到数百纳秒级),软件栈时延的问题将更为凸显。如传统的大年夜应用到内核的软件栈对功能的分化层级清楚,对于慢速的存储介质是合适的,但对于SCM如许的超高速介质则成为了速度的瓶颈。
- 收集时延
基于同样的原因,收集时延在SCM体系中的┞芳比也成为了影响体系时延的重要抵触。若何构建高速、稳定的收集,成为了可否在体系中充分应用SCM介质机能的关键身分。
- 崩溃一致性(CrashConsistency)
相对于传统内存,SCM可以供给雷同的拜访接口(Byte Addressable SCM: Load/Store),同时供给了数据非易掉才能。在基于内存的计算机体系中,不须要推敲体系崩溃后内存中数据的恢复问题(体系崩溃后内存数据全部损掉,须要大年夜其他处所恢复数据),而在SCM体系中须要推敲这个问题(如安在体系恢复后直接大年夜SCM中恢复数据?)。这个问题极大年夜影响了软件体系的设计理念,如在数据写入SCM的过程中,因为CPU保存到介质的次序可能受到硬件的主动调剂,须要根据数据在体系崩溃后被应用的次序来包管数据在存储到SCM时的次序,或者可以或许经由过程其他方法恢复数据的内涵一致性,不然就会产生数据破坏。
一个简单的示例如下图所示。法度榜样的意图是先写入数据data[0]和data[1],然后再设置valid标记位为1,表示数据是有效的。然而如不雅不经由过程store和fence指令合营指定命据写入SCM的次序,数据写入SCM就可以被硬件调剂。调剂后的次序可能是先写入valid标记,再写入data。如不雅在写入valid标记后,但data尚未写入之前产生了体系崩溃,则在SCM将会存在缺点的信息。在体系恢复后,将会将SCM中的垃圾数据认为是有效数据,大年夜而带来数据一致性的问题:
在应用好SCM上,学界和业界都在摸索中,华为也将以开放、合作的姿势,参加到这个过程,争夺在第一时光实现研究到产品的转化,为客户供给新一代的超高机能存储而持续尽力。
访存重排将会惹人崩溃一致性问题
Data数据大年夜Cache 到SCM介质的持久过程,平日须要增长新的commit CPU指令,保障数据真正持久化到了NVM 介质中。然则,在commit操作未履行之前,因为Cache空间不足,引起的弗成控、随机的Data数据大年夜Cache到SCM的持久化,让数据不一致问题更复杂了。Commit操作影响了将来存储应用软件设计,甚至成闻敉件架构设计的关键要素。数据一致性与机能的抵触仍然是永恒的架构课题。
- 若何应对这些挑衅
- 应对软件栈时延的挑衅
应对软件栈时延挑衅的重要办法,是采取新的软件分层模式,打薄软件栈深度,削减软件消费。如开源的libpmem(http://pmem.io/)为持久化内存供给了基本的编程框架,在极致机能场景经由过程bypass传统软件栈的纵贯方法去除响应的时延消费,如下图最右侧所示(引自http://pmem.io/2014/08/27/crawl-walk-run.html)。软件可以大年夜用户态经由过程Load/Store直接拜访SCM,绕过内核软件栈,就可以或许最大年夜程度地削减软件栈的时延开销。
用户态Load/Store纵贯模式供给最优软件栈时延
所以,软件用户态化,除了带来保护性、App实例编排的好处外,机能优化是更重要的。上图直接拜访新介质空间地址的信息,避免了内核过多的操作。 内核调剂,体系调用的us级开销,在us级的介质面前,已经因为重载,bypass 内核操作新介质成为必须的选择。
- 应对崩溃一致性的挑衅
包管崩溃一致性的最简单方法是在写入数据前先记录日记(Log),并在故障恢复后经由过程日记回放来恢复数据(Redo)。这个方法只要包管日记在SCM上先持久化即可,其恢复过程相对简单,不易掉足,但该筹划的缺点是产生了两倍的写I/O,时延也增长了一倍,影响了SCM体系的靠得住性和机能。
针对这一缺点,学术界提出了一些可以或许避免写日记,经由过程奇妙地组织数据构造的更新次序来在crash后恢复一致状况的办法。例如Write Optimal Radix Tree(WORT),经由过程记录节点的层次信息,使得crash后可以检测出不一致的节点,并经由过程检查其子节点将状况恢复到一致。
推荐阅读
不容置疑,IT技巧和AI的海潮已经深深地融进我们的生活,方方面面都在产生着变更。如今甚至将来,是IT技巧与人工智能融合的时代,人工智能将助力IT基本架构进级,为企业和用户供给更好的办事。2017云栖大年夜会在正在>>>详细阅读
本文标题:SCM: 颠覆存储系统软件架构
地址:http://www.17bianji.com/lsqh/37874.html
1/2 1