科学的规划

PDF
科学的规划/2015年/文章

研究文章|开放获取

体积 2015年 |文章的ID 398369年 | https://doi.org/10.1155/2015/398369

Wenzhe张Kai,米克尔Lujan,小平王,徐, Write-Combined日志:一个优化日志在NVRAM一致性”,科学的规划, 卷。2015年, 文章的ID398369年, 13 页面, 2015年 https://doi.org/10.1155/2015/398369

Write-Combined日志:一个优化日志在NVRAM一致性

学术编辑器:Wan Fokkink
收到了 2015年7月31日
修改后的 2015年10月08
接受 2015年11月18日
发表 2015年12月27日

文摘

非易失存储器(例如,相变内存)模糊了记忆和存储之间的边界,它可以极大地促进内存持久数据结构的建设。数据结构可以直接在NVRAM处理和存储。保持持久数据的一致性,日志是一个广泛采用的机制。然而,日志介绍write-twice开销。介绍了一种优化write-combined日志减少写入NVRAM日志。利用速读的NVRAM byte-addressable的特性,我们可以执行一个阅读比较它们操作之前写,因此问题写在一个细粒度的方法。我们测试我们的系统基准套邮票包含实际的应用程序。实验结果表明,我们的系统可以减少写入NVRAM 33% -34%,它可以帮助延长寿命的NVRAM和提高性能。一般我们的系统可以提高性能的7% - -11%。

1。介绍

新兴的非易失性内存(NVRAM)技术(1)模糊记忆和存储之间的边界byte-addressability和快速访问类似DRAM和不挥发性类似于磁盘。系统与NVRAM附加内存总线被广泛提倡(2)这将极大地促进建设内存持久数据结构(3]。在这样的系统中,持久数据结构驻留在NVRAM创建和修改,而不是在一个格式,转换为另一种格式是持久的4]。大量的性能优势可以获得从这个统一的状态,尤其是对数据库的应用(4]。然而,持久数据的一致性是需要维护的软件或硬件故障。否则数据保存在NVRAM可能留在一个无效的中间状态后,系统重新启动并不是可重用。这也是一个经典的问题,文件系统和数据库。

1显示了一个示例数据的一致性,如果我们有一个数据结构的人,其中包含两个字段:姓名和年龄。它存储在NVRAM及其初始状态图1所示。如果我们想修改结构改变存储别人的信息,如名称:XYZ,年龄:28日,我们必须更新两个字段分别(步骤1和步骤2)由于硬件限制。如果系统崩溃之后我们之前完成步骤1和步骤2,虽然数据结构中的信息不会丢失电脑重新启动后,现在是错的,而不是可复用(国家虚线框所示)。这是NVRAM数据一致性的问题。

日志(5)是一种广泛采用的机制来保证持久数据的一致性。这样的机制,每一个一致的非易失性媒体的更新将导致额外的写道。例如,在图1在写前日志记录,更新操作(a)第一次写日志,等到日志是持久的,然后(b)根据日志更新相应位置。因此,如果发生故障时的操作,我们可以恢复数据结构一致的状态。write-twice问题[5)将导致降解性能和更快的穿着的NVRAM (6]。

write-twice问题一直在研究[5长时间在传统的文件系统和数据库。最近一些工作(9)建议使用非易失性内存作为数据缓冲区和日志(日志)地区在次要的非易失性媒体的面前。该方法分离两个写入不同的目的地:一个写入非易失性内存日志和二级存储的另一个写真正的更新。用这种方法可以提高性能通过减少写入二级存储通常二级存储比非易失性内存要慢得多。然而,这种解决方案仅适用于当我们主要在二级存储器存储数据。正如我们之前介绍的,NVRAM允许持久数据直接没有任何转换。在这个新的上下文write-twice问题仍然存在,以前从未被研究过。另一项研究解决write-twice问题导致日志结构文件系统的趋势(10]。在这样的系统中,所有数据以日志的形式出现。只有对每一个写日志更新。然而,这个系统可能被困到大型和复杂的数据索引,因此它会淡出主流使用的问题。

首先,本文提出了write-combination日志,一个新颖的方法来减少写入非易失性内存,同时保持数据存储在它的一致性。通过利用NVRAM byte-addressable和速读的属性,我们可以每次写前执行阅读比较它们操作,从而消除不必要的写道。我们也可以结合两个32位的修改成64位写NVRAM减少写道。非易失性内存有限的带宽和一生11),减少写入的数量是非常有益的。

本文的主要工作如下:(我)非易失性堆基于NVRAM为上层应用程序提供事务接口来访问非易失性数据;(2)小说write-combination机制来减少写入NVRAM不牺牲数据一致性。所有的工作都是在操作系统和图书馆底层硬件水平没有任何变化。

本文的其余部分组织如下:我们给的背景信息和我们的动力部分2。部分34展示我们的详细设计与实现和实验结果部分所示5。节讨论相关工作6和部分7总结道。

2。背景和动机

2.1。非易失存储器

非易失性内存(NVRAM),或者内存存储类(SCM) (4),或持久的记忆1),最近发展迅速。相变存储器(PCM)是一个代表,现在可作为原型。它提供特性byte-addressablility、快速访问和非易失性。此外,它是高度可伸缩的密度。随着多层细胞(多层陶瓷)技术(12],PCM可以非常大的容量。表1显示了一个比较PCM和DRAM在一些关键特性。从表中我们可以看到,PCM的读取速度是几乎相同的DRAM而写的速度要慢得多。这种不对称的访问速度被杠杆在许多以前作品(13在加速写入PCM建筑水平。有限的一生是PCM的另一个问题。提出了许多耗损均衡机制解决这个问题(14]。也有一些研究15,16]在硬件层面上减少写入PCM延长它的生命周期。最重要的是,加速其写入速度和延长它的生命周期对于更好地利用它至关重要。


动态随机存取记忆体 脉码调制

60 ns 100 - 300 ns(存在)
50 - 85 ns(未来)

60 ns 10 - 150(礼物)
150 - 1000 ns(未来)

密度 7 4

耐力

不挥发性 N Y

Byte-addressable Y Y

2.2。假设

为了促进持久数据的处理,我们做我们的工作的基础上,广泛倡导架构(4]的NVRAM附加到内存总线和DRAM形式单一物理地址空间。在这样的架构,可以直接访问NVRAM CPU通过正常的加载和存储指令。CPU的缓存可以加速访问NVRAM。当我们正在处理的数据一致性问题NVRAM,我们做一些基本假设,如以前的工作17):(1)任何64位写NVRAM是原子性的,这意味着任何64位写NVRAM是持久的作为一个整体或没有影响;(2)特殊记忆栅栏应该由底层硬件提供摊位之前执行,直到所有达到NVRAM写道。

2.3。观察和动机

NVRAM速读和byte-addressability吸引人的特性,这使我们能够执行一个阅读比较它们在写作。这样做可能会有机会少问题写道。例如,如果我们想问题一个64位的写入位置,我们首先检查位置如果旧值,幸运的是,我们发现旧的值是一样的新值,然后我们可以消除写。这幸运的情况只占一小部分,更常见的情况是当一个64位的编写修改只有32位的位置。在这种情况下,我们可以将两个32位的修改合并成一个64位的编写并将其存储到日志中。这样我们减少写入到日志(最初是两个64位写)。写操作的NVRAM比阅读更贵,这样我们可以获得性能优势和扩展NVRAM的一生。

我们测试的修改比基准套邮票(18我们可以收获]显示潜在的好处。我们选择基准套邮票,因为它涵盖了范围广泛的应用程序域(如表所示3),可以显示真实的情况。更重要的是,它写得很好使用事务接口。事务的概念广泛应用于数据库实现原子更新的数据和我们的系统中我们还将采用它来支持更新的数据存储在NVRAM中一致。在事务机制,每个线程将首先修改日志的日志,然后在提交时间更新内存位置。在测试我们将显示,在所有64位写道,有多少比例修改什么和多少只是修改32位。

2显示与输入基准的修改比邮票表所示3。我们获得了修正比例通过比较每个事务的新值和旧值写在事务提交时间。与传统的数据库系统一样,我们假设持久数据应该在每个事务的提交时间持续更新。我们记录信息的三种类型的更新:(1)新写写相同的值从而修改(图中所示为修改的),(2)新的64位写修改上半年和下半年的只有32位(图中所示的一半写);(3)其他(显示为其他)写道。从数据我们可以看到,几乎所有的指标都包含一个主导编写(除了一半的一部分 是什么意思)。请注意,所有这些基准的事务写64位。因此这大部分写一半显示优化潜力巨大。此外,贝叶斯的基准,入侵者,度假,游泳时,我们可以看到一个相当大的比例(20%左右)的修改的写。这些是不必要的和可以直接被淘汰。最重要的是,对于每一个基准我们测试,有超过99%的写(修改的部分写半部分),可以优化(合并或取消)应对write-twice问题。 意味着这里是一个例外,因为其特殊的内存访问模式。尽管如此我们仍有近10%的写道,可以优化。最后,当我们增加问题规模为每一个应用程序,它显示了相同的趋势。

3所示。设计

我们首先设计一个持久堆基于NVRAM事务接口便于分配和修改持久数据。基础上,我们给一个基线记录机制保持一致性,然后介绍我们的优化日志减少写道。

3.1。持续的堆

为了使上层应用程序直接访问NVRAM,我们扩展当前的虚拟内存管理器(VMM)提供一个特殊的系统调用nv_map ()。像mmap (), nv_map()用来分配一个虚拟内存区域映射到NVRAM页面替代DRAM的页面。映射可以控制页面错误处理程序简单。然而,一个重要的事情是,NVRAM非易失性的,我们也应该保持virtual-physical映射关系的非易失性。这是通过存储非易失性在NVRAM页表。我们设置了前几页的NVRAM保留是一个元数据部分。对每一个过程,它主要存储两种信息。(1)进程的非易失性虚拟区域:这是托管在一个简单的向量来描述所有的非易失性虚拟区域的当前进程由nv_map ()。(2)过程的非易失性页表:这页表不是控制当前映射在内核中。这只是康复的目的和每笔交易结束时更新。 When a new page in a nonvolatile virtual region is accessed, we will allocate a new NVRAM physical page and the information will be updated to the nonvolatile page table at the end of every transaction. To reduce the usage of metadata part, we just store the root page directory in the matedata part for every process. Other NVRAM pages that store the secondary level directories and tables are allocated and indexed in the normal way. (3) The process’s id: this is the process’s absolute path. We use the process’s absolute path as the process’s id. Thus if a program is reexecuted, we will recover all its previous virtual regions and mappings using the information in the metadata part.

当一个程序开始在系统重新启动后,我们恢复程序的非易失性区域如下。(1)首先在程序的开始,我们将恢复非易失性的虚拟区域使用的信息存储在元数据部分和重新制作nv_map()与特定的起始地址和长度。(2)当它访问以前一些地区和触发页面错误,我们搜索元数据的非易失性表部分。如果有以前的映射,我们将恢复映射。如果没有,我们将分配一个新的NVRAM物理页和更新映射。所有的NVRAM物理页的使用将在系统启动时间设置为保留根据元数据的非易失性页表的部分。

基于系统调用nv_map(),我们可以很容易地建立一个持久的持久对象分配堆。根据以往的内存分配器我们构建持久堆囤积(19]。什么传统的内存分配器基本上是要求大内存区域通过mmap()从操作系统,然后零售小物体上的应用程序。这里修改囤积使用nv_map(),而不是传统的mmap()要求从操作系统和大型持久内存区域提供内存分配接口nv_malloc()和nv_free()为上层应用程序持续进行分配和释放内存结构或对象。

3.2。交易系统和基线记录

上面介绍的持久堆使上层应用程序直接访问NVRAM存取传统DRAM。他们可以通过持续的堆分配持久对象和读或在NVRAM中存储数据。然而,当他们在写NVRAM,他们不了解也不保证对的顺序将达到NVRAM写道。此外,他们不知道是否写已达到NVRAM之前系统崩溃。因此这里没有保证他们存储在NVRAM可重用的数据后,系统重新启动。这是典型的持久数据的一致性问题。

与传统数据库系统(20.)和NVRAM-based工作(3),我们采用事务的概念在NVRAM支持一致的更新数据。我们构建基于TinySTM事务系统(21,22表所示)并提供接口2。TinySTM是轻量级的软件事务性内存(STM)系统。相比与传统的数据库事务提供酸(原子性、一致性、隔离性和持久性),软件事务性内存系统通常只提供原子性,一致性,隔离但没有持久性。NVRAM这里,我们可以很容易地添加耐久性直接在NVRAM STM通过存储数据结构。另一方面,我们可以很容易地实现一致的更新数据在STM的帮助。


接口 描述

nv_malloc(大小、名称) 分配一个持久化对象
nv_free (addr) 免费一个持久化对象
tm_begin () 启动一个事务
tm_end () 并尝试提交一个事务结束
tm_read () 事务读
tm_write () 事务性写


基准 描述 输入

贝叶斯 机器学习 (−)e 1 i1陶瓷p10 q1 r128 - s1 -v32
(+)e 1 i1陶瓷p10 q1 -r8192 - s1 -v32

基因组 生物信息学 (−)-g8192 -s64 -n32768
(+)-g16384 -s64 -n65536

入侵者 安全 (−)a10 -l16 -n524288 - s1
(+)a10 -l16 -n1048576 - s1

意味着 数据挖掘 (−)-我random-n16384-d24-c16
(+)-我random-n65536-d32-c16

迷宫 工程 (−)-我random-x256-y256-z3-n256
(+)-我random-x512-y512-z3-n512

ssca2 科学 (−)-s18 -i1.0 -u1.0 l3 p3
(+)s20 -i1.0 -u1.0 l3 p3

假期 事务处理 (−)n2 -q90 -u98 -r16384 -t1048576
(+)n2 -q90 -u98 -r16384 -t4194304

游泳时 科学 (−)a10 -我ttimeu1000000.2
(+)a15 -我ttimeu1000000.2

我们的事务系统如图3。整个系统的行为如下。(1)我们首先分配在NVRAM持久对象或数据结构。上层应用程序需要访问他们使用我们的事务接口(或者可以直接不使用我们的事务性访问持久数据接口,但在这种情况下,我们不保证更新保持一致)。在事务中运行,TinySTM将写的写缓冲隔离不同的事务(步骤1所示图)。在我们的系统中我们把写缓冲区DRAM加速访问NVRAM(以前的工作(17]显示将经常访问的数据在NVRAM将导致性能下降约25%)。(2)当事务完成,准备提交时,我们把它提交到日志存储在NVRAM中而不是像传统的STM的原始位置。这一步是第二步,如图所示3。我们添加的日志是保证持续的更新的关键数据是一致的。否则,如果一个系统发生故障时在提交到原始位置,我们将失去在DRAM存储的数据和数据存储在NVRAM nonconsistent状态。(3)所有数据已经达到NVRAM登录之后,我们就可以做日志刷新更新原来的位置(图中显示为第3步)。

为了保护我们持久的元数据(对象分配信息)堆,我们还添加日志。所不同的是,我们的内存分配器是基于使用细粒度锁囤积已写好。因此我们只需要添加日志缓冲区写入并没有检测到事务冲突。

3.3。Write-Combined日志

日志我们添加了日志记录文件系统中是重要的保持一致性的NVRAM中存储的数据。然而,也有成本,这是write-twice问题。步骤2和3在图3演示write-twice问题:每次更新持久数据的结果在两个写入NVRAM(写日志和另一个写原始位置)。

在本节中,我们设计一个机制称为write-combined日志减少写入日志(步骤2图3)在不牺牲信息维护数据的一致性。我们的观点是基于以下关键的见解。(1)NVRAM快读。从NVRAM远低于读取数据写入数据。(2)与传统的二级存储相比,NVRAM byte-addressable。读取数据从缓存快得多,即使错过,虽然从辅助存储器读取数据结果到页面复制到主内存缓冲区。(3)我们的测试(图2)表明,有巨大的潜力来优化写入日志。

上面介绍的基础上,深入研究和观察,我们write-combined日志机制非常简单。我们主要修改步骤2图3优化在事务提交时写入日志。我们write-combined日志显示在图4。假设,在这个交易,Obj和Obj b都是修改部分(Obj修改修改最后32位和Obj b起初32位),Obj c是用相同的值作为其旧值。在事务提交基线设计,会写 比特的数据(3地址和新值)的NVRAM日志(步骤2,如图所示4)。然而,如果我们第一次做阅读比较它们操作检查修改,我们可以消除和结合写道。如步骤3所示图中,我们结合Obj a和b Obj的修改成一个64位的写。此外,更新Obj c是消除。在这种情况下我们write-combined日志减少多达50% NVRAM写道。注意,当我们把两个写进一个,我们可以减少一个写入NVRAM日志。但是如果我们消除写,我们减少两个写(一个地址和一个值)NVRAM日志。因此尽管修改的写在一个事务中仅占一小部分,我们可以受益匪浅。

当我们结合NVRAM日志中写道,我们需要存储额外信息的组合。我们不添加额外的空间来实现这一目标。在我们测试的基准,所有写在64位的形式,从而导致地址都有他们的最后4位是零。我们可以利用每一个地址的最后4位存储组合信息。此外,应用程序需要一个更新在任意粒度小于8个字节,一个面具领域通常是介绍传统STM (21)系统。在这种情况下我们可以减少写NVRAM更多结合面具字段的值字段。通过比较与旧值,我们可以翻转位存储在新值字段,而不是原来的新值。翻转位指示哪些在旧值应该逆转为了得到新值。这样我们可以把面具字段和值字段在NVRAM日志高效。——但是,我们认为这低于- 64位写在64位系统是罕见的;因此我们不实现这个面具结合在我们的系统。我们解决这个问题通过调整传递给我们的接口的指针已tm_read()或tm_write()前64位的边界和创纪录的64位。这可能引入一些不必要的记录,但我们认为这种情况将不伤害整体性能。

3.4。讨论

就可以刷新登录NVRAM同步或异步刷新的方式。异步刷新可以移动的冲洗关键路径从而提高性能。然而,它需要额外的编码来表示冲洗和我们需要搜索和索引数据在NVRAM日志介绍开销,尤其是当日志越来越大。总之,这两种策略需要整个日志持续的事务提交时,关键路径。本文旨在减少日志数据,从而可以加快步骤2图3无论我们采用冲洗策略。我们不讨论哪种策略更好的摘要,是采用同步冲洗为简单起见。

4所示。实现

整个系统实施包括一个内核补丁3.11 Linux内核保持持久映射和一个运行时库来管理内存分配和事务性持久数据结构的访问。我们的系统不需要修改底层硬件。

4.1。内存管理的NVRAM

NVRAM现在不普及,我们添加延迟模仿NVRAM DRAM。我们单独的整个物理地址空间分成两部分(DRAM和NVRAM)通过修改内存扫描过程在系统启动时间。DRAM的部分是使用像往常一样和我们上运行的操作系统。NVRAM部分将由我们的内核补丁。具体来说,当一个上层应用程序要求通过nv_map虚拟内存区域(),它将首先获得一个正常的虚拟内存区域。如果它访问任何地区的虚拟页,我们从NVRAM内核补丁将分配一个物理页面,将虚拟页映射到物理页的页面错误处理程序。也将被记录到NVRAM映射关系。作为在这个场景中,我们只需要一个物理页面,我们列出所有的空闲页面NVRAM空闲列表,而不是使用传统的成大连续块体系统来管理页面。在系统重启时间,我们在NVRAM扫描映射信息,设置already-in-mapping页面尽可能保留和其他页面免费。

为了模仿NVRAM的不挥发性,我们把所有的物理页的NVRAM一部分到磁盘之前,系统重启,系统重启后再复制。因此似乎NVRAM中存储的数据部分是持久的。为了模仿NVRAM的访问延迟,我们之后添加延迟写NVRAM这是像之前的作品(4,17)做的。NVRAM的读取速度是快DRAM所以我们不解决阅读特别。注意,当我们采用DRAM缓冲区更新NVRAM写入NVRAM只发生在事务提交时。在事务提交时我们首先执行写入NVRAM日志,然后冲洗所有的高速缓存线路使用clflush相应。添加/缓存线的延迟,因为缓存线实际上是更新主存的粒度。冲洗后所有的高速缓存线路,增加延迟,我们使用mfence问题内存栅栏。

4.2。不稳定的缓存

缓存不稳定,会影响持久数据的一致性在内存中。为了解决这个问题,每次当我们写持久化日志(在事务提交时),我们首先写日志,然后刷新相应的缓存内存栅栏线和问题,然后写一个完整的一些指示,日志是好的和一致的。因此下次系统崩溃后,我们可以检查这个完整,我们将知道该事务成功完成。缓存刷新和记忆栅栏用来排除错误的情况下受到不稳定的缓存。

4.3。原子堆操作

我们实现堆操作的原子性(即。,allocation and deallocation) by logging at two different levels. Our memory allocator runs in user level that asks for memory regions through system calls and then serves objects allocations. Here there are two kinds of information we should record and update consistently: (1) the page mapping relationship for NVRAM in the kernel and (2) the objects allocation information in the heap. We add logging to protect these two parts of information but at different privileged level. The logging of NVRAM page mapping is kept in the first several pages in NVRAM which could only be accessed by kernel code. Or otherwise the logging could be modified by user code to gain access to any physical memory region. The logging of object allocation is done by user code and is combined with the way we process the accesses of upper applications. At the point of view of our transactional system, our memory allocator can be regarded as a special upper application. We make our memory allocator run based on nv_map() and add logging to its codes.

上面的两个特殊的提交操作日志可以推迟到上层应用程序的事务的提交时间。这是因为如果我们分配一个对象还没有访问,对象的值是无效的,因此当系统崩溃时对象可以丢弃。

4.4。复苏

我们也做经济复苏两个层次。在系统重启时间,我们首先使用日志写的内核代码映射到一个一致的状态中恢复过来,然后使用映射表来定位所有保留页面和免费的页面。在流程开始,然后使用用户级日志恢复进程的持续堆成一个一致的状态。日志将总是映射在一个固定的地址,以方便访问。

注意,我们不使用NVRAM实现一个检查点。所以程序不能恢复,他们已经离开。我们关注的是持久数据。我们可以保证所有的持久数据处于一致的状态,在下次当程序访问这些数据后再次启动系统。这个目标是一样的摩涅莫辛涅的以前的工作4]和NV-heap [3]。

5。实验

本文提出了一种优化write-combined日志机制减少写入NVRAM不牺牲的信息用于维护持久数据的一致性。为了展示我们的工作能够解决write-twice问题,我们主要测试和比较我们的工作(称为水控制法)基线设计(称为声波测井)来显示它的优势减少NVRAM写道。注意,基线设计介绍了实际上非常类似于以前的工作方法的摩涅莫辛涅4]。摩涅莫辛涅侧重于为NVRAM提供轻量级的编程接口和它不显示注意解决write-twice问题。此外,我们的工作不同于摩涅莫辛涅在管理NVRAM我们扩展虚拟内存管理器来管理,而摩涅莫辛涅依靠传统和内存映射文件系统管理已被证明是沉重的NVRAM (23]。在本节中,我们要做一个小测试,展示开销的比较这两个不同的内存管理方法。

5.1。方法和标准

我们选择基准邮票套装(18]和STMBench7 [8作为我们的基准。邮票基准套装包含应用程序可以涵盖不同领域的算法(如表所示3)。STMBench7基准来自OO7 [24),专注于模拟CAD、CAM和案例项目。它包含很多相关图表和索引的数据结构和复杂的应用程序中经常使用。这两个指标适合使用事务接口编写良好;因此我们不需要修改源代码的基准。我们设置的输入标准如表所示34与不同的尺度问题表明,我们的机制可以适合不同的问题。我们钩内存分配函数所有的基准从我们的内存分配器分配对象。


基准 描述 输入

STMBench7-small 小型数据结构和规模小 - w rw - s s (AtomicPartsPerComponent = 200, ComponentsPerModule = 500)
STMBench7-medium 中数据结构和中等规模 - w rw - s m (AtomicPartsPerComponent = 500, ComponentsPerModule = 800)
STMBench7-big 大数据结构和规模 b - w rw - s (AtomicPartsPerComponent = 800, ComponentsPerModule = 800)

在实验中,我们第一次测试和显示的数量写NVRAM水控制法执行每一个基准。然后我们展示整体加速水控制法可以实现对声波测井通过减少写道。最后,我们展示的软件开销比non-write-combining write-combine机制。

实验平台是一个AMD服务器(2.2 GHz,新款高能效型opteron处理器)和16 GB DRAM运行Linux内核3.11。我们用8 GB DRAM模仿NVRAM和模拟写延迟的NVRAM 600 ns 10倍比它慢读,如表所示1

5.2。结果
5.2.1。内存管理的小测试的结果

我们管理非易失存储器和映射关系以不同的方式从以前的工作3,4),在这里我们做了一个简单的测试显示相应的开销的比较。水控制法代表我们的机制,而摩涅莫辛涅代表前面的工作(3,4)依赖于文件系统保持持续的映射。

我们做了三个简单的测试。(1)地区创建:我们创建几个持久的地区。(2)页面错误:我们创建一个区域,然后触发所有页面错误在这一地区建立映射。(3)访问后创建了所有地区和所有映射建立了。图5显示第一个两种情况。

我们可以看到,我们的机制执行更好的前两种情况。为地区创造,这是因为(1)以前的工作依赖于文件系统将创建一个文件和映射文件都建立一个区域和(2)触发页面错误,以前的工作将研究文件系统时找到一个合适的页面服务页面错误。这两个病例的来源主要开销。第三的情况下,我们的工作和以前的工作都没有介绍开销,因此我们不表现出来。

5.2.2。邮票的结果

首先,数据67显示总NVRAM写道我们水控制法执行与声波测井。我们可以看到,除了所有的基准 意味着,我们的水控制法减少大量的NVRAM写道。水控制法表现最好的基准贝叶斯,入侵者,和游泳,因为有大量的未修改的写在这三个标准。我们之前介绍过的,通过减少每一个修改的写道,我们可以减少两个NVRAM写道。比较数据67我们可以看到水控制法能够表现良好的小尺度或增加的问题。统计数据如表所示5。小问题规模,水控制法减少少写的整数写很小,导致相同的比例,这是符合我们早期观察如图2。水控制法不能减少基准中写道 意味着,根据图也如预期2。一般地,水控制法可以写的数量减少33%,这可以大大有助于延长NVRAM的一生。


基准 声波测井 水控制法

贝叶斯 (−)4701 (−)2803
(+)3795 (+)2269

基因组 (−)3251313 (−)2175511
(+)6552450 (+)4384360

入侵者 (−)56129379 (−)33188986
(+)112200870 (+)66342596

意味着 (−)36044910 (−)34843101
(+)337379526 (+)328728706

迷宫 (−)136002 (−)90668
(+)558789 (+)372526

ssca2 (−)33344904 (−)22229910
(+)134173668 (+)89449089

假期 (−)19708551 (−)12316239
(+)104356923 (+)62029785

游泳时 (−)32814681 (−)20292095
(+)78473364 (+)48613975

数据89的规范化运行时水控制法与声波测井。通过减少写入NVRAM水控制法实现更好的性能。一般地,在声波测井水控制法实现11%的加速。多少性能优势水控制法可以主要依靠多少比例占据在程序中写道。如图10基准基因组ssca2,度假,游泳时花相当大比例的时间在NVRAM写作。因此我们可以看到明显的改善这些基准后减少写道。此外,我们可以看到水控制法能够提高性能对小尺度和增加的问题。为基准的基因组,水控制法的行为尺度上小问题尺度比增加问题。这是因为当我们在基因组规模增加的问题,确实写的2倍而运行时增加了4倍。

也意味着花大部分时间在NVRAM写作。然而,水控制法不能减少的写作 正如我们之前所讨论的。基准的贝叶斯和迷宫,虽然水控制法减少大部分写道,写只占很小的一部分执行。

5.2.3。结果STMBench7

11总NVRAM编写和运行时显示的比较。我们可以看到水控制法可以减少很大一部分NVRAM写在不同的项目规模和声波测井数据结构尺寸。统计数据如表所示6。STMBench7使用大量的数据结构图形处理或数据索引。这些数据结构严重依赖指针操作。通常为一个64位的指针,它是不太可能被修改超过32位附近,因为大多数数据分配。一般地,水控制法执行34%小于声波测井和加速达到7%。


基准 声波测井 水控制法 联合国 一半

STMBench7-small 915573年 609386年 0 306187年
STMBench7-medium 3634074 2422277 0 1211797
STMBench7-big 5803089 3860895 0 1942194

最后,write-combining如图的软件开销12。通常我们的开销可忽略的机制。开销主要是由在每笔交易中写道,当我们结合机制需要执行比较操作每写缓冲区中写道。一般来说,这是非常简单和快速。此外,大多数读操作比较缓存的缓存,因为他们只是访问该事务。与之前的数据压缩工作相比,我们的工作实际上利用了这一事实,对于每一个值,我们有两个持久的副本的值:(1)一个驻留在原来的地方等待被更新和(2)另一个是在持续的日志。作为这两个版本的值都是持续的,我们这里有数据丰富。因此我们可以很容易地利用这些丰富的持久数据减少日志,,之前的数据压缩工作,它只有一个版本的数据,因此这个问题是实现压缩不丢失任何信息,这将导致更多的开销发现丰富的数据。

5.2.4。讨论

NVRAM写水控制法能减少多少谎言的幸运的情况下修改的写作和写一半。在这些情况下,我们可以利用的fast-read-slow-write特征NVRAM获得一些好处。然而,它并不是完全所有幸运的情况下,我们都指望。

的确,对于修改的写的情况下,幸运的是,我们可以在一个程序中;越多越好。然而,如图2,只有几个应用程序执行中只有一小部分修改的写。它是不错,但我们不指望它来减少大量的NVRAM写道。我们依靠的是一半的情况下写。写一半主要包括两种情况:(1)指针;正如之前所讨论的,一个64位的指针不太可能被修改超过32位;这是因为通常我们分配对象附近;如果一个程序做了很多指针操作,比如使用一个迭代器遍历数据结构,修改指针通常小于32位;如上所述STMBench7显示了一个很好的例子;(2)计数器或索引:很多项目大量使用计数器或索引作为一个循环的一部分或统计数据;这些计数器,尽管在64位,不太可能被修改,让我们从中受益的机会。

通常我们的开销可忽略的机制。与之前的数据压缩工作相比,我们的工作实际上利用了自然事实,对于每一个值,我们有两个持久的副本的值:(1)一个驻留在原来的地方等待被更新和(2)另一个是在持续的日志。作为这两个版本的值都是持续的,我们这里有数据丰富。因此我们可以很容易地利用这些丰富的持久数据减少日志,,之前的数据压缩工作,它只有一个版本的数据,因此这个问题是实现压缩不丢失任何信息,这将导致更多的开销发现丰富的数据。

最重要的是,在基准套邮票和STMBench7,水控制法可以有效降低NVRAM写道,同时保持数据一致性。NVRAM水控制法可以帮助延长寿命和提高性能通过减少NVRAM写道。

在非易失性数据一致性媒体一直在研究了很长一段时间。成熟的NVRAM带来了新的机遇。NVRAM被用作缓冲区缓存和日志记录将《文件系统从二级存储非易失性内存(9),这样就可以减少写入二级存储和提高性能。类似的研究已经进行了数据库系统(20.,25,26]。然而,这些研究并不解决write-twice问题[27]。write-twice问题已经注意到,在日志结构文件系统(28,29日),这并不是广泛采用由于大数据索引的开销。

为了减少写入NVRAM延长它的生命周期,Flip-N-write [15和陪集16)也采用阅读比较它们的计划和依靠特殊的编码算法来减少NVRAM写道。同样,我们的工作利用NVRAM byte-addressable的特性和非对称读写减少NVRAM写道。然而,我们都是基于不同的层。Flip-N-Write在硬件层,采用通用和盲目的方法测试和翻转,当我们在运行时系统层直接服务于上层应用程序。我们的想法是基于事实,必须有很大比例的一半在64位应用程序更新。这是因为指针,计数器和索引大量用于应用程序和他们不太可能会被修改。此外,Flip-N-write在体系结构上需要修改底层硬件。最后,我们的工作可以结合前面的硬件工作取得更好的性能。

日志(30.,31日)机制对正常和故障情况下会增加开销。一些工作(32,33]介绍了架构机制利用剩余能量系统冲洗不稳定状态到NVM无故障操作,从而达到零开销。这些研究与我们的是正交的。

以前的工作Shortcut-JFS [34利用byte-addressability和采用shadow-update机制减少写PCM。是另一种减少写PCM,它侧重于基于块的文件系统。我们的工作重点是提供支持的编程直接在PCM。目标是相似的,但这个想法和应用程序是不同的。在我们的工作,其实,我们发现了一些自然的信息数据丰富,我们开发了一个简单而有效的方式来利用这些信息,作为讨论的部分5.2。4。数据压缩的工作,一个主要挑战是发现了丰富的信息。这一点不同于以前的工作。而另一个数据压缩工作(35]利用byte-addressability NVRAM存储压缩三角洲杂志,三角洲杂志是由比较旧的新的块。数据压缩阶段,它实际上面临着一个0 - 1块没有语义信息。数据压缩的开销很可能会超过美国。此外,它是基于块。修改的块率小于一个阈值将被更新以传统的方式。与它相比,我们的工作是细粒度的。

摩涅莫辛涅(4]和NV-Heaps [3]介绍轻量级的编程接口支持分配和处理基于NVRAM持久内存中的数据结构。他们都采用日志维护持久数据的一致性。然而,他们没有显示注意write-twice的consistency-maintaining开销问题。此外,他们依靠传统的文件系统和内存映射管理NVRAM页面,这也可能招致开销(36]。他们还提供一些我们没有的功能。等NV-heap提供了一些提高语言水平支持安全指针。摩涅莫辛涅提供了一个高性能的生单词日志(披露),以减少内存栅栏在提交时间。

撕裂写当一些写的失败去记忆,传统的检测方法(37执行read-after-write。这是可以做到的硬件和软件。在我们的系统中,它可以很容易地检查了因为所有的写到NVRAM发生在每个事务的提交时间。

传统的文件系统是沉重的NVRAM由于其屏蔽层。许多研究试图优化文件系统来减少块层(及23],猛禽的[38),带通滤波器(36],SCMFS [39])。

7所示。结论

提出了一种优化write-combined日志减少写入日志不牺牲NVRAM NVRAM中保持数据一致性的信息。我们利用速读和byte-addressable NVRAM执行之前阅读比较它们的特点执行写道。这可以帮助我们减少写入NVRAM延长它的生命周期和提高性能。我们测试我们的系统基准套邮票和STMBench7。实验表明,我们的系统能够减少33%的邮票写和性能提高11%,减少34%的NVRAM写道,在STMBench7性能提高7%。

利益冲突

作者宣称没有利益冲突有关的出版。

确认

这部分工作是由中国国家高科技研发计划(863计划)资助下2012 aa01a301和2012 aa010901,通过在大学新世纪优秀人才计划,由国家科学基金会(NSF)中国61272142,61402492,61402486,和国家重点实验室的高端服务器和存储技术(2014 hssa01)。米克尔Lujan支持英国皇家学会大学研究奖学金和由EPSRC赠款圆顶EP / J016330/1和帕梅拉EP / K008730/1。

引用

  1. a . Badam“持久的记忆将如何改变软件系统,”电脑,46卷,不。8 ID 6521316条45-51,2013页。视图:出版商的网站|谷歌学术搜索
  2. 贝利k, l . Ceze s . d .蛀木水虱和h . m . Levy”操作系统的影响快速、廉价、非易失性内存,”学报》第13届USENIX大会热点话题在操作系统(HotOS的13),2,页USENIX协会,2013。视图:谷歌学术搜索
  3. j·科伯恩,a . m .·考尔菲德,a . a et al .,“Nv-heaps:让持久化对象快速和安全的下一代,非易失性记忆,”ACM SIGARCH计算机体系结构的消息,39卷,不。1,第118 - 105页,2011。视图:出版商的网站|谷歌学术搜索
  4. h .沃洛斯a . j .策略和m . m .迅速“摩涅莫辛涅:轻量级的持久记忆。”ACM SIGARCH计算机体系结构的消息,39卷,不。1,第104 - 91页,2011。视图:出版商的网站|谷歌学术搜索
  5. k .沈、美国公园和m .朱”日志杂志(几乎)是免费的,”学报》第12届USENIX大会文件和存储技术(快速的14),第293 - 287页,2014年。视图:谷歌学术搜索
  6. 公元前李,e . Ipek o . Mutlu和d .汉堡”架构相变内存是一种可伸缩的dram的选择,”ACM SIGARCH计算机体系结构的消息,37卷,不。3、13、2009页。视图:谷歌学术搜索
  7. Koltsidas, r . Pletka p·穆勒et al .,“PSS:存储子系统原型基于PCM,”学报》第五届非易失性记忆车间(NVMW 14)美国,加州拉霍亚,2014年3月。视图:谷歌学术搜索
  8. r . Guerraoui m . Kapalka, j . Vitek”Stmbench7:软件事务性内存的基准,”技术。代表,2006年。视图:谷歌学术搜索
  9. 李、h .铁路和s . h .能剧”的联盟与非易失性内存缓冲区缓存和日志记录层,”学报》第11届USENIX大会文件和存储技术(快速的13)80年,页73 -阿姆斯特丹,荷兰,2013年12月。视图:谷歌学术搜索
  10. m . Rosenblum和j·k·Ousterhout日志结构文件系统的设计和实现,”ACM交易计算机系统(toc),10卷,不。1,26-52,1992页。视图:谷歌学术搜索
  11. b·g·约翰逊和c·h·高秤”相变内存,“6791102年美国专利,2004年。视图:谷歌学术搜索
  12. h . Yoon n . Muralimanohar j .就o . Mutlu和n . p . Jouppi”数据映射和缓冲技术利用不对称在多层细胞(相变)的记忆中,“SAFARI技术报告2013 - 002年,2013年。视图:谷歌学术搜索
  13. m·k·库雷希m . m . Franceschini a . Jagmohan和洛杉矶Lastras“预设:相变记忆的提高性能通过利用不对称在写时代,“ACM SIGARCH计算机体系结构的消息,40卷,不。3、380 - 391年,2012页。视图:谷歌学术搜索
  14. 周p, b .赵、杨j .和y,”一个持久和节能主内存使用相变内存技术,”学报》第36届国际研讨会上计算机体系结构2009年6月,页5,ACM,。视图:出版商的网站|谷歌学术搜索
  15. 赵和h·李,“Flip-N-write:一个简单的确定性技术改善婴儿车写性能,能源和耐力”学报》第42届IEEE / ACM国际研讨会微体系结构(微观' 09)ACM,页347 - 357年,纽约,纽约,美国,2009年12月。视图:出版商的网站|谷歌学术搜索
  16. a . n . Jacobvitz r . Calderbank d·j·索林,“陪集编码扩展的生命周期记忆”诉讼19 IEEE国际研讨会的高性能计算机体系结构(HPCA 13),页222 - 233,深圳,中国,2013年2月。视图:出版商的网站|谷歌学术搜索
  17. s . Kannan a . Gavrilovska k·施万,d . Milojicic检查点使用NVM作为虚拟内存,优化”IEEE学报》27日并行和分布式处理国际研讨会(IPDPS 13),页29-40、波士顿、质量,美国,2013年5月。视图:出版商的网站|谷歌学术搜索
  18. c . c .明j .钟c . Kozyrakis和k . Olukotun“邮票:斯坦福大学事务多处理申请,”《IEEE国际研讨会工作负载特性(IISWC 08年)美国,页35-46、西雅图、清洗,2008年9月。视图:出版商的网站|谷歌学术搜索
  19. e·d·伯杰k·s·麦金利r·d·Blumofe和p·r·威尔逊“囤积:多线程应用程序的可扩展的内存分配器,”ACM Sigplan通知,35卷,不。11日,第128 - 117页,2000年。视图:谷歌学术搜索
  20. t . Wang和r·约翰逊“事务日志和NVRAM释放”。视图:谷歌学术搜索
  21. p . Felber c·菲尔兹,p .土地肥沃的,t·里格尔,“基于时间的软件事务性内存,”IEEE并行和分布式系统,21卷,不。12日,第1807 - 1793页,2010年。视图:出版商的网站|谷歌学术搜索
  22. p . Felber c·菲尔兹,t·里格尔,“基于软件事务性内存的动态性能调优,”13 ACM SIGPLAN学报》研讨会上并行编程的原理和实践ACM,页237 - 245年,2008年2月。视图:谷歌学术搜索
  23. s . r . Dulloor库马尔,a Keshavamurthy et al .,“持久内存,系统软件”学报》第九届ACM欧洲会议上计算机系统(EuroSys 14)2014年4月,阿姆斯特丹,荷兰,。视图:出版商的网站|谷歌学术搜索
  24. m·j·凯里·d·j·德威特,j·f·诺顿,“007年的基准,”ACM SIGMOD记录,22卷,不。于页。12日至21日2日举行,1993年。视图:出版商的网站|谷歌学术搜索
  25. 黄j . k .施万,m·k·库雷希”NVRAM-aware登录交易系统”美国养老,8卷,不。4、389 - 400年,2014页。视图:出版商的网站|谷歌学术搜索
  26. s . g . j .徐,他和b . c·h·胡”与PCM PCMLogging:减少了事务日志开销,”20 ACM国际会议的程序信息和知识管理,2011年10月。视图:谷歌学术搜索
  27. f . Douglis和j . Ousterhout“日志结构文件系统”美国第34 IEEE计算机协会国际会议:知识利用,消化的论文(89年COMPCON春”),第129 - 124页,1989年。视图:谷歌学术搜索
  28. r . Konishi y Amagai,佐藤k h . Hifumi s Kihara在城市和s . Moriai”的linux实现日志结构文件系统”,ACM SIGOPS操作系统复习,40卷,不。3、102 - 107年,2006页。视图:谷歌学术搜索
  29. j . Ousterhout和f . Douglis跳动的i / o瓶颈:日志结构文件系统的情况下,“ACM SIGOPS操作系统复习,23卷,不。1,11-28,1989页。视图:谷歌学术搜索
  30. c·莫汉,d . Haderle b·林赛·h·Pirahesh p·施瓦兹,”白羊座:支持细粒度锁和部分回滚事务恢复方法使用写前日志记录,“ACM事务在数据库系统,17卷,不。1,第162 - 94页,1992。视图:出版商的网站|谷歌学术搜索
  31. r·方我。萧,他b, c·莫汉和y . Wang“高性能数据库日志使用存储类记忆”IEEE学报》27日数据工程国际会议(ICDE 11)IEEE,页1221 - 1231年,汉诺威,德国,2011年4月。视图:出版商的网站|谷歌学术搜索
  32. 英国人,d . r . Chakrabarti t·凯利和c b Morrey三世,“拖延胜预防,”科技。众议员hpl - 2014 - 70,惠普实验室,2014年。视图:谷歌学术搜索
  33. d . Narayanan o·霍德森,“全系统持久性。”ACM SIGARCH计算机体系结构的消息,40卷,不。1,第410 - 401页,2012。视图:谷歌学术搜索
  34. 李,柳,戈尔。张成泽,h .铁路“Shortcut-JFS:为相变内存,编写有效的日志文件系统”学报》第28届研讨会上大规模存储系统和技术(MSST 12)IEEE,页1 - 6,圣地亚哥,加利福尼亚州,美国,2012年4月。视图:出版商的网站|谷歌学术搜索
  35. c . j . Kim Min, y加工,“减少过度日志记录开销与小型NVRAM移动设备,”IEEE国际会议消费电子学报》(ICCE 14)页。11日,拉斯维加斯,内华达州,美国2014年1月。视图:出版商的网站|谷歌学术搜索
  36. j .康迪特·e·b·南丁格尔,c·弗罗斯特et al .,“通过byte-addressable更好的I / O,持久记忆”22 ACM SIGOPS学报》研讨会上操作系统的原则ACM,页133 - 146年,2009年10月。视图:出版商的网站|谷歌学术搜索
  37. e . Ipek j .康迪特·e·b·南丁格尔,d .汉堡和t . Moscibroda”动态复制记忆:从纳米级电阻记忆,构建可靠的系统”ACM SIGARCH计算机体系结构的消息,38卷,不。1,3 - 14,2010页。视图:出版商的网站|谷歌学术搜索
  38. h .沃洛斯s Nalli s Panneerselvam诉同,p . Saxena和m . m .迅速、“猛禽:灵活的文件系统接口存储类记忆”学报》第九届ACM欧洲会议上计算机系统(EuroSys 14)2014年4月,阿姆斯特丹,荷兰,。视图:出版商的网站|谷歌学术搜索
  39. 吴x和a . l . n . Reddy SCMFS:文件系统存储类记忆”学报为高性能计算国际会议,网络,存储和分析(SC的11),39页,ACM、西雅图、洗、美国,2011年11月。视图:出版商的网站|谷歌学术搜索

版权©2015 Wenzhe Zhang et al。这是一个开放的分布式下文章知识共享归属许可,它允许无限制的使用、分配和复制在任何媒介,提供最初的工作是正确引用。

相关文章

对本文没有相关内容可用。
PDF 下载引用 引用
下载其他格式更多的
订单打印副本订单
的观点1575年
下载778年
引用

相关文章

对本文没有相关内容可用。

文章奖:2020年杰出的研究贡献,选择由我们的首席编辑。获奖的文章阅读