匹配顺序大I/O负载特征的粗粒度条带化方法及系统与流程

文档序号:17185299发布日期:2019-03-22 21:18阅读:164来源:国知局
匹配顺序大I/O负载特征的粗粒度条带化方法及系统与流程

本发明属于外存模式图处理系统的i/o性能优化领域,更具体地,涉及一种匹配顺序大i/o负载特征的粗粒度条带化方法及系统。



背景技术:

外存模式的图处理系统的性能瓶颈是外存i/o,有效地提升外存i/o性能,系统的整体性能也会随之提升。使用外存处理的图处理系统因处理大规模图数据集而需要高的外存i/o吞吐量时,多外存设备成为自然而常用的解决方案,如graphene、x-stream、flashgraph、g-store、gridgraph、nxgraph等。使用多外存设备的理想结果是图处理系统能够完全并行地、均衡地使用每个外存设备,充分利用每个外存设备单独的最大顺序带宽和多外存设备并行能力。

现有使用外存处理的图处理系统在多外存设备环境下管理i/o的方法主要有两类:基于条带化卷的操作系统管理i/o方法和基于按需i/o的应用管理i/o方法。基于条带化卷的操作系统管理i/o方法,存在多外存设备并行i/o能力受限、不高效的操作系统内i/o服务开销、锁争用开销等问题,从而导致多外存设备并行i/o能力发挥不足和每个外存设备的吞吐量无法达到最优;基于按需i/o的应用管理i/o方法,主要在应用层针对随机小i/o进行的i/o管理和优化,虽然提高了多外存设备的并行i/o能力,但顺序带宽利用不足,且存在较大的多级同步开销、缓存管理开销、i/o请求映射开销等问题。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种匹配顺序大i/o负载特征的粗粒度条带化方法及系统,由此解决现有使用外存处理的图处理系统在多外存设备环境下管理i/o的方法存在一定局限性的技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种匹配顺序大i/o负载特征的粗粒度条带化方法,包括:

(1)将原始图数据中所有顶点等分成p个顶点分区,根据边的目的顶点所在的顶点分区将所有的边分成p个条块,每个边对应的条块进一步根据该边的源顶点所在的顶点分区分成p个边块,最终形成一个p*p的二维分区;

(2)选取平均i/o请求大小至最大i/o请求大小作为条带深度,并避免i/o请求跨越三盘以上的情况以减少数据块定位开销;

(3)基于所述条带深度,将所述原始图数据分区后的所有边块文件按照更新顺序划分成大小相等的粗粒度条带单元,并将各所述粗粒度条带单元以递增的顺序循环地均匀分布在连续的n个条带化文件中,其中,条带化文件从0~n-1连续编号,一对一地存储在n个外存设备上。

优选地,步骤(3)包括:

(3.1)若dl≤s-o%s,即原始i/o请求的数据长度dl不超过其地址映射后所在的第一个条带化文件内的条带单元的剩余长度,则不需要分解,该原始i/o请求对应的新i/o请求的条带化文件编号为si0,条带化文件内起始偏移地址为so0,该原始i/o请求的数据长度为dl,其中,s为条带深度,o为该原始i/o请求在原始大线性地址空间中的起始偏移地址;

(3.2)若dl>s-o%s,即原始i/o请求的数据长度dl超过了其地址映射后所在的第一个条带化文件内的条带单元的剩余长度,跨越了多个外存设备,则需要分解成多个新i/o请求,并为各新i/o请求分配条带化文件。

优选地,步骤(3.2)包括:

第一个新i/o请求的条带化文件编号为si0,条带化文件内起始偏移地址为so0,第一个新i/o请求的条带化文件长度为s-o%s,第一个新i/o请求的条带化文件剩余长度rest_length_io=dl-(s-o%s);

循环判断当前新i/o请求的条带化文件剩余长度rest_length_io≥s是否成立,如果当前新i/o请求的条带化文件的剩余长度成立,则将原始i/o请求继续分解成新的i/o请求,分解的新i/o请求的条带化文件编号为sii=(o/s+i)%n,条带化文件内起始偏移地址为soi=(o+i*s)/s/n*s,长度为s,其中,i=0,1......m-1,m为原始i/o请求被分解的次数,每次判断成立后剩余长度将会缩小(s-o%s);

若当前新i/o请求的剩余长度不满足rest_length_io≥s,则循环判断结束,若当前新i/o请求的剩余长度满足rest_length_io>0,则原始i/o请求被分解成的最后一个新i/o的条带化文件编号为sim=(o/s+m)%n,条带化文件内起始偏移地址为som=(o+m*s)/s/n*s,最后一个新i/o请求的条带化文件长度为最后一个新i/o请求的条带化文件剩余长度。

按照本发明的另一方面,提供了一种匹配顺序大i/o负载特征的粗粒度条带化系统,包括:

图数据分区模块,用于将原始图数据中所有顶点等分成p个顶点分区,根据边的目的顶点所在的顶点分区将所有的边分成p个条块,每个边对应的条块进一步根据该边的源顶点所在的顶点分区分成p个边块,最终形成一个p*p的二维分区;

条带深度确定模块,用于选取平均i/o请求大小至最大i/o请求大小作为条带深度,并避免i/o请求跨越三盘以上的情况以减少数据块定位开销;

边块文件条带化模块,用于基于所述条带深度,将所述原始图数据分区后的所有边块文件按照更新顺序划分成大小相等的粗粒度条带单元,并将各所述粗粒度条带单元以递增的顺序循环地均匀分布在连续的n个条带化文件中,其中,条带化文件从0~n-1连续编号,一对一地存储在n个外存设备上。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:本发明在简单二维分区的基础上,设计了一种匹配顺序大i/o负载特征的粗粒度条带化方法进行多盘图数据分布,在保证较高访问局部性的同时,均衡负载,有利于发挥多盘并行i/o能力和快速的顺序访问性能,保证了每个i/o请求的数据尽可能少地跨多个外存设备,减少了每个外存设备的设备i/o次数、数据块定位开销和操作系统内i/o服务任务并行性受限等问题。

附图说明

图1是本发明实施例提供的一种匹配顺序大i/o负载特征的粗粒度条带化方法的流程示意图;

图2(a)是本发明实施例提供的一种示例图拓扑结构;

图2(b)是本发明实施例提供的一种示例图的二维分区分区格式示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示是本发明实施例提供的一种匹配顺序大i/o负载特征的粗粒度条带化方法的流程示意图,在本发明实施例中的大i/o负载指的是:linux操作系统默认的512kb的条带深度,而通过实验证明,在twitter图中,92%的i/o请求大小大于1mb,平均大小为11mb;subdomain图中99.9%的i/o请求大小大于1mb,平均大小为7mb。而且在上述实验测试中使用的llc容量为20mb,在更大容量的llc下,i/o请求的大小会随分区粒度的增加而增加。图处理中的i/o一般是10mb~20mb,相对操作系统默认的512kb的条带深度是较大的。

其中,图1所示的方法面向基于顺序化外存访问优化原则进行图数据的多外存分布处理,具体包括以下步骤:

(1)图数据的分区

图数据分区是将用户输入的图数据文件(无序的二进制边数据文件)进行分区处理,以对大于内存容量的图进行切分,实现边载入图分区数据边进行计算。

具体地,在考虑预处理开销的同时使得分区大小尽可能小,以获得好的局部性和可选调度潜力,因此顶点分区数p的选择要保证每个分区中的顶点状态数据能够载入最后一级缓存(last-levelcache,llc)。将图中所有顶点,等分成p个顶点分区(chunk),每个顶点分区是相等数量的连续顶点集合;根据边目的顶点所在顶点分区可以将所有的边分成p个条块,每个边条块进一步可以根据源顶点所在顶点分区可以分成p个边块(block),最终形成一个p*p的二维分区。如图2(a)中表示的图,对应的二维分区格式如图2(b)所示,该示例图共有6个点,被均匀分成3个顶点分区,即p=3,edge(2,3)因为源顶点和目的顶点在都在chunk1中,因此该边被划分到block(1,1)中。分区后的每个边块对应到外存设备上的边块文件,一般以无序边列表(edgelist)或者压缩稀疏行(csr,compressedsparserow)格式存储。

在本发明实施例中,利用二维分区方法划分图数据,以获得好的局部性和可选调度潜力。

在本发明实施例中,p的大小可以根据实际需要确定,本发明实施例不做唯一性限定。

(2)条带深度的确定

在目前基于二维分区和顺序化外存访问优化原则的图处理系统中,i/o请求大小不等且较大,所以本发明选择平均i/o请求的n倍作为条带深度,但如果条带深度太大,可能会因为边块文件总量不是条带深度*条带宽度的整数倍而导致数据在多盘上的分布出现无法忽视的不均衡问题,还会导致不能和i/o重叠的计算时间增多和热点盘集中访问等问题。

具体地,在本发明实施例中,选取平均i/o请求大小至最大i/o请求大小作为条带深度,尽量避免i/o请求跨越三盘甚至更多盘的情况以减少数据块定位开销,同时也缓解了条带深度过大而导致的潜在的数据分布不均衡、热点盘集中访问等问题。对于仍然存在的i/o请求跨越两盘或者多盘的情况,通过在应用层执行i/o请求的分解、预取合并等管理工作,实现动态调整i/o请求大小,对齐条带单元边界,保证每个应用i/o线程发起的一个i/o请求的数据只在一个外存设备上。另外,图分区过程采取和图处理过程相同大小的i/o缓冲区,i/o请求大小的统计和平均大小的计算可以在图分区过程中直接进行,而不增加过多冗余的处理开销。

(3)边块文件的条带化

将原始图数据分区后的所有边块文件按照更新顺序,划分成大小相等的粗粒度条带单元,并以递增的顺序循环地均匀分布在连续的n个条带化文件中,条带化文件从0~n-1连续编号,一对一地存储在n个外存设备上。

其中,在本发明实施例中,n的大小可以根据实际需要确定,本发明实施例不做唯一性限定。

具体地,在本发明实施例中,将所有边块文件按照更新顺序集合成一个大的图数据文件,并记录每个边块文件在合并后的图数据文件中的起始线性偏移地址,条带化就是将合并后的图数据文件对应的一个大的线性地址空间映射成条带化文件对应的n个地址空间。定义如下符号:

s为条带深度,即为条带单元大小;

n为条带化文件数,等于外存设备数,即为条带宽度;

dl为一个原始i/o请求的数据长度,dl≤s;

o为原始i/o请求在原始大线性地址空间中的起始偏移地址;

sii为原始i/o请求映射分解后的第i个新i/o请求所在的条带化文件的编号;

soi为原始i/o请求映射第i个新i/o请求后的条带化文件内起始偏移地址,其中,i=0,1......。

地址映射公式为:

1)如果dl≤s-o%s,即:原始i/o请求长度不超过其地址映射后所在的第一个条带化文件内的条带单元的剩余长度,则不需要分解,其对应的新i/o请求的条带化文件编号为si0,条带化文件内起始偏移地址为so0,长度为dl。

2)如果dl>s-o%s,即:原始i/o请求长度超过了其地址映射后所在的第一个条带化文件内的条带单元的剩余长度,跨越了多个外存设备,则需要分解成多个新i/o请求。首先第一个新i/o请求的条带化文件编号为si0,条带化文件内起始偏移地址为so0,第一个新i/o请求的条带化文件长度为s-o%s,第一个新i/o请求的条带化文件剩余长度rest_length_io=dl-(s-o%s);

循环判断当前新i/o请求的条带化文件剩余长度rest_length_io≥s是否成立,如果当前新i/o请求的条带化文件的剩余长度成立,则将原始i/o请求继续分解成新的i/o请求,分解的新i/o请求的条带化文件编号为sii=(o/s+i)%n,条带化文件内起始偏移地址为soi=(o+i*s)/s/n*s,长度为s,其中,i=0,1......m-1,m为原始i/o请求被分解的次数,每次判断成立后剩余长度将会缩小(s-o%s);

若当前新i/o请求的剩余长度不满足rest_length_io≥s,则循环判断结束,若当前新i/o请求的剩余长度满足rest_length_io>0,则原始i/o请求被分解成的最后一个新i/o的条带化文件编号为sim=(o/s+m)%n,条带化文件内起始偏移地址为som=(o+m*s)/s/n*s,最后一个新i/o请求的条带化文件长度为最后一个新i/o请求的条带化文件剩余长度。

在本发明实施例中,为了充分利用多核处理器的并行处理能力,上述匹配顺序大i/o负载特征的粗粒度条带化方法可以采取多线程策略实现:

(a)主线程从原始边表文件中顺序读取边并分批处理,然后将每批边加入到任务队列(可以采取和gridgraph相同的配置批大小为24mb);

(b)雇佣多个工作线程处理,每个工作线程为每个边分区维护一个和边批大小相等的i/o缓冲区,从任务队列中取出一个任务,计算每条边所属的边块分区,当缓冲区满时以追加方式刷新到对应边块文件中;

(c)然后将所有的边块文件按照面向行的顺序或者面向列的顺序,采取合适的条带深度条带化到和外存设备数量相等的多个小的行文件或者列文件上,然后将条带化后的多个小文件分别存储在对应的外存设备上。

本发明实施例还提供了一种匹配顺序大i/o负载特征的粗粒度条带化系统,包括:

图数据分区模块,用于将原始图数据中所有顶点等分成p个顶点分区,根据边的目的顶点所在的顶点分区将所有的边分成p个条块,每个边对应的条块进一步根据该边的源顶点所在的顶点分区分成p个边块,最终形成一个p*p的二维分区;

条带深度确定模块,用于选取平均i/o请求大小至最大i/o请求大小作为条带深度,并避免i/o请求跨越三盘以上的情况以减少数据块定位开销;

边块文件条带化模块,用于基于所述条带深度,将所述原始图数据分区后的所有边块文件按照更新顺序划分成大小相等的粗粒度条带单元,并将各所述粗粒度条带单元以递增的顺序循环地均匀分布在连续的n个条带化文件中,其中,条带化文件从0~n-1连续编号,一对一地存储在n个外存设备上。

其中,各模块的具体实施方式可以参考方法实施例的描述,本发明实施例将不做复述。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1