[IO]Optimizing Parallel I/O Acce

2022-01-18  本文已影响0人  sagfugetabf

文章时间:2019年10月前
会议/期刊:ToC 2020
作者背景: 浙江大学
笔记时间:2022年01月17日周一
论文地址:https://ieeexplore.ieee.org/document/8862852


Abstract
随着处理器和存储设备之间的性能差距不断扩大,I/O性能成为现代高性能计算系统的关键瓶颈。在本文中,我们提出了一种模式导向和布局感知的数据复制设计,名为PDLA,以提高并行I/O系统的性能。PDLA包括基于hdd的方案H-PDLA和基于ssd的方案S-PDLA。对于I/O并发性相对较低的应用程序,H-PDLA识别应用程序的访问模式,并通过优化的数据布局为基于hdd的服务器上的每个访问模式重新组织数据副本。此外,为了适应具有高I/O并发性的应用程序,S-PDLA复制了可以在基于ssd的服务器或基于hdd和基于ssd的服务器上带来性能优势的关键访问模式。我们已经在OrangeFS文件系统之上的MPICH2库下实现了建议的复制方案。实验结果表明,H-PDLA能够显著提高原并行I/O系统的性能,并证明了S-PDLA相对H-PDLA的优势。

第一章 Intro
在未来的十年里,超级计算机将从千万亿级向百亿亿级发展。虽然半导体技术的快速发展使处理器的速度在过去的十年里呈指数级增长,但数据输入/输出(I/O)系统和存储设备的发展未能跟上计算能力的发展。这种处理器和存储设备之间不平衡的技术进步导致了所谓的I/O-wall问题[1]。

与此同时,高性能计算(HPC)域中的应用程序对数据的需求越来越大,给已经饱和的I/O系统带来了更大的压力。例如,在天文学中,大型射电望远镜会将观测图像连续存储到存储系统中,以供进一步分析。望远镜可以以每秒几千兆字节甚至每秒十亿字节的速度产生数据。

为了满足科学应用对海量数据的需求,高性能计算中心广泛部署并行I/O系统来提供数据服务。通过使用更多的文件服务器扩展存储系统,超级计算机可以实现可伸缩的I/O带宽和存储容量。不幸的是,虽然并行I/O系统为许多数据访问模式(如大型I/O请求)提供了良好的峰值性能,但对于特定的访问模式(如非连续的小I/O请求[1]、[4]),它们的性能却不佳。

为了提高I/O系统性能,开发了许多I/O优化技术,例如数据筛选[5]、List I/O[6]、DataType I/O[7]和Collective I/O[5]。然而,优化I/O性能是一项容易出错且耗时的任务,特别是对于具有复杂I/O行为的应用程序。I/O性能取决于应用程序,一般的I/O系统需要根据不同的应用程序[8],[9]进行调整。这提高了我们提出的解决方案的预期属性:I/O优化应该考虑应用程序和系统的特性,并适应不同的应用程序。

在本文中,我们提出了一种模式导向和布局感知的数据复制方法,名为PDLA,以提高基于hdd的并行I/O系统的性能,目前这仍然是HPC应用程序的主要存储平台。“模式”指的是应用程序如何访问文件,“布局”指的是文件数据如何跨多个文件服务器分布。PDLA的动机是三个观察结果。首先,科学应用程序通常表现出数据访问模式。利用应用程序的模式信息进行I/O优化是有价值和可行的。其次,对于硬盘驱动器(hdd)和固态硬盘(ssd)来说,连续的数据访问通常可以获得更高的I/O性能。第三,并行文件系统中的数据布局会很大程度上影响I/O系统的性能。

基于这三个事实,我们首先提出了一个基于hdd的模式导向和布局感知的复制方案H-PDLA,以提高基于hdd的服务器(HServers)上的并行I/O系统性能。H-PDLA包括两个主要的优化。在“模式导向”(PD)复制策略中,系统为应用程序的每个确定的数据访问模式创建一个重新组织的数据副本。因此,复制空间中的逻辑数据将按照应用程序访问它们的顺序重新组织。在确定重组后,在“布局感知”(LA)副本放置策略中,系统根据对数据访问时间成本的定量分析结果,将生成的具有优化数据布局的副本存储在HServers上的同一个PFS中。一旦副本准备好,I/O系统就能够以友好的访问模式为副本上的未来数据请求提供服务。

此外,由于跨多个hserver进行数据复制可能仍然不足以满足具有高I/O并发性的应用程序,我们提出了一种基于ssd的PDLA复制方案,即S-PDLA,它利用基于ssd的服务器(SServers)来存储副本文件,以提高I/O性能。由于在所有访问模式下,sserver的性能并不总是优于HServers,而且在某些访问模式下,所有的服务器协同工作可能会优于单独的sserver,因此S-PDLA选择可以带来性能优势的关键模式,在sserver或HServers+ sserver上进行经济有效的数据复制。S-PDLA利用SSD的更高的I/O性能和选择性的数据复制策略,可以有效地利用SSD的空间,并在处理大量进程的应用中最大化I/O系统性能。

具体而言,本研究做出了以下贡献。

我们提出了一种基于hdd的PDLA数据复制方案,H-PDLA,它可以发现应用程序的访问模式,并根据访问成本分析,通过优化数据布局将副本放在多个hserver上。

我们提出了一种基于ssd的PDLA数据复制方案,即S-PDLA,它能够识别关键的访问模式,并有选择地将其副本存储在SServers或所有HServers+ sserver上,并进行优化布局,以进一步提高I/O系统的性能。

我们在OrangeFS之上的MPICH2中实现H-PDLA和S-PDLA。典型基准测试和实际应用的实验结果表明,H-PDLA能够显著提高并行I/O系统的性能,并证明了S-PDLA相对于H-PDLA的性能优势。

本文的其余部分组织如下。第2节给出了H-PDLA和S-PDLA的动机。第3节和第4节分别描述了H-PDLA和S-PDLA的设计和实现。第5节给出了评价结果。第6节介绍了相关工作。最后,第七节总结了本文。

第二章 动机

2.1 H-PDLA的动机
应用程序展示了I/O访问模式。许多HPC应用程序以特定的方式读写数据。换句话说,它们的I/O行为显示了访问模式。例如,由于程序代码的迭代循环结构,一些单独或一组数据访问可能在特定的请求距离下重复多次[10]。由于这些HPC应用程序经常运行多次来生成和分析数据,因此在不同的运行[11]、[12]中,可以在相同的执行环境和配置中识别出相同的模式。因此,收集和利用这些信息来指导数据复制是可行的。

首选连续访问。传统的hdd是现代并行I/O系统中的主要存储媒体。由于非连续数据访问通常涉及耗时的磁头查找,因此比非连续数据请求具有更高的I/O性能。此外,虽然ssd具有与hdd不同的存储特性,但它们对于连续的I/O请求[13]也表现出更好的性能。因此,通过数据复制产生更多连续的I/O请求,可以提高I/O系统的性能。

数据布局影响I/O性能。并行文件系统支持多种数据布局,这决定了文件数据如何分布在多个文件服务器上。典型的方法可以将数据分布在一台服务器、一组服务器和所有服务器上。正如前面的工作[8]、[14]、[15]所示,并行文件系统中的数据布局可以显著影响I/O系统性能,因为对于给定的I/O请求,它涉及不同的网络和存储活动。对于数据访问行为不同的应用,优化后的数据布局也不同。为了最大限度地提高I/O系统的性能,理想的数据布局方案应该根据应用程序的数据访问特性选择优化的数据布局。

2.2 S-PDLA的动机
H-PDLA只适用于I/O并发性相对较低的应用程序。这是因为优化后的数据布局只有在每个服务器处理少量进程时才能很好地执行。但是,在大规模的HPC系统中,当进程数量明显大于HServer数量时,每个HServer仍然需要频繁地在多个进程之间切换,导致I/O效率非常低。由于基于闪存的ssd具有更高的I/O性能,并且比hdd对随机访问更不敏感,因此提出S-PDLA是很自然的,它可以在系统中添加额外的sserver来优化数据复制。然而,由于以下的观察结果,这样做并不容易。

首先,在sserver上复制所有访问模式的数据并不总是能提高I/O系统性能。虽然SSD的性能通常优于HDD,但SServers是否优于原来的HServers就变得不确定了。这是因为聚合的I/O带宽依赖于多个因素,如服务器数量、数据布局和数据访问模式[8]、[16]。因此,S-PDLA需要进行选择性模式复制,以确保性能优势。

其次,所有服务器(HServers+SServers)一起工作可能比单独HServers或sserver提供更好的I/O性能。之前的工作已经表明,如果使用优化的数据布局,所有服务器可能会提高某些访问模式(例如,大请求)的I/O性能,因为它们有更高的I/O并行度[17]。因此,尽管在SServers上存储副本数据是很自然的,但是S-PDLA的另一种替代方法是在所有HServers+ sserver上存储它们,这样做是有益的。

第三章 H-PDLA设计

3.1 H-PDLA概述

图1为H-PDLA复制方案的系统概述,该方案位于MPI-I/O库中,按时间顺序分为三个阶段。在第一阶段,即应用程序首次执行期间,模式识别模块识别并保存数据访问模式。在第二阶段,系统根据识别的数据访问模式直接创建副本。与原始数据文件相比,副本文件按照访问数据的顺序表示数据。在第三阶段,系统自动将同一个应用程序以后运行时的I/O请求转发给副本文件,以获得更好的性能。

3.2 数据存取模式识别
3.2.1跟踪收集器
这个模块负责捕获MPI标准中的MPI- io调用。它是一个I/O中间件库,可以链接到我们想要跟踪的任何应用程序。除了这个链接步骤之外,不需要修改程序。在执行期间,应用程序被链接到这个I/O库,每个进程生成一个包含其所有I/O操作的跟踪文件。对于每个文件操作,跟踪收集器收集以下信息:1)MPI级别和进程ID;2)文件ID;3)文件偏移量和请求大小;4) I/O操作的名称;5)运行的启动时间;6)操作结束时间。跟踪收集器还记录唯一文件ID和文件路径之间的映射。

3.2.2访问模式定义
许多应用程序的数据访问遵循特定的模式。在本研究中,我们从五个方面定义了I/O访问模式:空间局部性、请求大小、时间信息、迭代行为和I/O操作。空间局部性表示连续访问之间的字节顺序距离。它们可以是连续的、非连续的或它们的组合。请求大小可以是小的、中的或大的。小的I/O请求在发送到磁盘时,通常会导致I/O瓶颈。时间信息根据数据访问的间隔进行分类,可以是固定的(I/O周期性发生),也可以是随机的。迭代行为指的是I/O请求的重复次数,可以是重复的,也可以是非重复的(即,只有一次)。I/O操作分为只读、只读、读和写。

我们将数据访问模式分为两种类型:局部的和全局的。本地访问模式表示进程的I/O行为,该进程是应用程序的一部分。然而,在某些情况下,局部模式不能反映整个应用程序的真实情况。例如,当一个应用程序进行所有进程都参与的集体I/O操作时,每个进程的操作不再是分离的行为。通过共同分析本地I/O访问模式,可以获得应用程序的全局访问模式。关于访问模式定义的更多细节可以在我们之前的工作[11],[12]中找到。

虽然模式可能包括其他属性,但在本研究中,我们只关注空间模式,因为它们会极大地影响I/O性能[5]、[6]、[12]。我们将基于其他模式的复制优化作为未来的工作。

3.2.3采集访问模式
跟踪分析器识别数据访问模式。这是一个脱机程序。通过将收集到的跟踪文件作为输入,分析器执行分析以获得数据访问模式。本模块的详细实现将在章节3.6中描述。获得数据访问模式后,系统将其存储在模式数据库中,以指导以下数据复制操作。

3.3模式导向复制策略
3.3.1副本创建策略
提出的方案为原始数据之外的每个识别的访问模式创建一个副本。每个副本包含一个数据对象,而不是整个文件。它只包含在数据访问模式中访问的数据,如图2所示。未被访问或不属于任何数据访问模式的数据将不会被复制,而只存在于原始文件中。此外,副本中的数据会根据相应的访问模式按照访问顺序重新组织。每个副本都作为新文件存储在同一个文件系统中。与简单的数据复制相比,这种策略可以更有效地利用存储空间。

通常,副本的数量在数据可用性和性能方面起着关键作用。虽然分布式文件系统HDFS默认将该参数设置为3[18],但由于以下原因,我们在并行文件系统中为每个识别的访问模式创建一个副本。首先,一个副本提供的性能与HPC域中的n(n>1)个副本相当,在HPC域中,多个进程很少并发地读取相同的数据。即使发生这种情况,由于应用程序通常采用集体I/ o访问数据,从存储节点读取数据的进程也更少。其次,该策略可以更有效地节省存储空间。第三,很容易维护副本和原始数据之间的数据一致性。

由于应用程序可能同时具有局部模式和全局模式,因此该方案首先为所有全局模式创建副本,然后为局部模式创建副本。这可以减少数据副本的数量,并保持数据布局优化的灵活性。如图3所示,局部模式0和1被合并,因此它们的数据在同一个文件中-副本0。局部模式2不属于任何全局模式,它的数据是独立的。

3.3.2何时创建副本
副本的创建是一个脱机过程。也就是说,建议的方案不会与正在运行的应用程序同时创建副本。在应用程序的第一次执行期间,该方案发现所有数据访问模式,然后将它们添加到I/O系统的模式数据库中。然后,系统开始根据新添加的模式队列进行复制。这些操作只能在有空闲计算资源和I/O带宽的情况下进行,不会影响正常任务的执行。在我们未来的工作中,系统可能允许用户将定制的模式添加到队列中。在这种情况下,应用程序的未来运行将使用指定的模式访问其他数据,从而提高系统的I/O性能。

3.3.3副本存储位置
我们将复制文件存储在应用程序运行的同一并行文件系统中。副本文件只对I/O中间件可见,该中间件将应用程序I/O请求从原始文件重定向到副本。所有的副本都放在一些特殊命名的目录中,只要系统的元数据保持副本的文件路径,任何命名规则都可以工作。由于现代并行文件系统通过设置文件目录的属性来支持文件数据布局的调整,因此将副本文件存储在分离的目录中为布局感知的副本布局提供了方便。

与几乎所有其他复制方案一样,面向模式的复制策略会消耗额外的存储空间。这是数据访问性能和存储容量之间的权衡。但是,对于许多应用来说,从节能的角度来看,这是一个很好的权衡。减少数据访问时间将减少能源消耗。此外,由于副本是原始数据的一小部分活动数据,因此原始数据可以存储在慢旋转磁盘甚至磁带上。对于这类应用程序,空间的权衡变得模糊,I/O性能和能源消耗的增加变得明显。本研究不探讨节能问题,主要关注I/O优化。

3.4感知布局的副本放置策略
3.4.1并行文件系统中的数据布局
在本研究中,我们将流行的数据布局方案分为三种类型:一维水平(1-DH)、一维垂直(1-DV)和二维(2-D)数据布局。如图4所示,1-DH将每个进程的数据放置在所有可用的存储节点上。1-DV将每个进程的数据分布在一个存储节点上,而2-D将每个进程的数据分布在一组存储节点上。

在这些方案中,1-DH是应用最广泛的一种,因为它可以在许多情况下提供良好的I/O性能。它是OrangeFS中默认的数据布局方法,即“简单条带化”。然而,在某些情况下,它的性能很差。例如,当进程数远远大于存储节点数时,每个存储节点都需要同时处理来自所有进程[4]的并发请求,因此每次I/O请求都会有很大的延迟。在这种情况下,1-DV比1-DH提供更高的I/O性能,因为每个节点需要服务更少的进程。这个示例表明,对于不同的数据访问模式,我们应该选择不同的数据布局,以产生最佳的I/O系统性能。

3.4.2 hdd服务器成本模型
由模式导向复制方案创建的副本在存储之前是逻辑文件。在将它们存储到并行文件系统中时,感知布局的数据存储优化首先需要识别出它们的优化数据布局。为此,我们利用一个数学模型来评估计算环境中的数据访问成本。关键参数如表1所示。假设T1VH、T1HH和T2DH分别表示基于hdd的文件系统在1-DV、1-DH和2- d布局下的数据访问时间,则成本模型如表2所示。该模型是有效的,并在一个实际的并行I/O系统中得到了全面的验证。更多关于模型构建和验证的细节可以在我们之前的研究[8]中找到。

我们可以从模型中得出一些简单的指导方针。1)当p < n和s很大,1-DH政策三个政策之间的成本最低。

2)当p≈n, s为中值时,二维布局策略产生的带宽比其他两种策略大。3)当p>n和s相对较小时,1-DV布局策略为最佳选择。

3.4.3布局感知副本放置
基于所提出的成本模型,基于布局感知的副本布局方案工作如下。首先,对于给定访问模式中的每个请求,成本模型会估计在这三种数据布局下的访问成本。然后将所有请求的开销加在一起,得到整个模式的访问开销。此外,对于每个数据布局,模型生成一个成本结果。自然,产生最低成本的数据布局是优化的选择,该方案将在并行文件系统中采用这种优化的布局来进行相应的副本布局。

3.5 I / O重定向
I/O重定向模块将原始的I/O请求重定向到新创建的副本。通常,应用程序用三个参数发出I/O请求:原始文件的标识符、数据偏移量和请求大小。根据这三个参数、运行时信息(表1中列出的参数)和副本目录中的元数据定位副本文件后,重定向模块在原始文件和副本文件之间转换文件名和偏移量,并使用副本文件完成请求。

3.6实现
我们在OrangeFS上实现了H-PDLA复制方案的原型及其在MPICH2下的运行时系统。该实现在默认的并行I/O系统中添加了一些组件。下面我们将详细解释每个组件。

3.6.1跟踪采集器和分析器
虽然有几种工具可以用于收集跟踪和分析模式,但我们选择IOSIG[11],因为它可以捕获我们方案所需的信息,而且只会带来较低的开销。IOSIG是MPI-IO层的一个可插拔库。通过使用Profiling MPI接口,它收集所有文件I/O操作的数据访问信息。应用程序的所有文件操作都记录在跟踪文件中,每个文件针对一个单独的进程。除了MPI-IO接口外,IOSIG还支持用于便携部署的标准POSIX IO接口。

跟踪分析器是用Python实现的,用于进行脱机跟踪分析。它利用一种“模板匹配”方法来识别数据访问模式,这些模式以我们之前的工作[12]中定义的I/O签名的形式表示。通过在每个跟踪文件中用游标标记分析进度,分析器从第一个记录开始,并向前移动游标以扫描所有记录,直到到达最后。在扫描过程中,分析器总是选择一个预定义的访问模式作为模板,以检查它是否与游标周围的记录匹配。一旦找到匹配,光标将沿着跟踪中的相同模式向前移动,直到匹配不保持。如果第一个模板没有匹配,分析器切换到其他模板并再次尝试。如果不能为所有模板找到匹配,则跳过当前记录,向前移动光标,并从新位置开始匹配。分析器通过分析每个跟踪文件生成所有的局部模式。然后,它检查所有的局部模式,并将相对模式合并成全局模式。跟踪分析器将获得的模式插入到模式数据库中。

3.6.2模式数据库
数据复制器和I/O重定向模块都需要检索应用程序的数据访问模式。我们将此元数据信息保存在“模式数据库”中。它保存了应用程序与其数据访问模式之间的映射关系,包括:1)模式属于哪个应用程序;2)模式所依赖的文件类型;3)这一过程属于模式的秩;4)全局访问模式中包含哪个本地访问模式。Pattern Database还保存所有者应用程序的运行时环境中的元数据,主要包括系统的参数,这些参数将用于确定生成的复制文件的优化数据布局。

我们使用Berkeley DB来实现模式数据库。Berkeley DB是一个哈希表,它的每条记录都是一个键值对。这个键是一个“patternID”,它由以下信息编码:应用程序的执行命令,进程数,进程的等级,和原始文件名;该值包含数据访问模式和运行时信息。代码中的值表示是一个结构定义(在C语言中),它包括几个固定的成员变量和各种类型的数据访问模式的联合(也是在C语言中)。、

3.6.3数据复制器
数据复制器是一个轻量级守护程序,它监视包含需要复制的所有数据访问模式的队列。当跟踪分析器将一个新的访问模式插入模式数据库时,它也将相同的模式插入到这个全局队列中。当队列不为空时,复制器将取消访问模式的队列,并开始根据它们进行复制,一次一个。同时,数据复制器使用运行时信息(表1中列出的参数)和成本模型来找到优化的数据布局。然后,它只是从原始文件读取数据,并将它们写入具有优化的数据布局的副本文件。我们使用Berkeley DB内置的队列访问模式来实现这样一个队列。要配置数据布局,数据复制器只需在OrangeFS中设置一个具有优化数据布局的目录,然后将副本存储到该目录中。OrangeFS提供了一个配置目录数据布局策略的工具。

数据复制器也像复制扫描器一样工作。它定期扫描模式数据库,一旦发现缺少模式的原始文件,就会删除相应的数据副本和相关的元数据。

3.6.4复制目录
副本目录存储副本的元数据。它管理数据副本、原始文件和数据访问模式之间的关系。元数据包括1)副本的数据来自哪个原始文件,2)副本是基于哪个访问模式创建的。它的实现也使用Berkeley DB配置为哈希表;键是patternID(与Pattern Database中的键相同),值是基于相应数据访问模式的副本文件路径。

3.6.5 I / O重定向
该模块根据请求的具体情况将I/O请求重定向到原始文件或副本文件。通常,应用程序用三个参数发出I/O请求:原始文件的标识符、数据偏移量和请求大小。根据这三个参数、运行时信息和副本目录中的元数据定位副本文件后,重定向模块在原始文件和副本之间转换文件名和偏移量,并使用副本完成请求。

我们对MPI-IO标准函数进行了以下修改,以基于请求细节重定向I/O请求。

MPI_File_open:当打开一个文件时,该方法尝试打开相应的副本文件,而不是打开原始文件。

MPI_File_read/MPI_File_write(和其他读/写格式,如MPI_File_read_at,等等):对于每次I/O读或写,这个函数使用副本文件的文件句柄,并检查访问模式是否改变,或者打开的文件是否包含请求的内容。如果应用程序仍然遵循相同的模式,模块计算正确的数据偏移量,并使用新的偏移量和文件句柄发出请求。如果模式发生了更改,则模块会发现新的模式,打开新的复制文件,并向它们发出请求。

MPI_File_close:关闭打开的复制文件。

MPI_File_seek:它计算偏移量,并在必要时在副本中执行查找操作。

当请求的数据不属于任何数据访问模式,也没有副本时,系统的行为与默认的MPI-IO实现相同。

第四章 S-PDLA设计

在前一节中,我们描述了基于hdd的并行I/O系统的H-PDLA复制方案。正如第2.2节所讨论的,H-PDLA对于具有高I/O并发性的应用程序来说是低效的。为了解决这个问题,我们提出了一种新的基于ssd的复制方案,S-PDLA来进一步提高I/O系统的性能。

4.1 S-PDLA的思想
S-PDLA的基本思想是利用SServers作为原始文件系统的复制空间。(1)以来SServers并不总是执行比HServers所有访问模式和(2)所有服务器可能比纯SServers访问模式,S-PDLA只有选择关键模式可以带来显著的性能好处进行成本效益数据复制SServers或HServers + SServers。

图5显示了S-PDLA方案的思想。当原始HServers上的数据副本效率低下时,它会复制SServers上的一些已识别的访问模式,以及HServers+SServers上的其他访问模式。在何处存储模式的副本由复制效益分析决定。在随后的I/O服务阶段,S-PDLA根据请求的具体情况,自适应地将I/O请求重定向到SServers或HServers+SServers。与SServers上不加区别地复制所有访问模式的数据的简单方案不同,S-PDLA通过选择性的数据复制,既节省SSD空间,又最大限度地提高I/O系统性能。S-PDLA通过优化的数据布局将副本数据分布在sserver上,因为它们也会影响基于ssd的I/O性能[1],[4]。为了简单起见,S-PDLA只在HServers+SServers上存储副本数据,并且采用1-DH布局。另外两种类型的数据布局也可以应用于S-PDLA[4]、[9];我们将在未来的工作中将其整合到S-PDLA中。

4.2 sserver和HServers+ sserver成本模型
为了实现经济有效的数据复制,我们提出了两种成本模型来评估不同类型服务器上的文件请求的数据访问时间。

4.2.1 sserver成本模型
对于sserver,模型中的相关参数如表3所示,成本模型如表4所示。与3.4.2节中的前一个模型相似,该模型有三个不同点。首先,sserver的数量可以不同于hdd模型中的hserver。其次,sserver的读写性能是不同的,因为在SSD上写操作通常会涉及后台活动(如垃圾收集和均衡磨损),而读操作则不会。第三,由于ssd硬盘具有更高的I/O性能,因此ssd硬盘的启动时间和单位数据访问时间要比hdd硬盘小得多。通过考虑这些配置和设备的差异,该模型可以有效地评估服务器上的请求性能

4.2.2 HServers+ sserver的成本模型
为简单起见,我们只考虑1-DH数据布局。由于HServers和SServers具有异构性能,我们假设数据分布在HServers和SServers上,文件条带大小分别为sh和ss,以缓解服务器之间的负载不平衡。我们假设每个文件请求都由所有的nh+ns服务器处理,即nh∗sh+ns∗ss=s。为了实现负载均衡,通常ss要大于sh。在极端情况下,如果有可能提高性能,sh可以为零(这意味着文件数据只分布在SServers上)。基于这些假设,相应的成本模型如表5所示。

注意,模型中的数据访问时间是两个变量的函数,对于给定的文件请求,sh和ss。它由线性不等式和未知变量不等式组成(最大表达式可以描述为多个线性不等式)。因此,我们可以使用线性规划(LP)优化技术或迭代算法来找到给定假设下的优化条带大小。由于线性规划仅用两个未知变量表示,搜索空间非常小,求解该规划需要可接受的离线时间开销。关于构造模型和为给定访问查找优化的条带大小的更多细节可以在[4]中找到。

4.3关键接入模式识别
利用所提出的成本模型,S-PDLA可以得到不同数据布局下HServers、SServers或HServers+SServers上每个请求ri的数据访问成本。对于给定的访问模式,假设n是模式中的请求数,我们可以得到该模式在三个潜在副本空间上优化后的数据访问时间如下:(公式略)

B为正值意味着,与在HServers上复制模式数据相比,在SServers或HServers+SServers上复制预期的数据将进一步提高I/O系统性能。B的值越大,复制带来的好处就越大。然而,由于sserver在所有系统配置和访问模式上并不总是优于hserver,因此预期的复制并不总是有利可图。例如,当系统有大量的hserver和少量的sserver时,hserver可能比sserver有更好的I/O聚合带宽,因为它们提供更高的I/O并行性。在这种情况下,从HServers(原始的I/O系统)上的副本提供所需的数据有助于提高系统性能,而不需要在SServers上复制这些数据。我们将在第5.2节中对此进行说明。

为了最大化系统性能,S-PDLA将B值大于预定义阈值的访问模式视为关键模式,然后将其复制到SServers或HServers+ sserver上。副本的存储位置由副本空间决定,这样可以带来最大的性能效益。为了指导下面的实际数据复制,S-PDLA使用一个关键模式表(CPT)来存储模式信息、性能优势、副本空间和相应的优化数据布局。

4.4关键模式的副本创建和放置
一旦获得关键的访问模式,S-PDLA将在SServers或HServers+SServers上复制它们,并优化了数据布局。算法1展示了副本的创建和放置过程。为了节省成本,它首先按照性能优势降序对所有关键模式进行排序,然后对它们进行迭代,以便将可能的数据复制从高效益模式复制到低成本模式。具有更高效益的模式有更高的优先级要复制。对于每种访问模式,算法会检查系统是否有足够的空间来容纳优化后的数据布局所涉及的数据。如果是,算法将在相应的副本空间(SServers或HServers+SServers)中为给定模式创建一个副本文件。然后,它根据原始文件中的访问顺序,不断地将请求的数据从原始文件复制到副本文件。为了保持副本位置和布局信息,当将新数据追加到副本文件时,该算法在副本映射表RMT中添加一个条目。否则,由于空间不足,将无法复制该访问模式。

注意,该算法是一个选择性策略,它只复制关键访问模式,而不是全部。此外,它是布局感知的,因为它将每个副本存储在SServers或HServers+SServers上,使用优化的数据布局,而不是固定的1-DH数据布局。这样可以有效地利用服务器有限的空间。

4.5实现

CPT和RMT是S-PDLA记录关键模式和副本映射信息的两个关键数据结构。我们使用Berkeley DB[19]来实现它们,每个都作为SServers上并行文件系统中的数据库文件。对于CPT,键是用应用程序名称、进程数量、进程的等级、原始文件名和访问模式编码的PatternID;包含性能增益、副本空间和优化后的数据布局。对于RMT,键是PatternID,值包含数据访问信息。此外,我们在内存中使用列表来维护两个表中最频繁访问的条目,以加快查找速度。

我们修改MPI库,使SServers或HServers+SServers上的副本位置信息用MPI_Init()加载,用MPI_Finalize()卸载。我们还修改了MPI_File_open/read/write/seek/close()函数(以及它们的其他变体),以将I/O请求自动转发到相应的复制空间。

第五部分评价
我们在一个64节点的Sun Fire Linux集群上进行了实验。每个节点有两个Opteron四核处理器,8gb内存和一个250gb 7200RPM SATA-II硬盘(HDD)。我们使用8个节点作为由OrangeFS管理的存储节点,所有其他节点作为计算节点。计算节点和I/O节点(文件服务器)之间没有重叠,因此应用程序和文件系统之间的所有数据访问都是远程访问。

我们使用三个流行的微基准测试,IOR[20]、PIO-Bench[21]、MPI-Tile-IO[22]和一个实际的应用程序[23]来评估系统性能。我们对系统的性能进行了五次测试,并选择了平均值作为结果。

5.1 H-PDLA方案评价
本小节的评估是为了展示基于hdd的模式导向(PD)和感知布局(LA)的数据复制方案的有效性。为了进行比较,我们在没有数据复制的情况下测试了原始的基于hdd的并行I/O系统(original)的性能。为了确保改进仅来自于应用PD复制策略,我们首先在这些测试中禁用LA放置。因此,副本和原始文件使用相同的数据布局。数据布局是1-DH (OrangeFS中的“简单条带”分布),条带大小为64kb。

然后,为了验证优化数据放置副本的需求,我们通过启用PD和LA (PD+LA,即H-PDLA)来测量系统性能。我们以两种不同的方式存储副本,一组副本存储在OrangeFS的默认数据布局(1-DH)中,另一组副本存储在优化后的数据布局中,这是由3.4节中的副本布局方案决定的。这两组副本彼此相同,所以所有的性能差异都是由它们的数据布局差异造成的。

5.1.1 IOR基准
各种进程数。图6显示了不同进程数量下IOR的I/O性能。我们使用8、32、128和512个进程运行IOR。每个进程以固定步长方式访问512mb的数据,请求大小为256kb。不同的进程访问各自的原始文件区域,这样就不会有进程的数据与其他进程的数据共存。我们可以看到PD和H-PDLA都可以改善原有I/O系统的性能。与原始系统相比,PD策略的读性能提高了970%,写性能提高了307%。原因是在原来的I/O系统中,存在许多非连续的I/O请求,降低了I/O效率。但是,通过使用PD策略,这些请求被转换为副本空间中的顺序请求,从而极大地提高了I/O带宽。与PD策略相比,LA复制放置策略可以为读带来高达10%的额外性能改进,为写带来5%的额外性能改进。这是因为PD只应用一个固定的数据布局用于复制布局,而LA可以从三个候选布局中选择成本最低的最佳布局。从这些结果中,我们可以看到为副本优化的数据放置可以进一步提高I/O系统性能。

我们还注意到,随着进程数量的增加,IOR的带宽会降低,因为每个存储节点需要服务更多的进程,导致存储节点上的争用更加严重。但是PD和H-PDLA的带宽下降速率都比原始情况低。这表明,所提出的数据复制方案可以显著提高系统的可伸缩性,以满足更多的并发请求。

各种尺寸要求。图7显示了不同请求大小(16kb、256kb和4mb)下IOR的带宽。我们将进程数设置为64。与前面的测试类似,PD和H-PDLA方案都可以获得相对于原始I/O系统的性能改进。与没有数据复制的原始I/O系统相比,PD复制将I/O带宽提高了80%至926%,将I/O带宽提高了47%至521%。随着请求大小越来越小,IOR的带宽也越来越低。这是因为每个存储节点都需要处理大量的不连续的小数据请求,因此磁盘查找的频率更高。图7还显示了应用PD复制的另一个改进:当请求大小减小时,PD降低带宽的速率比原始情况下要低得多。换句话说,PD可以显著提高I/O系统处理大量小请求的能力。

当启用LA放置策略时,如图7所示,可以进一步提高PD复制策略获得的I/O性能,说明LA是有用的,也是必要的。与原来的I/O系统相比,当同时启用PD策略和LA策略时,I/O系统读性能提高84% ~ 970%,写性能提高16% ~ 208%。

5.1.2 PIO-Bench基准
PIO-Bench基准测试可以测试在实际应用程序的典型工作负载中出现的几种I/O访问模式。这些模式包括顺序、简单跨步、嵌套跨步、随机跨步、分段访问和平铺的模式。我们使用嵌套跨步访问模式运行PIO-Bench。进程数为64,请求大小为4kb、16kb、64kb、256kb和1mb。我们记录程序的执行时间,并用它除以总的数据访问大小,得到聚合的I/O带宽。

图8显示了PD给PIO-Bench带来的性能改进。与原来的I/O系统相比,我们可以看到PD在读方面的性能提高了8%到27%,在写方面的性能提高了10%到39%。图8还显示LA优化可以比PD策略单独获得额外的性能优势:读性能提高了9%到22%,写性能提高了5%到41%。这些结果表明,H-PDLA用于PIO-Bench是有效的。

如上所述,PIO-Bench的数据访问模式是嵌套的。这意味着每个进程都有固定步长访问模式。但是多个本地访问模式是相互嵌套的,并且可以组合成全局访问模式。因此,与我们用于IOR测试的固定跨距数据访问模式相比,嵌套跨距模式可以产生更好的数据局域性。因此,PIO-Bench的性能改进不如IOR,但仍然是显著的。这进一步证实了H-PDLA的适应性:当应用程序的数据访问性能较差(由于连续访问之间的数据局部性较差)时,它从H-PDLA获得了更多的好处。

5.1.3 MPI-Tile-IO基准
然后,我们使用默认的访问模式运行MPI-Tile-IO。MPI-Tile-IO将整个数据文件视为一个2d矩阵,并将其分成n×n个tiles (n行n列)。给定n2个进程,每个进程使用固定步长访问模式访问一个tile中的数据。每个进程根据每个tile的大小和每个元素的大小访问一个数据块。将同一行中n个tile的数据嵌套在一起。因此,MPI-Tile-IO的数据访问模式也是嵌套的。

在这个测试中,我们运行带有64个进程和各种请求大小的MPI-Tile-IO。请求大小分别为4kb、16kb、64kb、256kb和1mb。图9显示了PD为MPI-Tile-IO在原始I/O系统上带来的性能改进。对于读操作,聚合带宽增加了39%到91%,对于写操作,聚合带宽增加了30%到86%。图9也说明了H-PDLA对MPI-Tile-IO比PD方案带来的性能改进:I/O聚合带宽对读请求提高了6 - 15%,对写请求提高了4 - 14%,这意味着LA方案对MPI-Tile-IO是有效的。

与PIO-Bench测试类似,MPI-Tile-IO的性能提高是显著的,但没有IOR的性能提高大。原因是MPI-Tile-IO中使用的嵌套跨距模式比IOR中使用的固定跨距数据访问模式具有强的数据局域性。

5.2 S-PDLA方案评价
以上结果证实了H-PDLA在某些情况下的有效性。在本小节中,我们将进行实验,以证明当I/O并发显著大于服务器数量时,增强的S-PDLA方案可以进一步提高应用程序的I/O性能。

我们将S-PDLA与其他三种方案进行比较:H-PDLA、S-ORIG和NS-PDLA。如前所述,H-PDLA复制HServers上所有确定的访问模式。S-ORIG在没有PDLA的情况下将原始文件存储在SServers上。NS-PDLA是一种非选择性策略,它不加区分地复制sserver上所有模式的数据,而不考虑复制的好处。相比之下,S-PDLA只复制能够在SServers或HServers+SServers上带来性能优势的模式。通过这些比较,我们将清楚地了解选择性策略在S-PDLA中的必要性及其在提高I/O系统性能方面的效率。

我们将原始的I/O系统部署在8个hserver上。此外,我们在四个sserver上建立了一个附加的系统,用于存储S-ORIG中的原始文件和S-PDLA中的副本文件。

5.2.1 IOR基准
为了模拟每个服务器都面临高I/O并发的场景,我们对128、256和512个进程运行IOR。我们修改了IOR,以便在文件的不同部分生成不同大小的请求,以便使用不同的I/O模式访问数据。每个进程使用跨步I/O请求访问数据。在文件的不同部分,我们在16kb、256kb和4mb之间改变请求大小。对于每个进程,总访问数据大小为512 MB。

图10显示了不同进程数量下IOR的聚合带宽。我们发现S-PDLA的性能优于H-PDLA:读性能提高了128到183%,写性能提高了252到279%。这是因为S-PDLA利用高性能ssd和优化的数据布局来提高系统性能。S-PDLA也比S-ORIG更好:它的读取速度可达86%,写入速度可达98%。这种改善有两个原因。(1) S-PDLA存储经过优化的数据布局的副本,S-ORIG存储采用默认布局。(2) S-PDLA将某些模式的副本存储在HServers+SServers上,而S-ORIG只存储在SServers上,这种模式的I/O并行度较低。
另一个观察结果是,S-PDLA优于NS-PDLA,因为S-PDLA进行的是低成本的复制,而NS-PDLA进行的是不加区别的数据复制。为了证实这一点,我们根据S-PDLA对请求地点进行了分析。S-PDLA将小于4MB的请求下发给SServers, 4MB的请求下发给HServers+SServers。对于小的请求,SServer比HServer快得多,S-PDLA只在SServer上复制模式更有益,因为它可以有效地利用SServer的性能。但当请求大小为4 MB时,异构服务器之间的性能差距显著减小。在这种情况下,hserver比sserver提供更好的I/O带宽,因为它们有更高的I/O并行性。然而,在HServers+SServers上复制数据可以进一步提高I/O性能,因为它可以最大限度地利用所有节点的I/O并行性。

我们还注意到,随着流程数量的增加,S-PDLA带来的性能改进逐渐减少。原因是当服务于大量进程时,ssd也会降低I/O性能。但由于ssd具有较高的I/O性能,且对随机访问的敏感性较低,因此S-PDLA比H-PDLA具有更好的性能和可伸缩性。

5.2.2 PIO-Bench基准
我们使用嵌套跨步访问模式运行PIO-Bench。进程数为128个,请求大小从4 KB到1 MB。我们用总的数据访问大小除以程序的执行时间来计算总的I/O带宽。图11为PIO-Bench在不同请求大小下的I/O带宽。当请求大小等于或小于256kb时,S-PDLA在读方面比H-PDLA提高了153%的I/O性能,在写方面提高了89%。在这些情况下,S-PDLA将I/O请求发送到SServers。当请求大小为1mb时,S-PDLA获得更高的I/O带宽,因为在此场景中,HServers的性能优于SServers,并且S-PDLA在HServers+SServers上复制模式。与之前的测试结果类似,S-PDLA优于S-ORIG和NS-PDLA。S-PDLA改进的原因是,它可以基于复制效益分析,以优化的数据布局,智能地复制SServers或HServers+SServers上某些模式的数据。相比之下,S-ORIG只将数据以默认布局存储在sserver上,而NS-PDLA则不加区别地将数据复制到sserver上,即使hserver具有更好的I/O性能。

5.2.3 MPI-Tile-IO基准
我们使用默认的访问模式运行MPI-Tile-IO。进程数为256个,请求大小为4kb、16kb、64kb和256kb。图12显示了与H-PDLA、S-ORIG和NS-PDLA复制方案相比,S-PDLA为MPI-Tile-IO带来的性能改进。我们可以看到,与H-PDLA相比,S-PDLA可以进一步增加聚合带宽,读请求增加21%至60%,写请求增加31%至57%。此外,由于请求大小相对较小,S-PDLA获得与NS-PDLA相同的性能,因为它们都将所有已识别模式中的请求重定向到SServers。

5.2.4真实的应用程序中
上述基于基准的评估说明了S-PDLA的有效性。在本小节中,我们使用一个名为“匿名LANL App 2”[23]的实际应用程序测试S-PDLA的性能。我们选择这个应用程序是因为它具有复杂的访问模式,可以评估我们提出的方法的通用性。

在这个应用程序中,每个进程在运行时用不同的访问模式在共享文件的不同部分发出I/O请求。我们可以根据请求大小将文件划分为三个典型的部分。对于第一部分,请求大小相对较小(几个KBs)。第二部分的请求大小中等(几十个KBs)。在最后一部分中,请求大小在一个大的(数百个KBs)和另一个大的(数百个KBs)之间迭代变化。为了模拟相同的访问场景,我们根据I/O跟踪重播应用程序的数据访问。

图13a显示了应用程序在4种复制策略下对应的I/O性能。与前面的测试类似,虽然S-ORIG、S-PDLA和NS-PDLA分别优于H-PDLA,但S-PDLA为应用程序的高度变化的工作负载带来了最佳性能。原因是S-PDLA在适当的服务器上复制不同的模式,使用基于性能效益分析的优化的数据布局,而S-ORIG将数据放在SServers上,使用默认的数据布局,而NS-PDLA总是不加区别地将它们复制到sserver上。这一结果表明,S-PDLA对于具有复杂I/O模式的应用程序也是有效的。

5.3系统开销
如图1所示,我们将一些组件集成到默认的并行I/O系统中,使PDLA自动工作。这些模块会导致额外的系统开销。

5.3.1跟踪收集开销
我们在应用程序第一次执行时收集I/O跟踪。这只会发生一次。为了度量跟踪收集器的运行时开销,我们测试IOR和MPI-Tile-IO在连接跟踪库和不连接跟踪库的情况下的执行时间之间的差异。对于IOR基准测试,开销低于2%,而对于MPI-TILE-IO基准测试,开销低于6%。这些结果表明跟踪收集器引入的开销是可以接受的。

5.3.2模式识别开销
在后台进行离线模式识别。因此,它不会影响用户应用程序的执行。分析器的执行时间与跟踪记录的数量成正比。即其时间复杂度为O(n)。为了显示开销,我们在一个客户机节点的单个核上运行一个带有5296条记录的PIO-Bench跟踪文件的分析器。结果表明,完成分析仅需不到2秒。如果需要,我们可以将分析过程并行化,以减少执行时间。例如,我们可以使用shell脚本在多个跟踪文件上同时启动多个分析程序。

5.3.3 I/O重定向开销
对于某些具有识别数据访问模式和副本文件的应用程序,系统可以提高整体I/O性能。然而,有些应用程序没有常规的数据访问模式,因此不能从访问PDLA副本文件中获益。在这种情况下,可能会存在开销,如果在容量上存在明显的开销,则可能会降低性能。

在本小节中,我们只评估运行时系统中以下两个可能的开销来源。

在“文件打开”期间,I/O重定向模块需要在模式数据库中查找数据访问模式。

在“文件读写”过程中,模块需要检查打开的文件是否为副本,从而决定是否进行偏移量计算。

为了计算运行时中的开销,我们使用连续数据访问模式运行IOR,并在数据库中不放置相关模式,也不进行数据复制。所以系统只访问原始文件。我们使用8、64和512个进程运行IOR,每个进程都有100 MB的数据,请求大小为256 KB。图13b显示了启用H-PDLA后与原始I/O系统相比,执行时间的变化百分比。可以看出,H-PDLA的开销是可以接受的。对于S-PDLA来说,由于与H-PDLA相同的原因,也会带来性能开销。由于这种开销与H-PDLA的开销相当,为了便于说明,我们在图13b中省略了它。

第六章 相关工作

数据复制。利用数据复制改进I/O系统性能的努力有很多。InterferenceRemoval[24]将可能涉及干扰的文件段复制到各自指定的I/O节点上,这样可以大大降低每个节点上的干扰程度。IR+[25]使用ssd为异构存储系统中的数据副本创建硬盘友好的布局。与这些工作不同的是,PDLA基于数据访问模式创建副本,因此选择要复制的数据的规则很简单。PDLA还根据访问顺序重新组织数据,从而将非连续访问转换为连续访问。

为了提高非连续请求的I/O效率,HDFS[18]和GPFS-SNC[26]为每个文件创建多个副本,可以将I/O请求重定向到最近的位置,从而降低数据访问成本。在集群或网格系统[27],[28]中也采用了类似的方法。与这些工作相反,PDLA只复制访问模式,因此它可以节省存储空间。[29]和[30]中也执行了基于模式的数据复制,它们选择一般的访问模式并使用更有组织的布局复制它们。CEDA[31]考虑了文件请求的物理数据布局,并执行经济有效的数据复制。然而,所有这些研究都使用了原始I/O系统中相同类型的设备来复制数据,这对于具有高I/O并发性的应用程序来说可能仍然存在性能限制。与之相反,S-PDLA利用新的存储介质ssd来提高I/O性能。

此外,一些并行文件系统,如Ceph、Lustre和GPFS,提供内置的数据复制功能以增强容错能力。类似的冗余数据放置方法[32]和[33]旨在提高系统可用性。与这些努力相反,本研究打算通过数据复制来提高系统性能,这一领域直到最近才引起了[8]的注意。

数据组织。AILS[34]、FS2[35]和BORG[36]会自动重组选定的磁盘块,以减少磁盘查找开销。这些技术对于单个磁盘和磁盘阵列是有效的,但是需要在磁盘设备驱动程序和本地文件系统中进行复杂的实现。PDLA复制方案在I/O中间件中实现简单,很好地适应了当今大规模HPC系统,具有较好的模式识别能力。

为了提高读性能,SOGP[37]存储在一个更高效的组织中经常访问的数据副本。SOGP的目标是弥合OrangeFS和本地存储之间的差距,而PDLA则专注于弥合应用程序和物理数据之间的差距。He等人提出了一种根据访问模式进行文件重组的方法,通过在MPI-IO层[38],[39]中对文件进行重映射来增加连续性。相比之下,PDLA消耗的存储资源更少,对进一步的数据布局优化更具灵活性。更重要的是,PDLA是一种结合了复制、重组和优化数据布局的系统方法,共同工作以获得最佳性能。

为了进行写优化,PLFS[40]将非连续写的数据存储在一组重新组织的日志文件中。虽然极大地提高了写性能,但当从这些文件中回读时,由于不可避免的数据重构,可能会降低读性能。在PDLA方案中,读和写访问模式是分开处理的,以实现它们的最佳性能。

第七节的结论
PDLA是一种新的数据复制方案,旨在根据特定应用程序的I/O特性优化并行I/O性能。它包括一个基于hdd的方案H-PDLA和一个基于ssd的方案S-PDLA。对于I/O并发性相对较低的应用程序,H-PDLA识别应用程序的访问模式,并通过优化的数据布局为基于hdd的服务器上的每个访问模式重新组织数据副本。对于具有高I/O并发性的应用程序,S-PDLA识别关键的访问模式,并在基于ssd的服务器或所有基于hdd和基于ssd的服务器上使用优化的布局将其复制。实验结果表明(1)H-PDLA可以显著提高原有I/O系统的性能,(2)S-PDLA可以进一步提高H-PDLA在大量流程应用中的系统性能。

在未来的工作中,我们计划利用更多的应用访问模式,使存储系统更智能、更高效。我们还打算用更多的应用程序从性能和能耗的角度测试我们提出的复制方案。

上一篇下一篇

猜你喜欢

热点阅读