CN109542356B - 面向容错的nvm持久化过程冗余信息的压缩方法和装置 - Google Patents
面向容错的nvm持久化过程冗余信息的压缩方法和装置 Download PDFInfo
- Publication number
- CN109542356B CN109542356B CN201811457572.7A CN201811457572A CN109542356B CN 109542356 B CN109542356 B CN 109542356B CN 201811457572 A CN201811457572 A CN 201811457572A CN 109542356 B CN109542356 B CN 109542356B
- Authority
- CN
- China
- Prior art keywords
- address
- queue
- values
- value
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向容错的NVM持久化过程冗余信息的压缩方法及装置,本发明实施步骤包括分配写集合、地址队列以及多个值队列,在NVM中分配持久化日志保存区;在事务期间将所有持久化写操作信息写入写集合;扫描写集合,按照值的新旧对比情况分别加入相应的值队列,并按值队列依序加入地址队列;针对地址队列中的地址信息进行压缩使得一组相邻地址的相同部分被消除,将压缩后的地址信息写入地址记录;将各个值队列中所有元素的N位值的低X位写入值记录,从而将值的冗余信息消除。本发明能够减小持久化数据的大小,从而降低事务的持久化开销,达到提升持久化事务性能、延长NVM使用寿命的目的。
Description
技术领域
本发明涉及计算机持久化存储器领域,具体涉及一种面向容错的NVM持久化过程冗余信息的压缩方法和装置,用于压缩持久化存储中的冗余信息以提高持久化存储器的写性能和寿命。
背景技术
近年来,随着计算机领域的高速发展,中央处理器CPU的处理能力得到了极大提升,而存储***的性能提升却相对较小,传统的主存-辅存结构间存在巨大的性能鸿沟,已经成为计算机***的性能瓶颈。
一方面,在传统的主存-辅存体系中,主存(一般为DRAM,Dynamic Random AccessMemory,动态随机存取存储器)通常具有容量小、速度快、易失(断电数据丢失)等特点;而辅存(磁盘、磁带、光盘、闪存)通常具有容量大、速度慢、非易失(断电数据不丢失)等特点。这样的体系很大程度上是由存储设备的硬件特性决定的,但其已经日渐不能满足现今的存储要求。比如内存数据库***,将所有的海量数据常驻主存,辅存只做备份,这样可以有效提高性能,但是由于DRAM的易失性,一旦断电或者***崩溃就可能造成数据丢失,因此需要采取各种容错的手段及时保存数据和保持数据的一致性,通常的方法是将数据周期性保存到辅存介质,而经常性的数据备份(从主存备份至辅存)会带来不小的性能损失。
另一方面,随着DRAM的技术工艺日渐接近极限,增加其速度和容量也越来越难。所以,业界也一直积极探索和研究新型存储材料、设备乃至新型的存储体系。NVM(Non-Volatile Memory,非易失存储器),就是近年来备受关注的一类新型存储设备。
NVM通常具有字节粒度寻址、容量密度大、访问速度快、非易失(断电数据不丢失)等特点。NVM既具有主存的特征,又具有辅存的特征,也被称为Persistent Memory(PM,持久化内存)或者是Storage Class Memory(SCM,存储级内存)。在众多NVM技术中,PhaseChange Memory(PCM,相变内存)发展最快,最具代表性,其硬件特性如表1所示。
表1、PCM、DRAM硬件特性对比表。
NVM的出现和快速发展,给存储***带来的新的机遇和变革。在如图1(a)所示现有体系结构的基础上,NVM既可以替代传统存储结构中的磁盘、闪存等成为快速辅存如图1(b)所示;也可以替代DRAM成为主存如图1(d)所示;甚至可以和DRAM共存形成混合主存如图1(c)所示。其中,如图1(c)所示的混合主存结构是当前业界研究的热点。
在软件层面上,基于NVM的数据持久化存储也涌现了大量新的技术方法。为了保证数据一致性,这些技术方法或多或少都会使用基于事务的日志机制(Transctionlogging)。事务型持久化日志主要分为重做日志(Redo-Log)和撤销日志(Undo-Log)两大类,目前x86体系中的持久化存储库Mnemosyne和NVML分别是其应用代表。这两类日志机制都可以实现数据写操作的事务化,即保证写数据时要么都成功,要么有失败就都回滚到事务提交之前的状态。图2显示了这两种日志机制。如图2(a)所示,Redo-Log在事务提交时,先将事务中所有写操作的地址和新值写入持久化日志中,然后再更新地址的值,更新成功后丢弃日志;如图2(b)所示,Undo-Log在事务提交时,先复制各写操作的地址和旧值到持久化日志中,然后再更新地址的值,更新成功后丢弃日志。从图2中可以看到,无论哪种日志机制,在持久化时都有一定的开销:必须进行两次写的操作(向日志写、向持久化堆写),每次写的操作都需要数据更新(flush)和操作同步(fence)这两种耗时较高的操作来保证写入持久化完成,而且NVM的写操作本身延迟就较长。另一方面,这样的日志持久化仅简单的将地址和值信息写入NVM,没有对程序执行过程中的信息局部性存在的冗余进行处理。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向容错的NVM持久化过程冗余信息的压缩方法和装置,本发明对持久化存储中的冗余信息进行压缩,尽量压缩和消除冗余,减小持久化数据的大小,从而降低事务的持久化开销,达到提升持久化事务性能、延长NVM使用寿命的目的。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向容错的NVM持久化过程冗余信息的压缩方法,实施步骤包括:
1)在支持事务持久化的线程中分配写集合WriteSet、地址队列queue以及多个值队列vqueue_X,其中值队列vqueue_X用于记录新旧只有低X位不同的值,在压缩值时各记录值的低X位写入持久化日志中,且不同值队列vqueue_X的X值不同;
2)在NVM中分配持久化日志保存区;
3)在事务期间将所有持久化写操作信息写入写集合WriteSet;
4)扫描写集合WriteSet,对新旧值完全相同的写集合元素进行过滤,对新旧值不完全相同的写集合元素,将新旧只有低X位不同的值的写集合元素的值分别加入相应的值队列vqueue_X,并按照值队列vqueue_X中X的值从大到小的顺序将新旧值不完全相同的写集合元素的地址加入地址队列queue;
5)针对地址队列queue中的地址信息进行压缩使得一组相邻地址的相同部分被消除,将压缩后的地址信息写入地址记录;
6)将各个值队列vqueue_X中所有元素的N位值的低X位写入值记录,从而将值的冗余信息消除。
优选地,步骤1)中的多个值队列vqueue_X包括值队列vqueue_N、vqueue_N/2、vqueue_N/22、…、vqueue_16、vqueue_8,其中,N为持久化日志的位宽,vqueue_N用于记录新旧完全不同的值,在压缩值时各记录值的低N位写入持久化日志中;vqueue_N/2用于记录新旧只有低N/2位不同的值,在压缩值时各记录值的低N/2位写入持久化日志中;……;vqueue_16用于记录新旧只有低16位不同的值,在压缩值时各记录值的低16位写入持久化日志中;vqueue_8用于记录新旧只有低8位不同的值,在压缩值时各记录值的低8位写入持久化日志中。
优选地,步骤2)中在NVM中分配持久化日志保存区时每一个持久化日志包含3个部分,对应各个值队列vqueue_X的值的数目、多个压缩地址的记录、多个压缩值的记录。
优选地,所述持久化日志的位宽为64位,可类同扩展至128位或更高。
优选地,步骤3)的详细步骤包括:针对持久化写操作tx_write要写入的地址、值构成的信息对<addr,value>,判断地址addr在写集合WriteSet中是否已经存在,如果在写集合WriteSet中已经存在,则将持久化写操作tx_write的值value替换写集合WriteSet中已存在项目的原值value’;如果地址addr在写集合WriteSet中不存在,则将信息对<addr,value>加入写集合WriteSet。
优选地,步骤5)的详细步骤包括:
5.1)构造处理子队列,将所述处理子队列中初始放入地址队列queue的前两个地址,初始化当前的压缩模式为不可压缩,压缩模式包括不可压缩、连续地址压缩、高32bit相同地址压缩三种,连续地址压缩模式是指对一组相邻地址的差值相同的地址队列进行压缩,高32bit相同地址压缩模式是指对一组具有相同的高32bit的地址队列进行压缩;
5.2)依次遍历地址队列queue中的后续地址Addr,每遍历一个地址Addr,则将当前遍历的地址Addr加入处理子队列,跳转执行步骤5.3);直至遍历完成,跳转执行步骤5.5);
5.3)判断处理子队列在地址Addr加入前后是否均为不可压缩,如果处理子队列在Addr加入前后均不可压缩,则取出处理子队列第一个地址,写入地址记录,跳转执行步骤5.2);否则,跳转执行步骤5.4);
5.4)判断处理子队列的压缩模式是否在地址Addr加入后发生变化,如果处理子队列对应的压缩模式在地址Addr加入后发生变化,则取出处理子队列中位于地址Addr之前的所有地址进行压缩,如果原压缩模式为连续地址压缩,则进行连续地址压缩,如果原压缩模式为高32bit相同地址压缩,则进行高32bit相同地址压缩,写入地址记录;跳转执行步骤5.2);
5.5)判断处理子队列是否为空,如果判断处理子队列为空,则跳转执行步骤5.7);否则,跳转执行步骤5.6);
5.6)判断处理子队列是否可压缩,如果处理子队列可压缩,则根据处理子队列的内容确定处理子队列新的压缩模式,并取出处理子队列所有地址进行压缩,如果新的压缩模式为连续地址压缩,则进行连续地址压缩,如果新的压缩模式为高32bit相同地址压缩,则进行高32bit相同地址压缩,写入地址记录,跳转执行步骤5.7);否则,取出处理子队列所有地址不压缩,写入地址记录,跳转执行步骤5.7);
5.7)判定将压缩后地址信息的写入地址记录结束。
本发明还提供一种面向容错的NVM持久化过程冗余信息的压缩装置,包括计算机设备,所述计算机设备被编程以执行前述面向容错的NVM持久化过程冗余信息的压缩方法的步骤。
和现有技术相比,本发明具有下述优点:
1、本发明能充分利用事务中持久化写操作的地址、值的时空局部性,从很少量的写操作数目起就有可能获得压缩收益,特别地,在对大量连续地址(比如数组)写入新旧变化范围很小的值时,可能获得巨大的压缩比,从而极大地提升持久化效率。
2、本发明采用的压缩方法简单,相对NVM的写延迟而言,本身引入的开销较小。
附图说明
图1为传统存储体系结构以及基于NVM的新存储体系结构示意图。
图2为现有重做日志(Redo-Log)和撤销日志(Undo-Log)两种日志机制的原理图。
图3为本发明实施例方法的基本流程示意图。
图4为本发明实施例中持久化日志的数据结构示意图。
图5为本发明实施例中写入写集合WriteSet的实例示意图。
图6为本发明实施例中准备阶段的实例示意图。
图7为本发明实施例中步骤5)的详细流程示意图。
图8为本发明实施例中地址压缩阶段得到的结果。
图9为本发明实施例中值压缩阶段得到的结果。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本实施例中的日志机制为重做日志(即记录新值)。
如图3所示,本实施例面向容错的NVM持久化过程冗余信息的压缩方法的实施步骤包括:
1)在支持事务持久化的线程中分配写集合WriteSet、地址队列queue以及多个值队列vqueue_X,其中值队列vqueue_X用于记录新旧只有低X位不同的值,在压缩值时各记录值的低X位写入持久化日志中,且不同值队列vqueue_X的X值不同;
2)在NVM中分配持久化日志保存区;
3)在事务期间将所有持久化写操作信息写入写集合WriteSet;
4)扫描写集合WriteSet,对新旧值完全相同的写集合元素进行过滤,对新旧值不完全相同的写集合元素,将新旧只有低X位不同的值的写集合元素的值分别加入相应的值队列vqueue_X,并按照值队列vqueue_X中X的值从大到小的顺序将新旧值不完全相同的写集合元素的地址加入地址队列queue;
5)针对地址队列queue中的地址信息进行压缩使得一组相邻地址的相同部分被消除,将压缩后的地址信息写入地址记录;
6)将各个值队列vqueue_X中所有元素的N位值的低X位写入值记录,从而将值的冗余信息消除。
写集合WriteSet用于记录在一次事务中各个持久化写操作的地址和新值,如果同一个地址多次进行写操作,则记录最后的新值。各个值队列分别记录所对应压缩模式的值,若是重做日志Redo-Log机制就记录新值,若是撤销日志Undo-Log机制则记录旧值。本实施例采用重做日志记录新值。
本实施例中,设地址和值均为64位(bit)。
本实施例中,步骤1)中的多个值队列vqueue_X包括值队列vqueue_N、vqueue_N/2、vqueue_N/22、…、vqueue_16、vqueue_8,其中,N为持久化日志的位宽,vqueue_N用于记录新旧完全不同的值,在压缩值时各记录值的低N位写入持久化日志中;vqueue_N/2用于记录新旧只有低N/2位不同的值,在压缩值时各记录值的低N/2位写入持久化日志中;……;vqueue_16用于记录新旧只有低16位不同的值,在压缩值时各记录值的低16位写入持久化日志中;vqueue_8用于记录新旧只有低8位不同的值,在压缩值时各记录值的低8位写入持久化日志中。
地址队列queue用于记录地址,记录顺序按照vqueue_N各值相应的地址、vqueue_N/2各值相应的地址、……、vqueue_16各值相应的地址、vqueue_8各值相应的地址,在压缩地址时根据各地址的连续性或高位相等程度将压缩后的记录写入持久化日志中。
本实施例中,步骤2)中在NVM中分配持久化日志保存区时每一个持久化日志包含3个部分,对应各个值队列vqueue_X的值的数目、多个压缩地址的记录、多个压缩值的记录。
本实施例中,持久化日志的位宽为64位。
以64bit值为例,持久化日志的数据结构如图4所示。图4所示表中,每一行均表示64bit空间。图4所示表中的地址记录解压缩之后的顺序和m1、m2、m3、m4个值记录解压缩之后的顺序相同,且数目等于m1+m2+m3+m4,从而在解压缩后可以恢复出一一对应<地址、值>对。另外,值记录过程中在位数切换时允许直接接续填充,不需要留空,比如:最后一个32bit值记录只占用了该64bit空间的低32bit,则高32bit可以直接接着填充16bit值记录。
本实施例中,地址记录按地址压缩模式分为3种,由地址(8对齐)的低2bit决定,00表示不压缩,01表示连续地址压缩,10表示高N/2位(以64bit为例,则是高32bit)相同地址压缩。
无压缩地址记录形如下:
64bit:地址(低2bit为00) |
连续地址压缩记录形如下:
高32bit相同地址压缩记录形如下:
每一个地址对形如下:
32bit:地址2低32bit | 32bit:地址1低32bit |
允许最后一个地址对不填充满,即此时压缩地址数目为奇数。
本实施例中,以64bit值为例,值记录按值压缩模式分为4种:记录64bit值、记录值低32bit、记录值低16bit、记录值低8bit,其中64bit模式代表不压缩值。各压缩模式下的值数目在持久化日志的头部中记录。根据值压缩模式,每个64bit空间可以依次记录1/2/4/8个值的记录bits,允许最后一个64bit空间不填充满。
在事务期间,将所有持久化写操作的<地址,值>对写入写集合WriteSet。如果写集合WriteSet中已经有该地址,则后写入的新值替换原值。本实施例中,步骤3)的详细步骤包括:针对持久化写操作tx_write要写入的地址、值构成的信息对<addr,value>,判断值addr在写集合WriteSet中是否已经存在,如果在写集合WriteSet中已经存在,则将持久化写操作tx_write的值value替换写集合WriteSet中已存在项目的原值value’;如果值addr在写集合WriteSet中不存在,则将信息对<addr,value>加入写集合WriteSet。如图5所示,假设当前在写集合WriteSet中已有4个<地址,值>对<addr1,value1>……<addr4,value4>。写操作tx_write写了<addr4,value4’>,因为写集合中已存在addr4,则替换value4的值为value4’的值。写操作tx_write写了<addr5,value5>,因为写集合中未有addr5,则将<addr5,value5>加入写集合。图5中的斜体内容表示了写集合WriteSet的变化。
本实施例中对写集合WriteSet进行压缩可分为三个阶段:
一、准备阶段,即步骤4)。
步骤4)中扫描写集合WriteSet,对新旧值完全相同的写集合元素进行过滤,对新旧值不完全相同的写集合元素,将新旧只有低X位不同的值的写集合元素的值分别加入相应的值队列vqueue_X,并按照值队列vqueue_X中X的值从大到小的顺序将新旧值不完全相同的写集合元素的地址加入地址队列queue。以64bit地址和值为例,具体包括准备合适大小的数组vqueue_64、vqueue_32、vqueue_16、vqueue_8、queue,其中queue作为地址压缩队列而其他作为值压缩队列。1)比较新旧值:扫描写集合WriteSet,比较新旧值生成压缩模式(保留低64bit、保留低32bit、保留低16bit、保留低8bit),对新旧值完全相同的写集合元素进行过滤。2)值入队列:过滤后,按照新旧值对比而得的压缩模式,将值分别加入相应的值队列vqueue_N中。3)地址入队列:最后按照vqueue_64->vqueue_32->vqueue_16->vqueue_8的顺序将相应地址加入queue。该处理过程和其中的信息冗余如图6所示,其中斜体字符表示信息冗余部分。
二、地址压缩阶段,即步骤5)。
步骤5)中针对地址队列queue中的地址信息进行压缩使得一组相邻地址的相同部分被消除,将压缩后的地址信息写入地址记录。
如图7所示,步骤5)的详细步骤包括:
5.1)构造处理子队列,将所述处理子队列中初始放入地址队列queue的前两个地址,初始化当前的压缩模式为不可压缩,压缩模式包括不可压缩、连续地址压缩、高32bit相同地址压缩三种,连续地址压缩模式是指对一组相邻地址的差值相同的地址队列进行压缩,高32bit相同地址压缩模式是指对一组具有相同的高32bit的地址队列进行压缩;
5.2)依次遍历地址队列queue中的后续地址Addr,每遍历一个地址Addr,则将当前遍历的地址Addr加入处理子队列,跳转执行步骤5.3);直至遍历完成,跳转执行步骤5.5);
5.3)判断处理子队列在地址Addr加入前后是否均为不可压缩,如果处理子队列在Addr加入前后均不可压缩,则取出处理子队列第一个地址,写入地址记录,跳转执行步骤5.2);否则,跳转执行步骤5.4);
5.4)判断处理子队列的压缩模式是否在地址Addr加入后发生变化,如果处理子队列对应的压缩模式在地址Addr加入后发生变化,则取出处理子队列中位于地址Addr之前的所有地址进行压缩,如果原压缩模式为连续地址压缩,则进行连续地址压缩,如果原压缩模式为高32bit相同地址压缩,则进行高32bit相同地址压缩,写入地址记录;跳转执行步骤5.2);
5.5)判断处理子队列是否为空,如果判断处理子队列为空,则跳转执行步骤5.7);否则,跳转执行步骤5.6);
5.6)判断处理子队列是否可压缩,如果处理子队列可压缩,则根据处理子队列的内容确定处理子队列新的压缩模式,并取出处理子队列所有地址进行压缩,如果新的压缩模式为连续地址压缩,则进行连续地址压缩,如果新的压缩模式为高32bit相同地址压缩,则进行高32bit相同地址压缩,写入地址记录,跳转执行步骤5.7);否则,取出处理子队列所有地址不压缩,写入地址记录,跳转执行步骤5.7);
5.7)判定将压缩后地址信息的写入地址记录结束。
该处理的结果如图8所示,其中斜体字符表示信息冗余部分,经压缩后地址的冗余信息(一组相邻地址的相同部分)已经被消除。连续地址压缩情形:5个地址连续,以第一个地址为基准,修改其末两bit值为1,并且描述字段desc记录地址数目5和偏移量8;高32bit相同地址压缩情形:5个地址高32bit相同,以第一个地址为基准,修改其末两bit值为2,并且描述字段desc记录地址数目5,后续地址对依次记录5个地址的低32bit。
三、值压缩阶段,即步骤6)。
步骤6)将各个值队列vqueue_X中所有元素的N位值的低X位写入值记录,从而将值的冗余信息消除。本实施例中,具体包括:
根据值队列vqueue_64、vqueue_32、vqueue_16、vqueue_8中的元素数目估算和分配值记录空间values,并且这些数目依次记录在持久化日志的头64bit中;
依次将vqueue_64中的元素的值连续地写入值记录values;
依次将vqueue_32中的元素的值的低32bit连续地写入值记录values;
依次将vqueue_16中的元素的值的低16bit连续地写入值记录values;
依次将vqueue_8中的元素的值的低8bit连续地写入值记录values。
该处理的结果如图9所示,其中斜体为冗余信息,经压缩后,值的冗余信息(与旧值相同部分)已经被消除。
综上所述,NVM相对DRAM有写延迟较高、写次数有限的缺点,而基于NVM的持久化存储为了保证持久化数据的正确性和一致性,通常采用传统的事务日志的方法,必须进行两次写操作,而且未能利用程序执行中信息的局部性中存在的冗余。本实施例前述面向容错的NVM持久化过程冗余信息的压缩方法的核心思想是尽可能地将持久化存储的事务日志中的冗余信息压缩和消除掉,包括程序执行的局部性带来的地址信息冗余、写新值带来的新旧内容的信息冗余,并且在压缩过程中充分利用高性能的DRAM作为缓冲区,只把最后压缩处理完成的结果写入NVM,通过对持久化存储中的冗余信息进行压缩,尽量压缩和消除冗余,能够减小持久化数据的大小,从而降低事务的持久化开销,达到提升持久化事务性能、延长NVM使用寿命的目的。此外,本实施例还提供一种面向容错的NVM持久化过程冗余信息的压缩装置,包括计算机设备,该计算机设备被编程以执行本实施例前述面向容错的NVM持久化过程冗余信息的压缩方法的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种面向容错的NVM持久化过程冗余信息的压缩方法,其特征在于实施步骤包括:
1)在支持事务持久化的线程中分配写集合WriteSet、地址队列queue以及多个值队列vqueue_X,其中值队列vqueue_X用于记录新旧只有低X位不同的值,在压缩值时各记录值的低X位写入持久化日志中,且不同值队列vqueue_X的X值不同;
2)在NVM中分配持久化日志保存区;
3)在事务期间将所有持久化写操作信息写入写集合WriteSet;
4)扫描写集合WriteSet,对新旧值完全相同的写集合元素进行过滤,对新旧值不完全相同的写集合元素,将新旧只有低X位不同的值的写集合元素的值分别加入相应的值队列vqueue_X,并按照值队列vqueue_X中X的值从大到小的顺序将新旧值不完全相同的写集合元素的地址加入地址队列queue;
5)针对地址队列queue中的地址信息进行压缩使得一组相邻地址的相同部分被消除,将压缩后的地址信息写入地址记录;
6)将各个值队列vqueue_X中所有元素的N位值的低X位写入值记录,从而将值的冗余信息消除;
步骤5)的详细步骤包括:
5.1)构造处理子队列,将所述处理子队列中初始放入地址队列queue的前两个地址,初始化当前的压缩模式为不可压缩,压缩模式包括不可压缩、连续地址压缩、高32bit相同地址压缩三种,连续地址压缩模式是指对一组相邻地址的差值相同的地址队列进行压缩,高32bit相同地址压缩模式是指对一组具有相同的高32bit的地址队列进行压缩;
5.2)依次遍历地址队列queue中的后续地址Addr,每遍历一个地址Addr,则将当前遍历的地址Addr加入处理子队列,跳转执行步骤5.3);直至遍历完成,跳转执行步骤5.5);
5.3)判断处理子队列在地址Addr加入前后是否均为不可压缩,如果处理子队列在Addr加入前后均不可压缩,则取出处理子队列第一个地址,写入地址记录,跳转执行步骤5.2);否则,跳转执行步骤5.4);
5.4)判断处理子队列的压缩模式是否在地址Addr加入后发生变化,如果处理子队列对应的压缩模式在地址Addr加入后发生变化,则取出处理子队列中位于地址Addr之前的所有地址进行压缩,如果原压缩模式为连续地址压缩,则进行连续地址压缩,如果原压缩模式为高32bit相同地址压缩,则进行高32bit相同地址压缩,写入地址记录;跳转执行步骤5.2);
5.5)判断处理子队列是否为空,如果判断处理子队列为空,则跳转执行步骤5.7);否则,跳转执行步骤5.6);
5.6)判断处理子队列是否可压缩,如果处理子队列可压缩,则根据处理子队列的内容确定处理子队列新的压缩模式,并取出处理子队列所有地址进行压缩,如果新的压缩模式为连续地址压缩,则进行连续地址压缩,如果新的压缩模式为高32bit相同地址压缩,则进行高32bit相同地址压缩,写入地址记录,跳转执行步骤5.7);否则,取出处理子队列所有地址不压缩,写入地址记录,跳转执行步骤5.7);
5.7)判定将压缩后地址信息的写入地址记录结束。
2.根据权利要求1所述面向容错的NVM持久化过程冗余信息的压缩方法,其特征在于,步骤1)中的多个值队列vqueue_X包括值队列vqueue_N、vqueue_N/2、vqueue_N/22、…、vqueue_16、vqueue_8,其中,N为持久化日志的位宽,vqueue_N用于记录新旧完全不同的值,在压缩值时各记录值的低N位写入持久化日志中;vqueue_N/2用于记录新旧只有低N/2位不同的值,在压缩值时各记录值的低N/2位写入持久化日志中;……;vqueue_16用于记录新旧只有低16位不同的值,在压缩值时各记录值的低16位写入持久化日志中;vqueue_8用于记录新旧只有低8位不同的值,在压缩值时各记录值的低8位写入持久化日志中。
3.根据权利要求2所述面向容错的NVM持久化过程冗余信息的压缩方法,其特征在于,步骤2)中在NVM中分配持久化日志保存区时每一个持久化日志包含3个部分,对应各个值队列vqueue_X的值的数目、多个压缩地址的记录、多个压缩值的记录。
4.根据权利要求2所述面向容错的NVM持久化过程冗余信息的压缩方法,其特征在于,所述持久化日志的位宽为64位,可类同扩展至128位或更高。
5.根据权利要求1所述面向容错的NVM持久化过程冗余信息的压缩方法,其特征在于,步骤3)的详细步骤包括:针对持久化写操作tx_write要写入的地址、值构成的信息对<addr,value>,判断地址addr在写集合WriteSet中是否已经存在,如果在写集合WriteSet中已经存在,则将持久化写操作tx_write的值value替换写集合WriteSet中已存在项目的原值value’;如果地址addr在写集合WriteSet中不存在,则将信息对<addr,value>加入写集合WriteSet。
6.一种面向容错的NVM持久化过程冗余信息的压缩装置,包括计算机设备,其特征在于,所述计算机设备被编程以执行权利要求1~5中任意一项所述面向容错的NVM持久化过程冗余信息的压缩方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811457572.7A CN109542356B (zh) | 2018-11-30 | 2018-11-30 | 面向容错的nvm持久化过程冗余信息的压缩方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811457572.7A CN109542356B (zh) | 2018-11-30 | 2018-11-30 | 面向容错的nvm持久化过程冗余信息的压缩方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542356A CN109542356A (zh) | 2019-03-29 |
CN109542356B true CN109542356B (zh) | 2021-12-31 |
Family
ID=65851950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811457572.7A Active CN109542356B (zh) | 2018-11-30 | 2018-11-30 | 面向容错的nvm持久化过程冗余信息的压缩方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542356B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737547B (zh) * | 2019-10-22 | 2022-08-19 | 第四范式(北京)技术有限公司 | 使用非易失性存储器nvm恢复内存数据库的方法和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101165667A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 用于在数据处理***中管理地址转换的方法和装置 |
CN103985415A (zh) * | 2013-02-10 | 2014-08-13 | Lsi公司 | 基于保留漂移历史的非易失性存储器读取阈值最优化 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8370263B2 (en) * | 2011-03-31 | 2013-02-05 | Bank Of America Corporation | Providing trusted services management using a hybrid service model |
CN103890754B (zh) * | 2011-08-24 | 2016-12-14 | 谷歌公司 | 对字体文件中的数据进行压缩的***和方法 |
US9423978B2 (en) * | 2013-05-08 | 2016-08-23 | Nexgen Storage, Inc. | Journal management |
US9507733B2 (en) * | 2013-06-21 | 2016-11-29 | Microsoft Technology Licensing, Llc | Cache destaging for virtual storage devices |
CN104283906B (zh) * | 2013-07-02 | 2018-06-19 | 华为技术有限公司 | 分布式存储***、集群节点及其区间管理方法 |
CN106294190B (zh) * | 2015-05-25 | 2020-10-16 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
CN108897642B (zh) * | 2018-06-27 | 2020-11-27 | 清华大学 | 持久性事务内存***中日志机制的优化方法及装置 |
-
2018
- 2018-11-30 CN CN201811457572.7A patent/CN109542356B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101165667A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 用于在数据处理***中管理地址转换的方法和装置 |
CN103985415A (zh) * | 2013-02-10 | 2014-08-13 | Lsi公司 | 基于保留漂移历史的非易失性存储器读取阈值最优化 |
Also Published As
Publication number | Publication date |
---|---|
CN109542356A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10353812B2 (en) | Apparatus and method of wear leveling of storage class memory by recording input group to output group address mapping | |
US7228381B2 (en) | Storage system using fast storage device for storing redundant data | |
US6859888B2 (en) | Data storage array apparatus storing error information without delay in data access, and method, program recording medium, and program for the same | |
CN107784121B (zh) | 一种基于非易失内存的日志文件***的小写优化方法 | |
CN111475508B (zh) | 一种优化叶子节点合并操作的高效索引方法 | |
US11237758B2 (en) | Apparatus and method of wear leveling for storage class memory using address cache | |
US20120131264A1 (en) | Storage device | |
CN111414320B (zh) | 基于日志文件***的非易失内存构建磁盘cache的方法及*** | |
CN107861884B (zh) | 一种提高nand闪存中跨页存储地址映射效率的方法 | |
US11307997B2 (en) | Logical to physical data storage mapping | |
CN113360093A (zh) | 内存***和设备 | |
CN109165321A (zh) | 一种基于非易失内存的一致性哈希表构建方法和*** | |
WO2022033269A1 (zh) | 数据处理的方法、设备及*** | |
KR102471966B1 (ko) | 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법 | |
CN109542356B (zh) | 面向容错的nvm持久化过程冗余信息的压缩方法和装置 | |
CN108334457B (zh) | 一种io处理方法及装置 | |
CN101118519A (zh) | 对缓存内容进行保护的方法和装置以及缓存控制器 | |
US11989090B2 (en) | Method and system for ensuring failure atomicity in non-volatile memory | |
CN104811647B (zh) | 面向视频流数据的分布式存储***磁盘双分区写入方法 | |
US11138110B1 (en) | Data management for memory devices | |
CN110968271B (zh) | 一种高性能数据存储方法、***与装置 | |
US11704246B2 (en) | Memory system for maintaining data consistency and operation method thereof | |
CN104615505B (zh) | 一种远程复制记录数据变化的方法 | |
CN110134548B (zh) | 一种分布式内存大数据处理***的快速重启方法 | |
Mao et al. | A DAX-enabled mmap mechanism for log-structured in-memory file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |