没有合适的资源?快使用搜索试试~ 我知道了~
ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月复合文件文件系统:分离文件和元数据的一对一映射以获得更好的性能张双龙,谷歌罗伯特·罗伊,LEAH RUMANCIK和AN-I ANDY WANG,佛罗里达州立大学传统文件系统的设计和实现通常使用逻辑文件到其物理元数据表示的一对一映射文件系统优化通常遵循这种严格的映射,并错过了整个优化类的机会我们设计、实现并评估了一个复合文件系统,它允许文件到元数据的多对一映射通过探索不同的映射策略,我们的实证评估显示,在Web服务器和软件开发工作负载下,磁盘和SSD的性能提高了27%这一结果表明,我们放松文件到元数据映射的方法是有前途的。CCS概念:·信息系统→信息存储系统;记录存储系统;直接结构;其他关键词和短语:设计、性能、文件系统、元数据ACM参考格式:Shuanglong Zhang,Robert Roy,Leah Rumancik,and An-I Andy Wang.2020年。The Composite-FileFile File System :Decoupling One-to-One Mapping of Files and Metadata for Better Performance.ACMTrans.存储16,1,第5条(2020年3月),18页。https://doi.org/10.1145/33666841介绍文件系统性能优化是一个经过充分研究的领域,大多数优化技术(例如,高速缓存、更好的数据布局)保持逻辑文件到它们的物理元数据表示的一对一映射(即,每个文件与UNIX平台上的唯一i节点相关联从软件设计的角度来看,这种映射是直观和直接的,并且与根深蒂固的元数据结构兼容。许多存储组件和机制,如VFS API [19],预取(例如,Linux中的readahead)和元数据缓存-依赖于这样的结构。然而,这种严格的映射也限制了一类性能优化的机会这项工作是由佛罗里达州立大学和国家科学基金会资助的CNS-144387。本材料中表达的任何观点、发现、结论或建议均为作者的观点,不一定反映佛罗里达州立大学、国家科学基金会、谷歌或美国政府的观点。作者地址:S。Zhang,Google,1600 Amphitheatre Parkway,Mountain View,CA 94043; email:google.com; R.罗伊和L. Rumancik,253爱大厦,佛罗里达州立大学,塔拉哈西,佛罗里达州32306-4530;电子邮件:roy@cs.fsu.edu,ler13f@my.fsu.edu;I. A. 王,269爱楼,佛罗里达州立大学,塔拉哈西,佛罗里达州32306-4530;电子邮件:awang@cs.fsu.edu。允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明和完整的引用本作品的版权归ACM以外的其他人所有,必须予以尊重。允许使用学分进行摘要以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。从permissions@acm.org请求权限。© 2020计算机协会。1553-3077/2020/03-ART5 $15.00https://doi.org/10.1145/33666845ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月第五章:S. Zhang等人以Linux VFS下的预取和缓存为例,当检测到顺序访问模式时,通常会预取文件块,并且预取在文件边界处停止元数据的预取主要是访问粒度的副作用,其中i节点(无论它们是否一起访问)存储在同一个存储块中。因此,预取存储在存储器上附近的相关文件涉及访问每当跨越文件边界时可以存储在别处的元数据项尽管这种中断的开销取决于相关文件及其元数据被高速缓存的程度而变化,但是文件和相关联的元数据访问的逻辑概念可以强加高开销。例如,访问32个小文件可能比访问大小等于32个文件之和的单个文件的延迟高50%,即使使用热缓存[3]。考虑到这些例子,我们设计并原型化了一个名为复合文件文件系统(CFFS)的系统,其中许多逻辑文件可以与单个i节点相关联(额外的这样的布置是可能的,因为一起访问的许多文件共享类似的元数据子字段(例如,相关网页的所有者和权限字段)[10],并且这些可以被合并和去重。因此,在CFFS下访问文件需要更少的元数据存储访问,这表示非平凡的源小文件的性能开销仍然代表现代工作负载的许多文件引用[13,24]。基于Web服务器和软件开发工作负载,CFFS的性能最高可超过Ext4 27%。这表明放松文件到元数据映射的方法是有前途的。2意见除了前面提到的缓存和预取的限制之外,下面提到的观察结果导致了CFFS的设计。频繁访问小文件。研究[13,24]表明,小文件接收大多数文件引用。我们对桌面文件系统的内部分析证实,超过80%的访问是针对小于32 KB的文件此外,访问磁盘上的小文件所需的访问时间中有近40%可以归因于元数据访问。因此,减少该访问开销可以导致大的性能增益。冗余元数据信息。 传统文件与其自身的物理元数据相关联,该元数据跟踪信息,例如文件块的位置、访问权限和时间戳。但是,许多文件共享相似的文件属性,因为文件所有者的数量、权限模式等是有限的。先前的工作[10]表明,对于典型的工作站,元数据压缩率高达75%因此,我们预见到许多机会,以减少冗余的元数据信息。尽管存储设备上所需的元数据存储的减少相当小,但是减少访问和缓存相同量的信息所需的元数据IO的数量可以产生显著的性能差异。以组访问的文件。 由于许多以前的研究磁盘布局优化和预取[8,16- 18 ]已经提出,文件往往是访问数据集。对于电子邮件,电子邮件页面访问通常涉及访问许多引用的文件。但是,利用文件分组的简单优化可能不会自动提高性能,因为识别和分组文件的过程会产生开销。因此,对于经常一起访问的文件,需要优先进行分组每个文件访问的开销很高。图1示出,对于恒定数目的字节(例如,10 MB)从SSD设备读取时,读取访问时间会随着10 MB被划分为更多文件而线性增加此性能特征在各种文件系统中共享这个简单的实验表明,每个文件的开销足够高,可以掩盖不同小文件大小的影响,其中小文件通常代表大多数文件引用[13,24]。分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月×图1.一、对于Btrfs、Ext4、F2FS和NILFS,读取30 MB的文件所需的时间不同此外,我们对相同的文件系统进行了22 5析因设计实验[15]第一个因素是文件大小,有1 KB和100 KB两个级别第二个因素是文件数量,有10和1000两个级别实验重复五次。对于各种文件系统,结果显示高达98%的读取访问时间归因于文件数量这个实验再次证实了逻辑文件抽象的高开销这些观察结果提出了一个问题,即我们是否可以通过合并一起访问的小文件来提高性能这是通过我们将逻辑文件的一对一映射解耦到其数据和元数据的物理表示的方法来实现的3复合文件系统我们引入了CFFS,它允许多个小文件合并以共享单个i-node。合并独立的小文件及其i节点可减少磁盘访问次数并提高性能。3.1设计概述CFFS引入了一种称为复合文件的内部物理表示,它包含经常一起访问的小文件或子文件的内容。复合文件对最终用户是不经意的,并且与在小文件之间共享的单个复合i节点相关联。存储在小文件的i节点中的原始元数据被重复数据消除、整合并存储为复合文件的扩展属性。各个小文件的元数据属性仍然可以被重构、检查和更新,使得传统访问语义(例如,类型、权限、时间戳)不变。扩展属性还记录各个小文件在复合文件此外,由于复合文件的i节点和复合文件的扩展属性都被记入有了这种表现,CFFS可以将物理复合文件转换为多个逻辑文件。通过根据访问模式对复合文件中的传统的VFS预取机制,以潜在地将整个复合文件(跨子文件)作为一个单元进行预取。CFFS可以通过三种方式进行配置,以识别用于形成复合文件的候选文件。一种方案是基于目录的整合,其中目录中的所有文件(不包括第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图二、从两个原始文件(顶部)创建内部复合文件(底部)子目录)形成复合文件。另一种方案是嵌入引用合并,其中提取文件内容中的文件引用以标识可以形成复合文件的文件。第三种是基于频率挖掘的合并,通过设置频率挖掘[2]分析文件引用,以便经常一起访问的文件形成复合文件。3.2数据表示复合文件的内容是通过连接相关的小文件形成的复合文件中的所有子文件共享相同的i节点,以及间接块、双重间接块等。复合文件的最大大小限制不是问题,因为复合文件是为对小文件进行分组而设计的。如果子文件的总大小超过文件系统允许的最大文件大小,我们将复合文件分成两个。通常,复合文件中的第一个子文件是入口点,对它的访问将触发对其余复合文件的预取。例如,当浏览器访问html文件时,它会自动加载css文件和flash脚本html文件可以作为这个三个子文件复合文件的入口点和预取触发器对于基于频率的合并,子文件的排序反映了如何访问子文件虽然同一组文件可能具有不同的访问模式和不同的入口点,但数据布局基于最流行的访问模式。3.3元数据表示和操作复合文件创建。当创建复合文件时,CFFS分配一个i节点,并将子文件内容的副本连接起来作为其数据。串联是块对齐的,以支持mmap。复合文件记录复合文件块偏移量和各个子文件的大小以及它们的去重复I节点信息然后,原始子文件被截断,它们的目录条目被重新映射到复合文件的i节点,并且它们的原始i节点被解除分配。因此,最终用户仍然可以看到名称空间中的单个逻辑文件,并且仍然可以定位单个子文件(图2)。I节点内容重构。可以动态重建已消除重复数据的子文件i节点默认情况下,子文件的i -n o d e字段继承组件文件的i -n o d e字段的因此,如果复合文件的i节点属于所有者A,则假定所有子文件都由所有者A拥有,除非另有说明。权限. 在文件打开时,首先基于复合i节点检查权限如果失败,则不需要进一步检查。否则,如果子文件具有存储为扩展属性的不同权限,则将再次检查该权限为了让这个方案发挥作用,分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图3.第三章。 CFFS目录映射示例,其中i节点编号大于0b 0111 1111表示复合文件。i-node在所有子文件中具有最广泛的权限。例如,在一个复合文件中,假设我们有一个只读子文件A和一个可写子文件B;那么,复合i节点的权限将是读写。但是,当以写权限打开子文件A时,扩展属性中的只读权限将捕获违规。时间戳各个子文件和复合文件的时间戳随每个文件操作而更新然而,在检查期间(例如,stat系统调用),我们返回子文件的时间戳如果时间戳信息对于系统的正确功能不是必不可少的(例如,web服务器上的html文件),CFFS也可以配置为使用复合文件的时间戳,而不是跟踪各个子文件的时间戳尺寸.对于数据访问(例如,读取和写入)时,偏移量将通过扩展属性中编码的子文件偏移量和大小进行转换和绑定检查。复合文件的大小是它的长度;它可以大于子文件的总大小。例如,如果删除了复合文件中间的子文件,则该区域在CFFS中被标记为空闲,而不会更改复合文件的大小。复合文件的大小允许旧版VFS跨复合文件内的子文件边界进行预取。I节点命名空间。形成i节点命名空间的一个简单方案涉及使用高零扩展位作为i节点编号,其中低M位保留用于子文件ID。对于不是复合文件成员的文件,此方案将显著减少可用的i节点数。改进的方案涉及仅当i节点数量超过某个阈值时才对i节点命名空间进行分区。我们将这个i节点编号范围称为CFFS唯一ID(CUID)。例如,我们可以将阈值设置为0b 0111 1111,这意味着低于0b 1000 0000的i节点数是普通的i节点数,相当于i节点的传统概念如果i节点数大于或等于0b 1000 0000(例如,0b 10000001),零扩展的高位被视为复合文件的I节点号(例如,0b 1000 0000),低位被视为子文件号。因此,在这种情况下,0b 1000 0001表示复合文件的第二子文件,其i节点编号为0b 1000 0000。图3示出了i节点号如何在目录中映射,其中i节点号超过阈值0b 0111 1111指示复合文件。 由于文件1的i节点编号低于阈值,因此它是一个常规文件,并且文件名被映射到常规i节点。文件2和3说明了如何支持传统的硬链接,其中多个文件名映射到同一个i节点编号。在这种情况下,两个i节点数都低于阈值。文件4、5和6是复合文件的成员,并且所有i节点编号都超过阈值。自零扩展以来第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月这些文件的高位是0B 1000000,文件4、5和6的名称被映射到相同的复合I节点号0B1000000。i节点编号的最后7位(0b 000 0000和0b 000 0001)表示复合文件中的子文件编号由于文件5和文件6具有相同的子文件编号,因此它们是硬链接。子文件查找和重命名。如果目录中的名称映射到CUID,则可以通过子文件ID查找子文件的属性。如果重命名操作不涉及将子文件从一个复合文件移动到另一个复合文件,则重命名将像CUID是非CFFS系统中的i节点编号一样但是,如果重命名操作涉及移动子文件,使得存在将复合子文件转换为常规文件或将常规文件转换为到一个复合子文件,CFFS会改变要移动的文件的CUID,我们需要存储后指针[7]来更新映射到CUID的所有名称。CUID中的更改可能会中断应用程序(例如,备份),其通过文件的i节点号唯一地标识文件然而,今天子文件和子文件成员资格更新。 当一个子文件被添加到复合文件中时,它被附加到复合文件中。当从复合文件中删除子文件时,CFFS扩展属性中相应的分配映射信息将被删除,因此子文件占用的区域可以重新映射或分配给新创建的子文件。子文件打开/关闭操作。对子文件的open/close调用与对复合文件的open/close调用是一样的,只是文件位置指针会相应地进行转换。子文件写操作。就地更新的处理方式与传统文件系统中的相同但是,如果更新涉及在复合文件的中间增加子文件,并且子文件的末尾没有可用空间,则我们将更新的子文件移动到复合文件的末尾该方案利用了潜在的时间局部性,其中一个不断增长的子文件可能会在不久的将来增长空间压缩。当分配给复合文件的大小的一半被释放时,复合文件会压缩其空间硬链接目录中的不同名称可以映射到相同的i节点编号或CUID。锁. 为了避免锁争用,我们构建了一个两级锁机制。复合文件锁可以被共享以用于对子文件的并发访问,并且每个子文件都有自己的锁。当更新可能影响多个子文件之间的一致性(例如,更新子文件成员资格、复合文件内的子文件偏移量例如,如果正在更新复合文件的子文件A和B,则每个子文件都被锁定以进行写入(每个子文件一个writer)。复合i节点的锁最初是共享的。如果子文件A被就地更新到已经映射的块,则它可以在复合I节点而不升级复合I节点的锁,因为不同的单个写入器子文件更新复合文件元数据的不相交字段。然而,如果子文件B被更新,并且当B超出当前分配的范围时涉及重新映射子文件的位置,则复合i节点的锁在进行此更新时变为独占的,然后在更新之后变为共享的。这种临时锁升级是必要的,因为当不同的子文件被重新映射时,它们需要在复合文件的结束位置上达成一致。请注意,子文件A可以保留其排他锁,因为子文件B的重映射操作与子文件A的就地更新 如果子文件A在子文件B的重映射操作期间进行了涉及增长子文件和重映射的更改,则必须等到子文件B的操作完成。如果子文件A被删除,则复合i节点压缩操作需要对所有子文件和复合i节点进行排他锁,因为重组涉及对整个复合文件进行更改。分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图四、Apriori算法识别文件引用流E、D、A、D、A、D、A、B、C、A、B、C、A、D的频繁访问文件集的步骤3.4标识复合文件成员身份3.4.1基于目录的整合。鉴于遗留文件系统具有围绕目录的根深蒂固的空间局部性优化,目录是文件访问模式的良好近似,并且用于形成复合文件。目前,此合并方案不包括子目录。基于目录的整合可以在所有目录上执行,而无需事先分析或跟踪文件引用。在部署之后,跟踪后续文件引用以更新复合文件成员资格(例如,将文件添加到目录中、跨目录移动文件基于目录的方案不会捕获目录之间的文件关系此外,即使很少访问许多目录,也可能形成许多复合文件3.4.2基于嵌入引用的合并。基于嵌入引用的合并根据文件中的嵌入文件引用标识复合文件成员身份。例如,一个html文件中可能嵌入了不止一个超链接,网络爬虫很可能通过这些链接访问每个网页在本例中,我们合并了原始html文件和引用的类似的思想也可以应用到源代码的编译中。我们可以从Makefile中提取依赖规则,并合并源文件,从而生成相同的二进制目标。由于文件更新可能会破坏依赖关系,因此我们需要持续或定期地筛选修改过的文件,以更新复合文件成员关系。基于嵌入式引用的方案可以识别跨目录访问的相关文件,但是可能不容易提取超出基于文本的文件格式的嵌入式文件引用(例如,html,源代码)。此外,还需要了解特定和不断发展的文件格式。3.4.3基于频率挖掘的整合。基于频率挖掘的安慰直接识别经常一起访问的文件。我们应用了Apriori算法的一个变体[2]。关键的观察是,如果一组文件经常一起访问(其出现次数超过阈值),则其子集也必须经常访问(Apriori属性)。图4说明了具有对文件A、B、C、D和E的访问流的算法初始通过。首先,我们计算每个文件的访问次数,然后删除计数小于阈值(比如两个)的文件以进行进一步分析。第二遍在第一遍之后,对于超过指定阈值的文件,我们进行置换,构建所有可能的两文件引用集,并计算它们的出现次数。每当文件A在B之后被访问时,或者反之亦然,我们递增文件集{A,B}的计数计数低于阈值的集合被移除(例如,{B,D})。第三关对于尚未消除的文件,我们可以基于剩余的两文件引用集生成所有三文件引用集但是,如果三文件参照集频繁出现,则其所有两文件参照集也需要频繁出现因此,像{A,B,D}这样的文件集被修剪,因为{B,D}在第二遍中被消除终止。在第三遍之后,由于我们不能再生成四个文件的引用集,因此算法终止。现在,如果一个文件可以属于多个文件集,我们返回集合{A,B,C}和{A,D}第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月作为两个经常访问的集合。像{A,B}、{A,C}和{B,C}这样的集合被删除,因为它们已经是{A,B,C}的子集。对于较大的输入文件流,该过程可以运行多于三遍以生成较大的参考集。为了限制算法运行时间,我们也可以选择通过设置最大通过次数或最大运行时间来终止算法。实际上,平均通过次数为4至5次。变化. 另一种方法是使用归一化阈值或支持度,它是集合出现的百分比(集合出现的次数除以总出现次数,范围在0和1之间)。除了跟踪文件集,我们还可以跟踪文件引用序列,以确定复合文件的入口点和内容布局我们目前不允许文件集重叠,以避免复制和维护一致性的复杂性。为了选择子文件的权限是否与复合文件相同,该决定取决于复合文件是否具有(1)更多的子文件,(2)更高的支持,以及(3)更近的这三条规则是按这个顺序应用的。优化。使用Apriori算法的一个实际问题是,随着遍数增加以找到更长的频繁序列,所需的存储器可能变得难以保持潜在置换候选序列的数量我们通过(1)使用更高的阈值来减少每次通过时频繁出现的序列的数量,(2)仅使用遇到的文件引用序列而不是构建置换序列的完整集合,以及(3)使用固定大小的滑动窗口来限制批量分析的文件引用数量,从而削减了内存需求另一个问题是,我们收集的跟踪包含来自并发引用流的文件引用并发引用流的重叠可以减少在独立执行时识别频繁引用的文件序列因此,我们通过PID或IP地址分离跟踪,并在通过Apriori算法分析它们之前将分离的跟踪连接起来我们的算法提供了分组文件的选择,无论是通过它们是如何被引用的序列或通过它们是如何被引用为一个集合。如果我们查找精确的序列,多个Apriori表条目可能包含以不同顺序引用的同一组文件;因此,Apriori表的大小相反,我们可以通过频繁引用的文件集来查找,以减少内存需求。集合查找的设计空间可能涉及在匹配之前将文件集合内的文件排序为规范顺序,或者可能涉及基于文件集合构造布隆过滤器位图[5],然后匹配位图。任何一种方法在计算或实现复杂性方面都可能过于繁重相反,我们使用交换哈希函数(即,hash(A,B)=hash(B,A))来加速集合查找。基于频率挖掘的合并可以基于动态文件引用识别复合文件候选然而,计算和存储器成本限制了其应用于更流行的文件引用序列,并且在系统可以获得性能优势之前需要一个学习期对于未来的工作,我们寻求探索更先进的,轻量级的数据挖掘技术,以减少成本和学习时间,提高CFFS的好处4执行CFFS的两个主要组件是复合文件成员资格生成器工具和CFFS。我们通过在Linux3.16.7上运行的FUSE(v2.9.3)框架[26](图5)在用户空间中对CFFS进行原型化CFFS堆叠在Ext4上 [14],以利用遗留工具和特性,例如持久性引导(例如,文件系统创建实用程序)、扩展属性和日志记录。分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图五、CFFS组件(阴影)和从应用程序到底层Ext4的数据路径CFFS定期从复合文件成员资格生成器工具中获取建议来创建复合文件。我们利用类似硬链接的机制来将多个文件名映射到同一个复合i节点。基本上,如果多个名称映射到同一个i节点号,它们将被解释为硬链接.如果多个名称被映射到同一个i节点编号,且零扩展前缀超过指定阈值,则这些文件将被映射到一个复合文件(请参见第3.2节)。目前,我们使用的i节点数阈值为15,因此i节点数的最后四位表示子文件的ID。这也意味着我们目前支持每个复合文件16个子文件。如果一个复合文件需要额外的子文件,我们将复合文件分解成多个复合文件。由于需要更新各个子文件的时间戳,我们拦截了所有与文件我们还需要确保各种访问使用正确的权限(例如,打开和再添加目录),转换的子文件偏移和大小(例如,读和写),以及时间戳(例如,getattr和setattr)。实际的复合文件、它的i-node和它的扩展属性由底层Ext4文件系统存储为具有丰富扩展属性集的常规文件我们没有为重命名操作实现后指针,重命名操作占重放文件系统操作的不到CFFS是用C++实现的,大约有1,900行代码。对于基于目录的合并,我们使用Perl脚本将目录中的所有文件作为复合文件成员列出。对于基于嵌入引用的方案,我们关注两种场景。对于web服务器工作负载,我们整合了html文件及其直接引用的文件。在复合文件成员关系冲突的情况下,优先考虑index.html,然后是第一个包含该文件的html另一个场景是源代码编译。我们使用Makefile文件作为合并源代码文件的指南对于基于频率挖掘的方案,成员资格生成器工具采用Apachehttp访问日志或strace输出。生成器实现了Apriori算法,支持参数设置为5%。分析批量设定为50K参比品。这些参数是根据经验选择的,以限制内存量和处理开销。生成器代码包含大约1,200个随机数。5绩效评价5.1实验装置我们比较了通过FUSE堆叠在Ext4上的CFFS与基线Ext4文件系统的性能在Ext4的情况下,IO请求通过空的FUSE模块路由,因此两个设置都包含FUSE的效果。实验在Dell T3600工作站上进行(表1)。微基准测试包括强调以下各个方面的工作负载:第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月表1.实验平台处理器2.8 GHz,Intel Xeon E5-1603,L1缓存64 KB,L2缓存256 KB,L3缓存10 MB存储器2GBx4,Hyundai,1,067 MHz,DDR3磁盘250 GB,7,200 RPM,WD2500AAKX,带16 MB缓存Flash200 GB,Intel SSD DC S3700见图6。HDD的微基准测试结果CFFS ( 例 如 , 元 数 据 更 新 以 及 将 更 新 的 子 文 件 迁 移 到 复 合 文 件 的 末 尾macrobenchmark重放了两个真实世界的跟踪,以比较形成复合文件的各种方法每个实验重复五次;结果以90%置信区间呈现5.2微基准为了显示CFFS在各个方面的性能,构建了八个工作负载:顺序读取,随机读取,顺序重写,随机重写,扩展和压缩的一般写入,纯元数据读取,以及创建和删除操作。工作集是通过创建80K复合文件生成的,每个复合文件有8个16 KB的子文件(总共10 GB)。对于Ext4,生成了640 K 16-KB文件(10 GB)对于顺序读取操作,每个子文件都是顺序读取的;随机读取没有固定的顺序同样的顺序也适用于重写工作负载。对于一般的写操作,子文件是随机选择的写入数据的大小均匀分布在0到64 KB之间,导致就地重写或子文件迁移到组件文件的末尾。这可以通过在复合文件的中间留下一个“洞”来进一步更新对于仅元数据操作,stat系统调用应用于随机选择的子文件。对于创建和删除,测试了底层Ext4文件系统,以比较创建和删除大量具有相同总大小的文件。每个基准在HDD上运行 10,000次,在SSD上运行100,000次,以确保基准运行足够的持续时间(例如,>30秒);然后报告完成时间图6和图7分别显示了HDD和SSD上的CFFS和Ext4之间的完成时间比较分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图7.第一次会议。SSD的微基准测试结果在HDD上,CFFS完成顺序和随机读取操作的速度比Ext4快 31%和21%由于跨边界预取,CFFS提供了更快的顺序读取;对于随机读取操作,21%的好处归因于元数据整合。CFFS整合了小文件的元数据,更有可能避免从磁盘读取元数据通过连接子文件数据,CFFS支持跨子文件的预取,这进一步提高了吞吐量。这些结果验证了CFFS在跨边界预取和元数据整合方面的优势。然而,每个组件的实际贡献取决于实际测试设置。重写操作也有类似的趋势CFFS完成顺序和随机重写操作的速度分别比Ext4快 36%和40%由于它仅限于就地更新,CFFS很好地处理了就地写入;这些操作与读取操作类似,但包括元数据更新。然而,对于相同数量的写入数据,CFFS通过整合公共元数据属性来更有效地处理元数据更新,如stat微基准测试所示:CFFS比Ext4快近92%这表明CFFS擅长元数据和只读操作。CFFS在写入空间压缩操作时的性能并不比Ext4好,因为它可能需要将子文件迁移到复合文件的末尾。在接近满的文件系统中,分配更多空间可能是一项代价高昂的操作,可能会进一步增加未来读取或写入操作的寻道时间。此外,如果复合文件过于稀疏,CFFS会定期压缩复合文件。在执行基准测试时,此操作会产生更多开销;因此,对于涉及迁移和压缩的HDD写入操作,CFFS比Ext4慢20%。由于CFFS是在Ext4之上构建的,因此创建复合文件将转换为创建Ext4文件,然后添加子文件的内容,删除复合文件将转换为删除包含子文件内容的Ext4文件因此,创建和删除复合文件转换为创建和删除不同大小的Ext4文件相比之下,Ext4在不使用复合文件的情况下必须创建和删除八倍多的文件复合文件创建和删除操作是在复合文件生成和重新生成过程中触发的,这些操作要么作为初始设置的一部分出现,要么作为增量开销出现。这些任务第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图8.第八条。HDD的Web服务器请求延迟分别需要使用Ext4执行相同操作所花费时间的21%和13%。这意味着,当系统被部署用于生成或删除复合文件时,与Ext4相比,额外的开销要小得多。在SSD的情况下,观察到类似的趋势除了涉及迁移和压缩的写入操作外,CFFS在所有操作上的性能都更好然而,随机操作的性能增益例如,与Ext4上的SSD操作相比,CFFS上的SSD随机读取和随机重写分别仅快8%和32%原因与HDD的情况类似,其中通过合并公共元数据属性来更有效地执行元数据更新这种趋势也适用于stat操作,CFFS和Ext4之间的差距这是合理的,因为从SSD设备读取数据的延迟远远低于HDD。对于顺序操作,SSD的性能增益仍然与HDD相当5.3Web服务器跟踪重放第 一 次 跟 踪 重 播 是 基 于 从 我 们 的 部 门 Web 服 务 器 收 集 的 HTTP 日 志 ( 01/01/2015-03/18/2015)。跟踪包含14M文件引用,涉及1.0 TB数据。在对文件的引用中,310万个文件是唯一的,包含76 GB的数据。我们在存储设备上进行了多线程、零思考时间的跟踪重放。我们还跳过了没有活动的跟踪间隔在戴尔工作站上执行了回放在每次实验之前,我们都用虚拟内容重建文件系统。对于目录和基于嵌入引用的方案,复合文件成员关系不断更新对于基于频率挖掘的合并,分析是分批执行的,但合并文件每天更新。硬盘性能。图8显示了磁盘的Web服务器请求延迟的CDF,从发送请求到完成请求的时间测量。我们工作的初衷是减少元数据IO的数量,并改进经常一起访问的小文件然而,更少的访问的好处是分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图9.第九条。SSD的Web服务器请求延迟合并后的元数据将其自身显示为所有子文件的元数据预取,并且复合文件语义支持跨文件预取,从而导致更高的缓存命中率。基于嵌入引用的整合表现最好,有62%的请求是从缓存中处理的;这比Ext4的结果高出20%因此,基于嵌入式引用创建的复合文件可以更准确地捕获访问模式整个重放时间也减少了约20%。基于目录的复合文件还可以将缓存命中率提高15%,这反映了目录捕获空间位置的有效性基于频率挖掘的合并比基于目录的合并表现更差我们检查了跟踪,发现48%的引用是由爬虫程序进行的,其余的是由用户进行的。因此,挖掘算法的分叉流量模式形成了不太积极的文件分组,从而减少了收益。SSD性能。图9显示了SSD的Web服务器请求延迟的CDF与磁盘相比,相对趋势相似,由于SSD的速度,缓存未命中的请求延迟时间减少了两个数量级由于主要的性能提升是通过引用已经通过复合文件粒度预取和缓存的数据和元数据实现的,因此HDD和SSD设备都可以看到这20%的性能提升5.4软件开发文件系统跟踪回放通过strace从软件开发工作站(2014年11月20日至2014年11月30日)收集第二个跟踪该跟踪包含对24 GB数据的超过2.4亿次与文件在对文件的引用中,291,133个文件是唯一的,拥有2.9 GB。在读和写操作之间,59%是读,41%是写。对于这种重放,更难以捕获各个文件系统调用请求的延迟,因为许多是异步的(例如,写),而像mmap这样的调用则省略了发送到底层存储的请求数量的细节因此,我们用总的运行时间来总结我们的结果,其中包括复合文件操作的所有开销,不包括基于目录和基于嵌入引用的方案的初始设置成本(图10)。第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月图10个。软件开发文件系统跟踪重放的运行时间硬盘性能。基于嵌入引用的方案覆盖率很低,因为许多引用与编译无关。因此,经过的时间更接近Ext4。基于目录的整合实现了17%的运行时间减少,但基于频率挖掘的方案可以实现27%,因为复合文件包括跨目录的文件SSD性能。不同整合设置的相对性能趋势与HDD相似。和网痕一样,增益高达20%。当比较HDD和SSD实验之间的性能改进差距时,SSD无法实现HDD下高达11%的性能增益,因为SSD不会产生磁盘寻道开销。5.5间接费用基于目录和基于嵌入引用的方案。基于目录和基于嵌入式引用的方案会产生初始部署成本,以基于目录和嵌入式文件引用创建复合文件。嵌入引用方案的初始成本取决于可以从中提取文件引用的文件类型的数量。对于我们的工作负载,这个成本从1到14分钟不等。至于更新复合文件成员身份的增量成本,添加成员涉及向复合文件追加子文件删除成员主要涉及元数据更新。直到分配给复合文件的一半空间被释放后,复合文件才会被压缩由于跟踪重放数已经包含了这种开销,因此这种成本似乎可以忽略不计,因为压缩操作的频率相当低,并且可以通过好处来抵消基于频率挖掘的方案。跟踪收集开销低于0.6%,跟踪分析的内存开销在200 MB以内,平均每天15M行日志。基于频率挖掘的方案涉及从最近的文件引用中学习。我们花了几个星期的时间进行重播,以充分利用这个方案(图11)。在开始阶段,由于分析和形成的开销,效益接近于零,甚至为负复合文件。然而,效益稳步增加,并在6周后稳定下来。在日常开销方面,由于基于频率挖掘的方案不涉及初始部署,因此在分析跟踪日志和形成跟踪日志的过程中,分离文件和元数据的一对一映射以提高性能第五章:ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月∼图十一岁基于频率挖掘的方案随时间的性能增益图12个。分析日志的日常开销复合文件成员资格。复合文件成员的流失率在几天后放缓并稳定下来,进一步降低了增量成本。在稳定状态下,重新组织复合文件成员关系涉及平均每天复制148个文件(44 MB)图12显示了分析Web日志的每日增量成本。在最初的几天里,日志处理可能需要几百秒。然而,在这个初始阶段之后,除非发现新的、频繁出现的序列,否则每天的开销往往小于100秒5.6讨论和今后的工作复合文件可以使使用不同存储介质的读主导工作负载和读写工作负载受益,这表明性能提升主要是由于IO数量减少(20%)。SSD和HDD之间的性能改进差距表明,由于减少了磁盘寻道和修改了数据布局,性能增益可能达到约10%。基于这种经验,我们对形成复合文件的方法、合并元数据的性能影响以及复合文件所支持的预取之间的关系很感兴趣未来的工作将探索更多的方法来形成复合文件,并量化它们与绩效贡献的不同组成部分的相互作用。此外,未来的研究将探索元数据压缩、并发性和安全性的全部后果在构思这项工作时,关于FUSE开销的研究尚未发表[28]。然而,我们承认,由于存在以下因素,测量的性能可能会失真:第五章:S. Zhang等人ACM Transactions on Storage,Vol.号161、第五条。出版日期:2020年3月FUSE层。作为将来的工作,我们将把CFFS实现移植到内核并测量原始性能。目前,复合文件的成员决定没有利用知识的文件类型。例如,更新一次就不再更新的文件将是形成复合文件的理想候选者。相反,日志文件将是较差的候选者,并且小文件可能比大文件更好。虽然我们目前有工具允许用户直接指定复合文件,但将来我们将探索自动使用自动化方法来确定复合文件成员。CFF
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功