CN108897642B - 持久性事务内存***中日志机制的优化方法及装置 - Google Patents
持久性事务内存***中日志机制的优化方法及装置 Download PDFInfo
- Publication number
- CN108897642B CN108897642B CN201810676267.0A CN201810676267A CN108897642B CN 108897642 B CN108897642 B CN 108897642B CN 201810676267 A CN201810676267 A CN 201810676267A CN 108897642 B CN108897642 B CN 108897642B
- Authority
- CN
- China
- Prior art keywords
- data
- log
- memory
- persistent
- transaction
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 191
- 230000002085 persistent effect Effects 0.000 title claims abstract description 129
- 230000007246 mechanism Effects 0.000 title claims abstract description 57
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000007906 compression Methods 0.000 claims description 31
- 230000006835 compression Effects 0.000 claims description 31
- 238000013144 data compression Methods 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 4
- 239000002699 waste material Substances 0.000 abstract description 6
- 238000005457 optimization Methods 0.000 description 14
- 230000002688 persistence Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000005299 abrasion Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241000552094 Mnemosyne Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3072—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
- G06F11/3082—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved by aggregating or compressing the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种持久性事务内存***中日志机制的优化方法及装置,其中,方法包括以下步骤:检测事务的当前写操作的类型;如果类型为对持久性内存中已有数据的更新操作,则通过日志机制保证崩溃时存在可恢复的数据副本;如果类型为向事务中新分配区域添加数据的分配操作,则将新数据直接写入到新分配的数据地址,无需提前写日志的操作。该方法可以根据写操作的类型分别进行日志优化,有效减少了持久性内存设备的写磨损,从而有效提升***的性能和耐久性,并减少内存空间浪费,简单易实现。
Description
技术领域
本发明涉及持久性内存存储技术领域,特别涉及一种持久性事务内存***中日志机制的优化方法及装置。
背景技术
相关技术中,现有持久性事务内存***的日志机制带来了过多的写操作,主要有以下两个原因:
1)现有***没有区分事务中不同类型的写操作,即无论是对内存中已有数据的更新操作还是向事务中新分配区域添加数据的写操作。现有***都利用相同的日志机制保证数据的一致性。然而日志操作不仅加快持久性内存设备的磨损速度,而且还需要使用CLFLUSH等指令对缓存中的数据进行强制刷新,增加事务的延迟,造成***性能的下降。
2)现有***使用相同的数据类型(通常是64位整型)将更新操作的地址和数据等字段完整地持久化到日志中,即使这些字段存储的数据通常可以用更小的内存空间存储。这产生了大量的日志写操作,严重加快了持久性内存设备的磨损速度。
发明内容
本申请是基于发明人对以下问题的认识和发现作出的:
近年来,新型NVM(Non Volatile Memory,非易失性存储器)吸引了学术界和工业界的广泛关注.典型的非易失存储器包括PCM(Pulse Code Modulation,脉冲编码调制)、STTRAM(Shared Transistor Technology Random Access Memory,写入数据的自旋矩传输方法)、ReRAM和3D XPoint,它们不仅具有接近传统内存材料DRAM(Dynamic Random AccessMemory,随机访问存储器)的随机访问性能,并且在内存层次提供了数据持久性的保证。因此,基于NVM的持久性内存打破了传统易失性内存和持久性外存之间的界限,为设计更加高效的存储***提供了新的机遇。
虽然持久性内存保证了数据的持久性,但是CPU(Central Processing Unit,中央处理器)缓存依然是易失性的,并且它会打乱数据写回到持久性内存的顺序,这导致持久性内存上的数据在***突然崩溃时可能处于不一致的中间状态。为了解决这个问题,并且充分发挥出持久性内存良好的性能优势,提出了持久性事务内存***。它们通过日志机制保证事务的原子性和一致性。其中,Mnemosyne和NVML分别是基于redolog和undo log日志机制的代表性事务内存***.它们在更新原数据前,先将新/旧数据持久化到日志中,从而在***崩溃时根据日志中存在的数据副本将其恢复到一致性的状态。这些事务***不仅为应用程序访问持久性内存提供数据一致性的保证,而且往往通过用户态的接口直接访问持久性内存上的数据,降低持久化操作引起的软件延迟。
虽然持久性内存具有集成度高、静态能耗低和数据持久性等优势,但它也存在一定的局限性。首先,持久性内存往往具有读写不对称性,写延迟远高于读延迟。例如,PCM的读延迟与DRAM相似,而写延迟几乎是DRAM的10倍。此外,持久性内存还具有耐久性的问题。例如,PCM只能承受住106-108次写操作,STT-RAM虽然在理论上具有较高的耐受性,但在实际测试中发现,它最多也只能容忍1012次写操作,因而无法达到理论中的期望值。因此,如何减少对持久性内存的写操作,从而减轻写操作带来的延迟和磨损是持久性事务内存***中亟待解决的重要问题。
因此,对于持久性事务内存***中日志机制的管理方法,为了满足在性能、内存使用率和损耗均衡等多方面的需求,需要对持久性事务内存***的日志机制进行进一步的考虑和优化,是本领域需要解决的一个技术问题。
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种持久性事务内存***中日志机制的优化方法,该方法可以有效提升***的性能和耐久性,并减少内存空间浪费,简单易实现。
本发明的另一个目的在于提出一种持久性事务内存***中日志机制的优化装置。
为达到上述目的,本发明一方面实施例提出了一种持久性事务内存***中日志机制的优化方法,包括以下步骤:检测事务的当前写操作的类型;如果所述类型为对持久性内存中已有数据的更新操作,则通过日志机制保证崩溃时存在可恢复的数据副本;如果所述类型为向事务中新分配区域添加数据的分配操作,则将新数据直接写入到新分配的数据地址,无需提前写日志的操作。
本发明实施例的持久性事务内存***中日志机制的优化方法,根据写操作的类型分别进行日志优化,有效减少了持久性内存设备的写磨损,提升了持久性事务内存***的整体性能,实现对持久性内存介质更有效的利用和保护,从而有效提升***的性能和耐久性,并减少内存空间浪费,简单易实现。
另外,根据本发明上述实施例的持久性事务内存***中日志机制的优化方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述检测事务写操作的类型,进一步包括:判断所述当前写操作的内存地址是否存在于维护的地址集合中;如果存在于所述维护的地址集合中,则所述当前写操作为所述更新操作,否则为所述分配操作。
进一步地,在本发明的一个实施例中,还包括:判断所述当前写操作是否对内存中已有数据作修改或向事务新分配的区域添加数据;如果为对所述内存中已有数据作修改,则通过重做日志保证一致性;如果为向所述事务新分配的区域添加数据时,则直接在事务提交时将数据持久化到所述新分配的区域。
进一步地,在本发明的一个实施例中,还包括:通过压缩算法将日志数据进行压缩,以减少写到持久性内存中日志区的数据总量。
进一步地,在本发明的一个实施例中,所述通过压缩算法将日志数据进行压缩,进一步包括:通过数据压缩算法对所有需要持久化到日志中的数据进行重新编码,以表示成比特位信息中具有目标前导0的另一个整数;通过所述压缩算法将比特位全为0的字节舍弃,并用预设内存空间存储剩余的字节信息,并持久化到所述内存中日志区。
为达到上述目的,本发明另一方面实施例提出了一种持久性事务内存***中日志机制的优化装置,包括:检测模块,用于检测事务的当前写操作的类型;确保模块,用于在所述类型为对持久性内存中已有数据的更新操作时,通过日志机制保证崩溃时存在可恢复的数据副本;写入模块,用于在所述类型为向事务中新分配区域添加数据的分配操作时,将新数据直接写入到新分配的数据地址,无需提前写日志的操作。
本发明实施例的持久性事务内存***中日志机制的优化装置,根据写操作的类型分别进行日志优化,有效减少了持久性内存设备的写磨损,提升了持久性事务内存***的整体性能,实现对持久性内存介质更有效的利用和保护,从而有效提升***的性能和耐久性,并减少内存空间浪费,简单易实现。
另外,根据本发明上述实施例的持久性事务内存***中日志机制的优化装置还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述检测模块进一步用于判断所述当前写操作的内存地址是否存在于维护的地址集合中,并在存在于所述维护的地址集合中时,所述当前写操作为所述更新操作,否则为所述分配操作。
进一步地,在本发明的一个实施例中,还包括:判断模块,用于判断所述当前写操作是否对内存中已有数据作修改或向事务新分配的区域添加数据,并在为对所述内存中已有数据作修改时,通过重做日志保证一致性,且在为向所述事务新分配的区域添加数据时,直接在事务提交时将数据持久化到所述新分配的区域。
进一步地,在本发明的一个实施例中,还包括:压缩模块,用于通过压缩算法将日志数据进行压缩,以减少写到持久性内存中日志区的数据总量。
进一步地,在本发明的一个实施例中,所述压缩模块进一步用于通过数据压缩算法对所有需要持久化到日志中的数据进行重新编码,以表示成比特位信息中具有目标前导0的另一个整数,并通过所述压缩算法将比特位全为0的字节舍弃,并用预设内存空间存储剩余的字节信息,并持久化到所述内存中日志区。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的持久性事务内存***中日志机制的优化方法的流程图;
图2为根据本发明一个实施例的事务执行的流程图;
图3为根据本发明一个实施例的持久性事务内存中分配操作感知的日志机制优化方法流程图;
图4为根据本发明一个实施例的持久性事务内存中基于压缩算法的日志写入优化方法流程图;
图5为根据本发明一个实施例的持久性事务内存***架构图;
图6为根据本发明一个实施例的持久性事务内存***中日志机制的优化装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参照附图描述根据本发明实施例提出的持久性事务内存***中日志机制的优化方法及装置,首先将参照附图描述根据本发明实施例提出的持久性事务内存***中日志机制的优化方法。
图1是本发明一个实施例的持久性事务内存***中日志机制的优化方法的流程图。
如图1所示,该持久性事务内存***中日志机制的优化方法包括以下步骤:
在步骤S101中,检测事务的当前写操作的类型。
可以理解的是,本发明实施例通过分配操作感知的日志优化技术,动态区分出事务中不同类型的写操作,并分别使用不同的日志机制保证它们的一致性,避免向事务中新分配区域添加新数据的写操作产生的日志开销。
在本发明的一个实施例中,检测事务写操作的类型,进一步包括:判断当前写操作的内存地址是否存在于维护的地址集合中;如果存在于维护的地址集合中,则当前写操作为更新操作,否则为分配操作。
可以理解的是,事务的写操作主要包含两个类型:对持久性内存中已有数据的更新操作;向事务中新分配区域添加新数据的分配操作。在事务执行过程中需要区分出分配操作和更新操作。具体方法是:***为在其中发生的所有写操作维护了一个地址集合,当应用程序在事务中调用***提供的内存分配接口申请某块持久性内存区域时,***会将返回的数据区域地址记录在这个地址集合中。当事务中有写操作发生时,***会判断当前发生写操作的内存地址是否存在于维护的地址集合中,如果是,则说明当前操作是更新操作,否则就判定其为分配操作。
进一步地,在本发明的一个实施例中,本发明实施例的方法还包括:判断当前写操作是否对内存中已有数据作修改或向事务新分配的区域添加数据;如果为对内存中已有数据作修改,则通过重做日志保证一致性;如果为向事务新分配的区域添加数据时,则直接在事务提交时将数据持久化到新分配的区域。
可以理解的是,当事务中的写操作是对内存中已有数据作修改时,使用重做日志保证它的一致性。而当事务中的写操作是向该事务新分配的区域添加数据时,直接在事务提交时将数据持久化到新分配的数据区。
在步骤S102中,如果类型为对持久性内存中已有数据的更新操作,则通过日志机制保证崩溃时存在可恢复的数据副本。
可以理解的是,日志机制只是用于保证被更新的旧数据在***崩溃时存在一个可恢复的数据副本,也就是说,对于持久性内存中已有数据的更新操作,***需要利用日志机制保证其崩溃时存在可恢复的数据副本。
进一步地,如图2所示,更新事务的执行步骤可以如下描述:
S1:事务开始;
S2:将要写入内存中的新数据写入到易失性内存的写集合中;
S3:根据写集合中记录的该新数据即将写入的内存地址,判断之前是否写过同一内存地址,如果是,则执行S4,否则执行S6;
S4:将新数据用合适的压缩算法进行压缩;
S5:将压缩后的数据写入到内存中的日志缓冲区,日志缓冲区被划分成若干个chunk,当一个chunk被填满之后,该chunk中的日志数据会被刷新到持久性内存的日志区;
S6:确保日志缓冲区中的所有数据都已持久化到非易失内存的日志区,将写集合中记录的所有数据持久化到非易失内存的数据区;
S7:事务结束。
在步骤S103中,如果类型为向事务中新分配区域添加数据的分配操作,则将新数据直接写入到新分配的数据地址,无需提前写日志的操作。
可以理解的是,对于第一次写入的新数据,不需要依赖日志机制来保证数据的一致性,也就说,对于向事务中新分配区域添加新数据的分配操作,***只需要将新数据直接写入到新分配的数据地址,并不需要提前写日志的操作。
具体而言,对于更新操作,***需要利用日志机制保证其崩溃时存在可恢复的数据副本.然而对于分配操作,***只需要将新数据直接写入到新分配的数据地址,并不需要提前写日志的操作,因为这部分数据之前在***中并不存在,即使***在事务提交前突然崩溃,也不会影响其一致性状态。
***中维护了一个地址集合,即当应用程序每一次调用持久性事务内存***的内存管理模块提供的内存分配接口时,***都会将返回的内存地址记录在该地址集合中。当事务中有写操作发生时,***会比较该写操作发生的内存地址和地址集合中记录的地址,如果在地址集合中记录了相同的内存地址,则说明该写操作是一个对内存中已有数据的更新操作。
如图3所示,当某一应用程序需要更新内存中的旧数据或向内存中添加新数据时,根据本发明提出的优化方法,主要包括如下步骤:
S1:应用程序调用持久性事务内存***提供的事务接口开始执行写操作;
S2:事务在执行过程中,将所有写操作维持在一个易失性的写集合中;
S3:比较该写操作发生的内存地址和地址集合中记录的地址,判断在地址集合中是否记录了相同的内存地址,如果是,则执行S4,否则不进行任何操作。
S4:将写集合存储的新数据value和发生写操作的内存地址addr等信息写入到持久性内存中的日志区。
综上,由于分配操作产生的数据没有被写入到日志中,这部分的日志开销被消除,因此减少了事务的持久化操作,从而降低了持久性内存事务内存***事务操作的写延迟,提高了持久性事务内存***的总体性能,并且由于日志数据量的减少,同时又增加了持久性内存设备的耐久性。
进一步地,在本发明的一个实施例中,本发明实施例的方法还包括:通过压缩算法将日志数据进行压缩,以减少写到持久性内存中日志区的数据总量。
可以理解的是,本发明实施例基于压缩算法的日志优化技术,即将日志数据进行压缩后再写入到日志中,从而减少日志操作的写开销。对于每个写操作,日志中记录的信息主要包含该操作更新的内存地址和将要写入的新数据等信息,它们一般都是8字节的整型数据,而这8个字节中的若干字节全为0的情况普遍存在。方法就是,利用合适的压缩算法将日志数据进行压缩以减少写到持久性内存中日志区的数据总量,在保证原有数据副本的同时减少对持久性内存的写操作。
进一步地,在本发明的一个实施例中,通过压缩算法将日志数据进行压缩,进一步包括:通过数据压缩算法对所有需要持久化到日志中的数据进行重新编码,以表示成比特位信息中具有目标前导0的另一个整数;通过压缩算法将比特位全为0的字节舍弃,并用预设内存空间存储剩余的字节信息,并持久化到内存中日志区。
可以理解的是,选取一种合适的数据压缩算法,对所有需要持久化到日志中的数据进行重新编码,将其表示成比特位信息中具有更多前导0的另一个整数。然后利用选取的压缩算法尽可能地将比特位全为0的字节舍弃,用更小的内存空间来存储剩余的字节信息,最后持久化到内存中的日志区。
具体而言,日志数据是为了确保***突然崩溃后,***中存在可恢复的数据副本,即根据日志文件使***重新回到一致性状态。除了***崩溃后的恢复过程,***不会再次访问已经写入的日志数据。每个日志条目主要包含新数据value,该新数据即将写入的内存地址addr等字段,这些字段都是8个字节的整型数据,而这8个字节中,很大概率上存在若干字节的比特位信息全为0的情况。本发明实施例利用压缩算法将8个字节中比特位信息为全0的字节舍弃,然后再将剩下的字节写入到持久性内存中的日志区。
如图4所示,持久性事务内存中基于压缩算法的日志写入优化方法流程,具体包括:
S1:将事务的写集合中的value,addr等字段提取出来,并分别将其表示成64位的二进制形式;
S2:判断这些字段的值是否是非负整数,如果是,则执行S3,否则执行S4;
S3:将符号位移动到最后,其它位整体左移一位;
S4:将二进制补码的符号位放到补码的最后,其它位整体左移一位,然后将所有数据位按位求反,而符号位保持不变;
S5:将上一步得到的结果分别按照7位一组进行划分,然后跟~0x7f做与操作;
S6:分析S5得到的结果,如果发现除低7位外的其它位是否为全0,如果是,则将最后的8位提取出来得到结果,并退出循环,终止算法,否则继续执行S7;
S7:将低7位取出来,并在倒数第8位上补一个1(0x80),将结果提取出来;
S8:将S3,S4得到的结果右移7位,左边用0填充,回到S5;
S9:将以上步骤中得到的所有结果进行整合,就得到了字节中无全0比特位的数据。
S10:将得到的数据写入内存中的日志缓冲区,并持久化到非易失内存的日志区。
在本发明的实施例中,通过执行以上步骤,一个8字节的数据最终就变成了一个不大于8字节的数据。因此,最终在持久性内存中的日志区域中存储的是压缩后的日志数据。日志数据经压缩后,有效地减少了日志操作产生的数据总量,从而提高了持久性内存设备的耐久性。
下面将对基于持久性事务内存***中日志机制的优化方法的***进行赘述。
如图5所示,***架构中通过持久内存文件***划分出一块固定大小的持久内存区域,位于用户空间的持久性事务内存函数库向上层应用程序提供访问接口,并通过直接内存访问的指令对底层的持久内存区域进行读写访问。函数库包括一个底层持久化模块和内存管理模块,并发控制模块以及日志模块等,以上模块都是基于底层持久化模块提供底层持久性内存支持,该模块为其他的模块提供底层的持久化指令,主要包括CLFLUSH和MOVNT指令。
日志模块采用了基于重做日志的日志机制,它在事务执行过程中先将新数据维持在易失性的写集合中,只有在事务提交时会触发持久化操作。此外,它利用CLFLUSH等软件指令保证持久化操作的顺序性。
并发控制模块可以解决事务之间的冲突,通过日志模块和并发控制模块保证事务的原子性,一致性,隔离性和持久性。
另外,***通过文件***的mmap接口,将持久性内存区域映射到进程某个固定的虚拟地址,然后利用内存管理模块管理映射出的内存区域,保证内存分配、释放操作的持久性和一致性。
日志模块中使用了分配操作感知的日志优化方法。该方法在事务运行过程中动态识别出更改内存中已有数据的更新操作和向内存中新分配区域添加新数据的分配操作。对于分配操作,它绕开了日志操作,直接将新数据写到新分配的地址上,减少了分配操作的日志开销。
进一步地,日志模块中使用了基于压缩算法的日志优化方法。该方法在将日志数据写入到持久性内存区域之前,先利用压缩算法将日志数据进行压缩,减少写入日志的数据大小,从而减少对持久性内存设备的写磨损。
综上,本发明实施例解决了事务内存***中因为日志机制导致的性能下降及写放大问题,由于分配操作产生的数据没有被写入到日志中,这部分的日志开销被消除,因此减少了事务的持久化操作,从而降低了持久性内存事务内存***事务操作的写延迟,提高了持久性事务内存***的总体性能,并且由于日志数据量的减少,同时又增加了持久性内存设备的耐久性。同时,通过压缩算法减少了写入到持久性内存中的日志数据量,减少了对持久性内存设备的写操作,从而提高持久性内存的耐久性,并减少了持久性内存介质的空间浪费。
根据本发明实施例提出的持久性事务内存***中日志机制的优化方法,通过使用对不同类型的写操作使用不同的日志机制来保证一致性,以及对日志数据进行压缩两种方式,减少对持久性内存设备的写操作次数和写操作产生的日志数据量来降低持久性事务内存的写延迟和提高持久性内存的耐久性,从而提高持久性事务内存***的整体性能和可靠性。
其次参照附图描述根据本发明实施例提出的持久性事务内存***中日志机制的优化装置。
图6是本发明一个实施例的持久性事务内存***中日志机制的优化方装置的结构示意图
如图6所示,该持久性事务内存***中日志机制的优化方装置10包括:检测模块100、确保模块200和写入模块300。
其中,检测模块100用于检测事务的当前写操作的类型。确保模块200用于在类型为对持久性内存中已有数据的更新操作时,通过日志机制保证崩溃时存在可恢复的数据副本。写入模块300用于在类型为向事务中新分配区域添加数据的分配操作时,将新数据直接写入到新分配的数据地址,无需提前写日志的操作。本发明实施例的装置10根据写操作的类型分别进行日志优化,有效减少了持久性内存设备的写磨损,从而有效提升***的性能和耐久性,并减少内存空间浪费,简单易实现。
进一步地,在本发明的一个实施例中,检测模块100进一步用于判断当前写操作的内存地址是否存在于维护的地址集合中,并在存在于维护的地址集合中时,当前写操作为更新操作,否则为分配操作。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:判断模块。其中,判断模块用于判断当前写操作是否对内存中已有数据作修改或向事务新分配的区域添加数据,并在为对内存中已有数据作修改时,通过重做日志保证一致性,且在为向事务新分配的区域添加数据时,直接在事务提交时将数据持久化到新分配的区域。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:压缩模块。其中,压缩模块用于通过压缩算法将日志数据进行压缩,以减少写到持久性内存中日志区的数据总量。
进一步地,在本发明的一个实施例中,压缩模块进一步用于通过数据压缩算法对所有需要持久化到日志中的数据进行重新编码,以表示成比特位信息中具有目标前导0的另一个整数,并通过压缩算法将比特位全为0的字节舍弃,并用预设内存空间存储剩余的字节信息,并持久化到内存中日志区。
需要说明的是,前述对持久性事务内存***中日志机制的优化方法实施例的解释说明也适用于该实施例的持久性事务内存***中日志机制的优化装置,此处不再赘述。
根据本发明实施例提出的持久性事务内存***中日志机制的优化装置,通过使用对不同类型的写操作使用不同的日志机制来保证一致性,以及对日志数据进行压缩两种方式,减少对持久性内存设备的写操作次数和写操作产生的日志数据量来降低持久性事务内存的写延迟和提高持久性内存的耐久性,从而提高持久性事务内存***的整体性能和可靠性。
此外,本发明的实施例以一个持久性事务内存***为背景,分析现有持久性事务内存***的方法特点,给出持久性内存事务***中日志机制的两种优化方法。并通过具体的实施步骤,给出两种优化方法实施的具体案例并分析其改善效果,尽管以上发明实施案例已经示出和描述了本发明的实施例,可以理解的是上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种持久性事务内存***中日志机制的优化方法,其特征在于,包括以下步骤:
检测事务的当前写操作的类型;
如果所述类型为对持久性内存中已有数据的更新操作,则通过日志机制保证崩溃时存在可恢复的数据副本;以及
如果所述类型为向事务中新分配区域添加数据的分配操作,则将新数据直接写入到新分配的数据地址,无需提前写日志的操作。
2.根据权利要求1所述的持久性事务内存***中日志机制的优化方法,其特征在于,所述检测事务写操作的类型,进一步包括:
判断所述当前写操作的内存地址是否存在于维护的地址集合中;
如果存在于所述维护的地址集合中,则所述当前写操作为所述更新操作,否则为所述分配操作。
3.根据权利要求1所述的持久性事务内存***中日志机制的优化方法,其特征在于,还包括:
判断所述当前写操作是否对内存中已有数据作修改或向事务新分配的区域添加数据;
如果为对所述内存中已有数据作修改,则通过重做日志保证一致性;
如果为向所述事务新分配的区域添加数据时,则直接在事务提交时将数据持久化到所述新分配的区域。
4.根据权利要求1所述的持久性事务内存***中日志机制的优化方法,其特征在于,还包括:
通过压缩算法将日志数据进行压缩,以减少写到持久性内存中日志区的数据总量。
5.根据权利要求4所述的持久性事务内存***中日志机制的优化方法,其特征在于,所述通过压缩算法将日志数据进行压缩,进一步包括:
通过数据压缩算法对所有需要持久化到日志中的数据进行重新编码,以表示成比特位信息中具有目标前导0的另一个整数;
通过所述压缩算法将比特位全为0的字节舍弃,并用预设内存空间存储剩余的字节信息,并持久化到所述内存中日志区。
6.一种持久性事务内存***中日志机制的优化装置,其特征在于,包括:
检测模块,用于检测事务的当前写操作的类型;
确保模块,用于在所述类型为对持久性内存中已有数据的更新操作时,通过日志机制保证崩溃时存在可恢复的数据副本;以及
写入模块,用于在所述类型为向事务中新分配区域添加数据的分配操作时,将新数据直接写入到新分配的数据地址,无需提前写日志的操作。
7.根据权利要求6所述的持久性事务内存***中日志机制的优化装置,其特征在于,所述检测模块进一步用于判断所述当前写操作的内存地址是否存在于维护的地址集合中,并在存在于所述维护的地址集合中时,所述当前写操作为所述更新操作,否则为所述分配操作。
8.根据权利要求6所述的持久性事务内存***中日志机制的优化装置,其特征在于,还包括:
判断模块,用于判断所述当前写操作是否对内存中已有数据作修改或向事务新分配的区域添加数据,并在为对所述内存中已有数据作修改时,通过重做日志保证一致性,且在为向所述事务新分配的区域添加数据时,直接在事务提交时将数据持久化到所述新分配的区域。
9.根据权利要求6所述的持久性事务内存***中日志机制的优化装置,其特征在于,还包括:
压缩模块,用于通过压缩算法将日志数据进行压缩,以减少写到持久性内存中日志区的数据总量。
10.根据权利要求9所述的持久性事务内存***中日志机制的优化装置,其特征在于,所述压缩模块进一步用于通过数据压缩算法对所有需要持久化到日志中的数据进行重新编码,以表示成比特位信息中具有目标前导0的另一个整数,并通过所述压缩算法将比特位全为0的字节舍弃,并用预设内存空间存储剩余的字节信息,并持久化到所述内存中日志区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810676267.0A CN108897642B (zh) | 2018-06-27 | 2018-06-27 | 持久性事务内存***中日志机制的优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810676267.0A CN108897642B (zh) | 2018-06-27 | 2018-06-27 | 持久性事务内存***中日志机制的优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897642A CN108897642A (zh) | 2018-11-27 |
CN108897642B true CN108897642B (zh) | 2020-11-27 |
Family
ID=64346283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810676267.0A Active CN108897642B (zh) | 2018-06-27 | 2018-06-27 | 持久性事务内存***中日志机制的优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897642B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542356B (zh) * | 2018-11-30 | 2021-12-31 | 中国人民解放军国防科技大学 | 面向容错的nvm持久化过程冗余信息的压缩方法和装置 |
CN110377531B (zh) * | 2019-07-19 | 2021-08-10 | 清华大学 | 基于日志结构的持久性内存存储引擎装置及控制方法 |
CN110515705B (zh) * | 2019-08-07 | 2022-03-11 | 上海交通大学 | 可扩展的持久性事务内存及其工作方法 |
CN111638996B (zh) * | 2020-05-14 | 2023-04-11 | 华中科技大学 | 一种保证非易失内存中故障原子性的方法及*** |
CN112347059B (zh) * | 2020-09-04 | 2023-12-22 | 北京浪潮数据技术有限公司 | 存储***数据缩减业务日志管理方法及相关组件 |
CN113485946A (zh) * | 2020-11-04 | 2021-10-08 | 中兴通讯股份有限公司 | 持久性内存键值***及其操作方法 |
CN112632624B (zh) * | 2020-12-31 | 2022-10-18 | 中孚安全技术有限公司 | 一种存储块加解密方法、***、终端及存储介质 |
CN114398296B (zh) * | 2022-03-24 | 2022-09-27 | 荣耀终端有限公司 | 用于问题定位的方法和终端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744961A (zh) * | 2014-01-06 | 2014-04-23 | 清华大学 | 用可重构的文件***目录树提高非易失性存储寿命的方法 |
CN104778126A (zh) * | 2015-04-20 | 2015-07-15 | 清华大学 | 非易失性主存中事务数据存储优化方法及*** |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN105404673A (zh) * | 2015-11-19 | 2016-03-16 | 清华大学 | 基于nvram的高效文件***构建方法 |
CN106874211A (zh) * | 2015-12-14 | 2017-06-20 | 株式会社东芝 | 存储器***及非易失性存储器的控制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017012667A1 (en) * | 2015-07-22 | 2017-01-26 | Huawei Technologies Co., Ltd. | Hardware transactional memory in non volatile memory with log and no lock |
US10204022B2 (en) * | 2016-08-15 | 2019-02-12 | Oracle International Corporation | Efficient memory management for persistent memory |
-
2018
- 2018-06-27 CN CN201810676267.0A patent/CN108897642B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744961A (zh) * | 2014-01-06 | 2014-04-23 | 清华大学 | 用可重构的文件***目录树提高非易失性存储寿命的方法 |
CN104778126A (zh) * | 2015-04-20 | 2015-07-15 | 清华大学 | 非易失性主存中事务数据存储优化方法及*** |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN105404673A (zh) * | 2015-11-19 | 2016-03-16 | 清华大学 | 基于nvram的高效文件***构建方法 |
CN106874211A (zh) * | 2015-12-14 | 2017-06-20 | 株式会社东芝 | 存储器***及非易失性存储器的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108897642A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897642B (zh) | 持久性事务内存***中日志机制的优化方法及装置 | |
US10013177B2 (en) | Low write amplification in solid state drive | |
US10884630B2 (en) | Storage system | |
US9720717B2 (en) | Virtualization support for storage devices | |
US9342256B2 (en) | Epoch based storage management for a storage device | |
US9146688B2 (en) | Advanced groomer for storage array | |
US9513815B2 (en) | Memory management based on usage specifications | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
CN105718530B (zh) | 文件存储***及其文件存储控制方法 | |
US20110246742A1 (en) | Memory pooling in segmented memory architecture | |
KR20100081880A (ko) | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 | |
US11907129B2 (en) | Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor | |
US11797207B2 (en) | Base and compressed difference data deduplication | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
KR20110007360A (ko) | 스크래치 패드 메모리 관리 장치 및 방법 | |
CN116364148A (zh) | 一种面向分布式全闪存储***的磨损均衡方法及*** | |
US10635614B2 (en) | Cooperative overlay | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
US11226738B2 (en) | Electronic device and data compression method thereof | |
US11579786B2 (en) | Architecture utilizing a middle map between logical to physical address mapping to support metadata updates for dynamic block relocation | |
US10853257B1 (en) | Zero detection within sub-track compression domains | |
US12039193B2 (en) | Apparatus, method and computer program for managing memory page updates within non-volatile memory | |
US11487456B1 (en) | Updating stored content in an architecture utilizing a middle map between logical and physical block addresses | |
US20220391317A1 (en) | Systems, methods, and apparatus for wear-level aware memory allocation | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same |
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 |