《多核分片XML并行解析方法.pdf》由会员分享,可在线阅读,更多相关《多核分片XML并行解析方法.pdf(12页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102495722 A (43)申请公布日 2012.06.13 C N 1 0 2 4 9 5 7 2 2 A *CN102495722A* (21)申请号 201110317045.8 (22)申请日 2011.10.18 G06F 9/38(2006.01) G06F 9/50(2006.01) G06F 17/30(2006.01) (71)申请人成都康赛电子科大信息技术有限责 任公司 地址 610054 四川省成都市成华区一环路东 一段159号信息产业大厦 (72)发明人唐雪飞 陈科 汪海良 李应洪 (74)专利代理机构电子科技大学专利中心 51203 代理。
2、人周永宏 (54) 发明名称 多核分片XML并行解析方法 (57) 摘要 本发明公开了一种多核分片XML并行解析方 法,通过多核处理器利用多线程技术,根据XML的 大小将XML分片,即将XML文档分解成为若干相 对独立和完整的XML片段,各个片段使用外键关 联;采用分治策略对各XML片段进行并行解析,最 后完成结果合并,最终形成一个完整的XML解析 结果。通过多核并行解析,可大大提高XML的解 析速度和效率。本发明可应用在对XML性能要求 较高,或XML文档较为庞大的系统中,如分布式系 统、Web Service和云计算平台等。 (51)Int.Cl. 权利要求书2页 说明书7页 附图2页 (。
3、19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 7 页 附图 2 页 1/2页 2 1.一种多核分片XML并行解析方法,其特征在于:包括如下步骤: 第一步、构造多线程并行: 1)使用FORK-JOIN结构来描述如何创建并发线程; 2)将FORK出来的线程放入线程池,由线程池负责线程的生命周期管理; 3)在多线程环境下,采用mutex变量作为互斥信号量,实现多线程环境下的资源访问 的同步和互斥; 第二步、创建主线程,由主线程初始化全局变量,用于进行子线程同步及记录查询结 果; 第三步、多核并行处理器分配,用于完成进程和线程到处理器节点的分配: 1)任务分配模。
4、型的建立: 设多核并行处理器包含N node 个处理节点每个处理器包含N core 个处理 器核待分配的并行程序有N proc 个进程进程P i 包含M i 个线程 并行程序的总线程个数 设待分配的并行程序为一个无向图G(V,E),其中V是节点的集合V i ,节点V i 对应 一个二元组,其中T i 是节点对应的线程号,P i 为该线程所属的进程号;E是无向边 的集合E ij ;连接节点V i 和V j 的边E ij E,表示线程T i 和T j 间的通信或共享数据,边的 权值W ij 表示两个线程通信或共享数据的频繁程度; 2)进行两轮操作,第一轮操作完成进程到处理节点的分配,第二轮操作完成。
5、处理节点 内线程到处理器核的分配,每一轮操作包含多次迭代过程: a)对第一轮操作,初始的任务关系图以进程为单位进行初步划分,第一轮操作的结束 条件是图中复合节点个数处理节点个数,结束时图中每个复合节点为一个子图,对应一 个处理节点,包含在子图中的线程分配给该处理节点; b)对第一轮操作划分出的每个子图进行第二轮操作,第二轮操作的结束条件是图中复 合节点个数处理器核个数,结束时图中每个复合节点对应一个处理器核,包含在其中的 线程分配给该处理器核; 第四步、多核XML分片: 1)使用DOM将XML文档载入到内存,得到XML的树型结构; 2)对XML进行子片划分: 采用(x,y)表示一个XML子片,。
6、其中x代表子片的起点,y代表子片的终点,定义一个 空闲子片为未被处理器占用的XML子片,其中该子片中的所有结点都未被任何一个处理器 或子线程处理; 3)一个子片S(x,y)和另一子片S(x,y)采用以下公式进行分配: FP(S,S)max(x-x)g(x-y)g(y-y)g(x-y) 第五步、分片XML解析结果归并: 1)分片XML解析结果统一存放: 设XML分片数为n,则采用数组partn对各个XML片进行存放,其中:parti第i 个XML分片解析结果,0in 权 利 要 求 书CN 102495722 A 2/2页 3 2)对partn进行归并。 2.根据权利要求1所述的多核分片XML并。
7、行解析方法,其特征在于:在所述FORK-JOIN 结构中,一个FORK语句产生一个新的并发线程路径,并且并发线程在其结尾使用JOIN语 句;当原线程和新产生的线程都达到JOIN语句后,代码继续以顺序的方式执行。 3.根据权利要求1所述的多核分片XML并行解析方法,其特征在于:所述互斥信号量 的工作原理为:当请求一个使用mutex来表示的资源时,进程需要先读取mutex的值,以判 断相应的资源是否可用:当mutex的值大于0时,表明有资源可以请求;等于0时,说明现在 无可用资源,进程会进入睡眠状态直至有可用资源时,当进程不再使用一个互斥信号量控 制的共享资源时,mutex的值增1。 4.根据权利。
8、要求3所述的多核分片XML并行解析方法,其特征在于:对所述mutex的 值进行的增减操作均为原子操作。 5.根据权利要求1所述的多核分片XML并行解析方法,其特征在于:所述全局变量至 少包括信号量、子线程状态集和结果集。 6.根据权利要求1所述的多核分片XML并行解析方法,其特征在于:所述多次迭代过 程是指:从输入的初始任务关系图开始,每次选择具有最大权值的边,合并该条边的两个 复合节点并生成一个新的复合节点,且新的复合节点中所包含的线程个数必须小于一个阈 值;重复“选择-合并”过程,直到任务关系图中复合节点的个数等于处理节点或处理器核 的个数。 7.根据权利要求6所述的多核分片XML并行解析。
9、方法,其特征在于:第一、二轮操作使 用的阈值分别按以下公式计算: 01 其中,M max 为进程拥有的最多线程数,是一个百分比值,用来在均衡负载和减少通讯 之间进行权衡。 8.根据权利要求1所述的多核分片XML并行解析方法,其特征在于:所述归并为两两 归并模式,归并趟数为其中N 子片 表示子片的数量。 权 利 要 求 书CN 102495722 A 1/7页 4 多核分片 XML 并行解析方法 技术领域 0001 本发明属于计算机信息分析与数据处理领域,具体涉及一种多核分片XML并行解 析方法。 背景技术 0002 XML(Extensible Markup Language)是Interne。
10、t上数据表示和数据交换的标准, 是由互联网联合组织(W3C)指定的。XML提供了将数据库外的物理数据转换成与之相关的 元数据的统一标准。越来越多的数据使用XML的标准进行表示和存储。从数据库的角度来 看,在这些大量的XML文档中所包含的数据可以进行抽取和分析。那么如何对XML文档内 容进行高效率的查询变得越来越重要。 0003 XML技术广泛地应用在分布式计算、Web Service、SOA等现代信息技术中,XML解 析是XML处理的基本手段,但传统单线程的XML读写方式不能充分利用多处理器和多核心 处理器的优势,因此XML处理效率不高。 0004 如何充分利用当今计算机多处理器、多核心处理器。
11、以及大内存的优势,提高XML 访问速率和处理效率是本发明的主要创新点。本发明所涉及的现有技术包括: 0005 1.XML DOM解析技术 0006 XML DOM是用于XML的标准对象模型、用于XML的标准编程接口。DOM中立于平台 和语言,是W3C的标准。XML DOM定义了所有XML元素的对象和属性,以及访问它们的方法 (接口)。因此,XML DOM是用于获取、更改、添加或删除XML元素的标准。 0007 XML DOM把XML文档视为一棵节点树(node-tree)。树中的所有节点彼此之间都 有关系。这种树结构被称为节点树,可通过这棵树访问所有节点。可以修改或删除它们的 内容,也可以创建。
12、新的元素。这颗节点树展示了节点的集合,以及它们之间的联系。 0008 这棵树从根节点开始,然后在树的最低层级向文本节点长出枝条。节点树中的节 点彼此之间都有等级关系。父、子和同级节点用于描述这种关系。父节点拥有子节点,位于 相同层级上的子节点称为同级节点(兄弟或姐妹)。在节点树中,顶端的节点成为根节点, 根节点之外的每个节点都有一个父节点。节点可以有任何数量的子节点。叶子是没有子节 点的节点,同级节点是拥有相同父节点的节点。因为XML数据是按照树的形式进行构造的, 所以可以在不了解树的确切结构且不了解其中包含的数据类型的情况下,对其进行遍历。 0009 大多数浏览器都内建了供读取和操作XML的。
13、XML解析器。解析器把XML转换为编 程语言可存取的对象。 0010 2.多线程并行与互斥技术 0011 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也 可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊 段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是 轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和 执行。 说 明 书CN 102495722 A 2/7页 5 0012 当有多个线程并行运行时,采用线程池对多线程进行管理。线程池是一种多线程 处理形式,处理过程中将任务添加到队列,。
14、然后在创建线程后自动启动这些任务。线程池线 程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单 元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅 助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂 起的工作,则线程池将在一段时间后创建另一个辅助线程,但线程的数目永远不会超过最 大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。 0013 在多线程环境下,采用信号量完成线程的互斥和同步。信号量是在多线程环境下 使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键 代。
15、码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信 号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这 个过程,需要创建一个信号量(VI),然后将获取信号量(Acquire Semaphore VI)以及释放 信号量(Release Semaphore VI)分别放置在每个关键代码段的首末端,确认这些信号量 (VI)引用的是初始创建的信号量。 0014 3.多处理器分配和负载均衡技术 0015 多处理器任务分配和负载均衡是在多处理器核心的环境下,对处理任务进行动态 分配和调试,从而提高处理器利用率,实现多线程并行的高速XML解析。 001。
16、6 多处理器系统的调度模型主要包括处理器模型、任务模型及调度算法三部分。处 理器模型描述处理器结构和处理能力等信息,任务模型描述调度等待处理的任务所需要的 相关信息。设一个多处理器系统由m个处理器(P 1 ,P 2 ,L P m )及K个资源(Resr 1 ,r 2 ,L, r k ),处理能力C i (i1,2,L m)表示处理器P i 在单位时间内处理任务的能力,多处理器系 统的处理能力TPC定义为: 0017 0018 多处理器系统采用集中式调度机制,由调度器将所有任务分配到各处理器执行; 每个处理器都有各自的调度队列,处理器从该调度队列中选择任务进行处理;调度器与各 处理器之间的通信通。
17、过调度队列来实现。 0019 对多处理器系统,使用调度成功率、平均响应时间、处理器利用率、调度长度作为 评价调度算法的性能指标。 0020 1)调度成功率(Success Rate,SR):指被算法调度成功的任务集数N与被调度 的任务集数N之比: 0021 0022 2)平均响应时间(Average Response Time,ART):指集中所有任务开始处理的时 间与到达时间的平均差。设任务S i 的到达时间为t i ,开始处理的时间为st i ,则其响应时间 为rt i st i -t i 。设任务集中的任务数为n,则任务的平均响应时间为: 0023 0024 一个任务集的平均响应时间AR。
18、T越小,即等待时间越短,则调度算法的性能越好。 0025 3)调度长度(Schedule Length,SL):指从最早的任务到达时间开始,到最后一个 说 明 书CN 102495722 A 3/7页 6 任务的完成时间之差。完成时间(finish time)为ft(i)st(i)+pt(i),其中pt(i)为任 务st(i)的处理时间,则调度长度为: 0026 SLmax(ft(i)-min(t(i) 0027 在调度成功的前提下,较小的调度长度意味着任务被较早处理完毕,且处理器的 平均利用率较高。 0028 4)处理器利用率(Utilization Rate,UR):指处理器执行任务占用的。
19、时间和与调 度长度之比。设任务集S中有S j 个任务被处理器P j (j1,2,L,m)响应,则P j 的利用率 为: 0029 0030 而所有处理器的平均利用率(Average Utilization Rate,AUR)则可表示为: 0031 0032 一般情况下,一个调度算法不能使上述指标同时达到最优,应在保证调度成功率 的前提下,尽可能提高其他指标,以使系统的整体性能得到优化。 发明内容 0033 为了克服现有技术的上述缺点,本发明提供了一种多核分片XML并行解析方法, 通过多核并行解析,可大大提高XML的解析速度和效率,可应用在对XML性能要求较高,或 XML文档较为庞大的系统中,如。
20、分布式系统、Web Service和云计算平台等。 0034 本发明解决其技术问题所采用的技术方案是:一种多核分片XML并行解析方法, 包括如下步骤: 0035 第一步、构造多线程并行: 0036 1)使用FORK-JOIN结构来描述如何创建并发线程; 0037 2)将FORK出来的线程放入线程池,由线程池负责线程的生命周期管理; 0038 3)在多线程环境下,采用mutex变量作为互斥信号量,实现多线程环境下的资源 访问的同步和互斥; 0039 第二步、创建主线程,由主线程初始化全局变量,用于进行子线程同步及记录查询 结果; 0040 第三步、多核并行处理器分配,用于完成进程和线程到处理器节。
21、点的分配: 0041 1)任务分配模型的建立: 0042 设多核并行处理器包含N node 个处理节点每个处理器包含N core 个 处理器核待分配的并行程序有N proc 个进程进程P i 包含M i 个 线程并行程序的总线程个数 0043 设待分配的并行程序为一个无向图G(V,E),其中V是节点的集合V i ,节点V i 对应一个二元组,其中T i 是节点对应的线程号,P i 为该线程所属的进程号;E是无 说 明 书CN 102495722 A 4/7页 7 向边的集合E ij ;连接节点V i 和V j 的边E ij E,表示线程T i 和T j 间的通信或共享数据, 边的权值W ij 。
22、表示两个线程通信或共享数据的频繁程度; 0044 2)进行两轮操作,第一轮操作完成进程到处理节点的分配,第二轮操作完成处理 节点内线程到处理器核的分配,每一轮操作包含多次迭代过程: 0045 a)对第一轮操作,初始的任务关系图以进程为单位进行初步划分,第一轮操作的 结束条件是图中复合节点个数处理节点个数,结束时图中每个复合节点为一个子图,对 应一个处理节点,包含在子图中的线程分配给该处理节点; 0046 b)对第一轮操作划分出的每个子图进行第二轮操作,第二轮操作的结束条件是图 中复合节点个数处理器核个数,结束时图中每个复合节点对应一个处理器核,包含在其 中的线程分配给该处理器核; 0047 第。
23、四步、多核XML分片: 0048 1)使用DOM将XML文档载入到内存,得到XML的树型结构; 0049 2)对XML进行子片划分: 0050 采用(x,y)表示一个XML子片,其中x代表子片的起点,y代表子片的终点,定义 一个空闲子片为未被处理器占用的XML子片,其中该子片中的所有结点都未被任何一个处 理器或子线程处理; 0051 3)一个子片S(x,y)和另一子片S(x,y)采用以下公式进行分配: 0052 FP(S,S)max(x-x)g(x-y)g(y-y)g(x-y) 0053 第五步、分片XML解析结果归并: 0054 1)分片XML解析结果统一存放: 0055 设XML分片数为n。
24、,则采用数组partn对各个XML片进行存放,其中:parti 第i个XML分片解析结果,0in 0056 2)对partn进行归并。 0057 在所述FORK-JOIN结构中,一个FORK语句产生一个新的并发线程路径,并且并发 线程在其结尾使用JOIN语句;当原线程和新产生的线程都达到JOIN语句后,代码继续以顺 序的方式执行。 0058 所述互斥信号量的工作原理为:当请求一个使用mutex来表示的资源时,进程需 要先读取mutex的值,以判断相应的资源是否可用:当mutex的值大于0时,表明有资源可 以请求;等于0时,说明现在无可用资源,进程会进入睡眠状态直至有可用资源时,当进程 不再使用。
25、一个互斥信号量控制的共享资源时,mutex的值增1。 0059 对所述mutex的值进行的增减操作均为原子操作。 0060 所述全局变量至少包括信号量、子线程状态集和结果集。 0061 所述多次迭代过程是指:从输入的初始任务关系图开始,每次选择具有最大权值 的边,合并该条边的两个复合节点并生成一个新的复合节点,且新的复合节点中所包含的 线程个数必须小于一个阈值;重复“选择-合并”过程,直到任务关系图中复合节点的个数 等于处理节点或处理器核的个数。 0062 第一、二轮操作使用的阈值分别按以下公式计算: 0063 说 明 书CN 102495722 A 5/7页 8 0064 01 0065 0。
26、066 其中,M max 为进程拥有的最多线程数,是一个百分比值,用来在均衡负载和减少 通讯之间进行权衡。 0067 所述归并为两两归并模式,归并趟数为其中N 子片 表示子片的数量。 0068 与现有技术相比,本发明的积极效果是:克服了传统XML解析的弊端,提出了一种 全新的XML解析模式,充分利用当今计算机多处理器、多核心处理器以及大内存的优势,将 XML分片,利用计算机多核多线程并行算法对XML进行解析,称为“多核分片XML并行解析 器(Multi-core Parcel XML Parallel Parser,MCP XML Parser)”,大大提高了XML访问 速率和处理效率。 附图。
27、说明 0069 本发明将通过例子并参照附图的方式说明,其中: 0070 图1是多核分片XML并行解析流程图; 0071 图2是分片XML解析结果归并示意图。 具体实施方式 0072 如图1所示,本发明方法包括如下步骤: 0073 第一步、构造多线程并行:载入需要解析的XML文档到内存,通过用户设定,将XML 文档解析划分为多个线程,在操作过程中,用户可以根据计算机配置情况自行设置线程个 数,通过系统多线程并行解析XML最终快速得到XML解析的结果: 0074 1)使用FORK-JOIN结构来描述如何创建并发线程,在FORK-JOIN结构中,一个 FORK语句产生一个新的并发线程路径,并且并发线。
28、程在其结尾使用JOIN语句。当原线程 和新产生的线程都达到JOIN语句后,代码继续以顺序的方式执行。如果需要更多的并发线 程,则需要执行更多的FORK语句。 0075 2)将FORK出来的线程放入线程池,由线程池负责线程的生命周期管理。 0076 3)在多线程环境下,采用mutex变量作为互斥信号量,实现多线程环境下的资源 访问的同步和互斥。该信号量的工作原理如下:当请求一个使用mutex来表示的资源时,进 程需要先读取mutex的值,以判断相应的资源是否可用。当mutex的值大于0时,表明有资 源可以请求。等于0时,说明现在无可用资源,进程会进入睡眠状态直至有可用资源时。当 进程不再使用一个。
29、信号量控制的共享资源时,mutex的值增1,对信号量的值进行增减操作 均为原子操作,保证维护资源的互斥或多进程的同步访问。 0077 第二步、程序创建主线程,由主线程初始化全局变量,全局变量至少应该包括信号 量,子线程状态集以及结果集,用于进行子线程同步及记录查询结果; 0078 第三步、多核并行处理器分配,用于完成进程和线程到处理器节点的分配: 0079 1)任务分配模型的建立: 0080 设多核并行处理器包含N node 个处理节点每个处理器包含N core 个 说 明 书CN 102495722 A 6/7页 9 处理器核待分配的并行程序有N proc 个进程进程P i 包含M i 个 。
30、线程并行程序的总线程个数 0081 待分配的并行程序可以表示为一个任务关系图,它是一个无向图G(V,E),其中 V是节点的集合V i ,节点V i 对应一个二元组,其中T i 是节点对应的线程号,P i 为 该线程所属的进程号;E是无向边的集合E ij ;连接节点V i 和V j 的边E ij E,表示线程T i 和T j 间的通信或共享数据,边的权值W ij 表示两个线程通信或共享数据的频繁程度。 0082 2)进行两轮操作,第一轮操作完成进程到处理节点的分配;第二轮操作完成处理 节点内线程到处理器核的分配。每一轮操作包含多次迭代,其处理过程是:从输入的初始任 务关系图开始,每次选择具有最大。
31、权值的边,合并这条边的两个顶点,也就是说,合并两个 复合节点并生成一个新的复合节点。为了满足负载均衡条件,新生成的复合节点中所包含 的线程个数必须小于一个阈值。重复“选择-合并”过程,直到任务关系图中复合节点的个 数等于处理节点(或处理器核)的个数。第一、二轮操作使用的阈值分别按以下公式计算: 0083 0084 01 0085 0086 其中,M max 为进程拥有的最多线程数,是一个百分比值,用来在均衡负载和减少 通讯之间进行权衡,当较大时,算法倾向于减少通讯量;而当较小时,算法更倾向于负 载均衡。 0087 a)对第一轮操作,初始的任务关系图以进程为单位进行了初步的划分,即图中的 复合节。
32、点数进程个数,每个复合节点对应一个进程,包含在复合节点内的线程均属于该 进程。第一轮操作的结束条件是图中复合节点个数处理节点个数,结束时图中每个复合 节点为一个子图,对应一个处理节点,包含在子图中的线程应分配给该处理节点。 0088 b)对第一轮操作划分出的每个子图都进行第二轮操作,即第二轮操作的初始任务 关系图为第一轮操作得到的子图。第二轮操作的结束条件是图中复合节点个数处理器核 个数,结束时图中每个复合节点对应一个处理器核,包含在其中的线程应分配给该处理器 核。 0089 第四步、多核XML分片:采用划分策略,将XML进行并行“分治”,将一个XML解析的 问题分解成若干性质相同的子问题,从。
33、而完成XML的“分片”: 0090 1)使用DOM将XML文档载入到内存。该操作通过调用DOM库函数来完成,载入成 功后得到XML的树型结构。 0091 2)对XML进行子片划分。采用(x,y)表示一个XML子片,其中x代表子片的起点, y代表子片的终点。定义一个空闲子片为未被处理器占用的XML子片,其中该子片中的所有 结点都未被任何一个处理器或子线程处理。 0092 3)一个子片S(x,y)和另一子片S(x,y)采用以下公式进行分配: 0093 FP(S,S)max(x-x)g(x-y)g(y-y)g(x-y) 说 明 书CN 102495722 A 7/7页 10 0094 其中FP(S,。
34、S)提供了最佳子片分配算法的依据,它选择候选子片相对于XML全 片的最大值进行分配,可用于后续任务的分配请求。 0095 第五步、分片XML解析结果归并:通过对子问题进行求解,然后将各子问题加以合 并,构造出原问题的解,从而达到多核分片快速解析XML的效果: 0096 1)分片XML解析结果统一存放:将分布于不同处理器进程和线程中的分片XML解 析结果进行统一存放。设XML分片数为n,则采用数组partn对各个XML片进行存放: 0097 parti第i个XML分片解析结果(0in) 0098 2)对partn进行归并,采用两两归并模式,经过多趟归并后,得到统一的XML解 析结果,归并趟数由下面的公式确定: 0099 0100 其中N 子片 表示子片的数量。 0101 以6个子片为例,即N 子片 6,则归并趟数为log 2 6向上取整,即归并趟数为3,则 并行分片解析结果归并过程如图2所示。 说 明 书CN 102495722 A 10 1/2页 11 图1 说 明 书 附 图CN 102495722 A 11 2/2页 12 图2 说 明 书 附 图CN 102495722 A 12 。