一种众核环境下的字符串匹配方法
【专利摘要】本发明提供一种众核环境下的字符串匹配方法,将待匹配的文本串进行切割为若干文本块后,根据模式集中的模式串长度通过处理器不同的核进行匹配。利用不同的处理器核心处理不同的文本串,再将处理的结果进行统计整合。能够适应处理文本是离散不连续的情况,避免由于有模式串出现了划分而导致的漏匹配。并且能够降低字符串匹配的时间开销。
【专利说明】
一种众核环境下的字符串匹配方法
技术领域
[0001] 本发明涉及计算机及通信技术领域,具体涉及一种众核环境下的字符串匹配方 法。
【背景技术】
[0002] 目前,8核以上的多核处理器已经占据处理器市场的重要部分。而以Tilera为代表 的众核处理器(ManyCore)也发展迅速,出现了36核、72核乃至128核的处理器产品。这些处 理器产品一方面可应用于通用服务器市场,另一方面则应用于某些专用服务器市场,比如 网络处理服务器,进行网络流量的处理。同时,众核处理器的出现,为计算机的设计提出了 新的挑战。
[0003] 在网络处理中,字符串匹配应用十分普遍,广泛应用于代码检测,漏洞挖掘等工作 中。但是一般的模式匹配方法均是基于单核处理器进行设计,而同时设计比较复杂,面向多 核,尤其是面向众核环境的模式匹配方法,仍然缺乏有效手段。
[0004] 串匹配方法的串匹配,即字符串匹配,又称模式匹配,是计算机中处理数据的基本 功能,数据库检索、网络入侵检测等工作的基础。待匹配文本、数据,网络流量包都需要采用 一定的匹配算法进行串匹配,模式匹配的速度和容量很大程度上决定着程序的运行效率。 目前的串匹配方法很多,但大多是针对单颗处理器进行设计,针对众核环境,面临着需要进 行核间交互,增大计算复杂性等问题。
[0005] 将模式匹配算法移植到众核平台有几种可能的方式。参考传统多核处理器上模式 匹配的优化,众核处理器上的模式匹配算法可能有以下几种可能的方法:
[0006] 1,多个核协同完成同一个算法流程。这种方式实际上是将多个核整合成一个核, 最大化芯片的处理能力。不过这种方式由于自动机存在状态跳转等问题,对核间通信要求 较高,实现难度较大。
[0007] 2,不同的核处理不同的规则的方法。这里面又可能包含两种方式,一种是串行的 方法,按照顺序处理不同的规则。一种是并行的方法,将不同核处理的结果反馈整合。这种 处理方法需要根据规则集的大小进行切割。这种方式导致同一个匹配文本需要根据切割后 规则集的数量进行多次匹配,增加了匹配的次数,导致因这种切割而降低的时间开销并不 会随着切割数量的增加而线性降低。
[0008] 3,不同的核并行的运行模式匹配线程,各个核之间运行各自的模式匹配算法模 块,只是共享自动机内存。这种方法的优势是各个模块之间互无关系,互不影响。这种方式 仅对处理网络流具有较好的适应性。
[0009] 4,拿出专门的核作模式匹配。这种处理方式是将所有的模式匹配模块限定在一个 内核上,由于众核的优势在于核数众多,而单个核的处理能力较低,这种方式没有充分发挥 众核芯片的处理能力。实验表明,这种方式下模式匹配算法的处理能力囿于单个核的处理 能力而性能较低。因此,这种方式较适用于对模式匹配算法需求不大的软件程序设计中,另 外,这种方式对系统总体性能影响不大。
[0010] 5,拿出专门的核处理其他工作,用大部分核处理匹配,并根据方案3进行调整,实 现对处理器使用核数的调整。在节约资源的同时,提高系统的工作效率。但是也带来了设计 复杂度提高的问题。
【发明内容】
[0011] 针对上述现有技术存在的问题,本发明的目的在于提供一种众核环境下的字符串 匹配方法,利用不同的处理器核心处理不同的文本串,再将处理的结果进行统计整合。能够 适应处理文本是离散不连续的情况,避免由于有模式串出现了划分而导致的漏匹配。并且 能够降低字符串匹配的时间开销。
[0012] 为达上述目的,本发明采用的具体技术方案是:
[0013] 一种众核环境下的字符串匹配方法,包括以下步骤:
[0014] 将待匹配的文本串切割为若干文本块后,根据模式集中的模式串长度通过处理器 不同的核进行匹配;
[0015] 如文本串为离散存储的,则每个由一个处理器的核进行匹配的文本块的长度ni 为:
[0017]其中,q为模式集中最长的模式串长度,η为文本串长度;t为文本块的数量;
[0018]如文本串为连续存储的,则每个由一个处理器的核进行匹配的文本块的长度ni 为:
[0020]其中,m为模式集中最短的模式串长度。
[0021]进一步地,所述文本块的数量t与处理器中作为模式匹配工具的核的数量相同 [0022]进一步地,所述文本块的数量t与处理器的核数相同。
[0023]进一步地,还包括:将t个处理器的核上的匹配的结果反馈并进行统计。
[0024] 进一步地,所述处理器的核对文本块依据Wu-Manber算法进行串匹配。
[0025]进一步地,所述文本块的数量t大于处理器的核数,进行匹配时,首先逐个将与处 理器的核数对应数量的文本块分到处理器的核上进行匹配;当有一处理器的核完成匹配 时,则将其余文本块中的一个的分到前述完成匹配的处理器的核上进行匹配。
[0026] 进一步地,处理器的一管理核心根据用于匹配的处理器的核的情况,将文本块分 配到不同的处理器的核。
[0027] 进一步地,处理器的核对一文本块进行匹配后,将匹配结果返回给管理核心。
[0028]进一步地,管理核心根据已经完成的匹配结果,将其余文本块中的一个的分到前 述完成匹配的处理器的核上进行匹配。
[0029]通过采取上述技术方案,由于文本串的随机性较好,分配的不均匀性会比较低,能 够获得接近处理器的可用核数线程数的加速比。从而字符串匹配的时间开销。适应众核环 境,提升众核处理器性能。
【附图说明】
[0030] 图1为本发明一实施例中众核环境下的字符串匹配方法的流程示意图。
[0031] 图2为本发明另一实施例中众核环境下的字符串匹配方法的流程示意图。
【具体实施方式】 [0032] 工作原理简述:
[0033] 在并行模式匹配方法开发中,需要考虑的最主要问题是如何将工作量均匀地分配 到各个处理线程,以充分利用多核多线程技术提升加速比。
[0034] 对于并行的模式匹配问题,有两种工作量分配的方式可以考虑。一种是划分模式 集,将模式集按照一定的策略均匀地分到不同的处理线程中。另一种是划分文本,将待匹配 的文本串划分成几个小的文本块,送到不同的线程也即处理器的可用核来处理。
[0035] 如果对模式集进行划分,同一个文本串在不同的处理线程中进行多次匹配,每个 线程由于模式集的减小带来的性能提升是有限的,最终的加速比仍然会受限于匹配速度最 慢的线程。很难找到一张那个合适的方案可以讲模式集均衡地分配到各个线程,分配的不 均衡最终会影响并行化模式匹配方法的综合性能。
[0036] 而划分文本串的并行化方案要优于模式集切分方案,因为真实应用场景下,文本 串的随机性要好于模式集,分配的不均匀性会比较低,可获得接近线程数及处理器核数的 加速比。
[0037]利用不同的处理器核心处理不同的文本串,再将处理的结果进行统计整合。这种 方法可能需要将将待匹配的长文本串进行切割。如果处理文本是离散不连续的,比如网络 入侵检测的数据包,则需要将内容动态地分配到不同的处理核心上,本申请主要针对这种 算法进行了改进。
[0038]本申请对带匹配的文本串的切割的一个具体方案如下:假设处理器的核数即多线 程数为t,模式集中最短模式串长度为m,最长模式串长度为q,文本串长度为η。将整个文本 串划分为t份,每一份由一个处理器的核即一个线程进行处理。每一份文本块的长度为:
[0040] 前t-ι个文本块后又加入了 q-l个字符,可以保证每一个可能匹配的模式串总是可 以完整地出现在某一个文本块中,防止出现由于有模式串出现了划分而导致的漏匹配。文 本串切分后,实际匹配字节数为11' = (11八+(1-1)\(〖-1)+11八=11+((1-1)\(〖-1),则多匹配 的字节数为A n= (q-l) X(t-l)远小于η。所以由于划分而多出来的匹配时间消耗是可以忽 略不计的。
[0041] 如果文本串是连续存储在内存当中的,上面的文本串划分策略还可以进一步优 化,仍然将整个文本串划分为t份,每一份由一个线程进行处理,每一份文本块的长度变为:
[0043]这里前t-Ι个文本块后只需要加入m-1个字符,是因为文本串连续存储,划分时只 需要保证所有模式串的最优m窗口中的m个字节总是可以完整地出现某一个文本块里,匹配 验证时,算法会跨过文本块进行字符比较,最终确认匹配。这种方案下,由于文本串划分而 多匹配的字节数变成An=(m-l)(t-l)〈(q-l)(t-l),消耗进一步下降。
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整的描述。
[0045] 实施例1:
[0046]本实施例以Wu-Manber经典算法为例,结合图1,描述众核环境下基于文本串切分 的并行模式匹配方法流程如下:
[0047] 1,根据处理器芯片的分配情况,统计处理器可使用的核数T。
[0048] 2,确定一定数量的众核处理器的处理核作为模式匹配工具,即确定文本串需要切 分的数量T。
[0049] 3,利用文本串切分模型对文本串进行切分,切分为T个子串,切分过程参考上文, 在此不再赘述。
[0050] 4,将T个子串划分到处理器的T个核上。
[0051] 5,在处理器的T个核上依据Wu-Manber算法进行串匹配,存储匹配结果。
[0052] 6,将T个核上匹配的结果反馈并进行统计。
[0053] 流程结束。
[0054] 实施例2:针对超长文本条件下动态调整的文本串切分并行模式匹配方法。
[0055] 上文提出的基于文本串切分的并行模式匹配算法,可以有效地提高处理器的利用 效率。不过,文本串匹配的时间决定于处理最慢的处理核心,主要原因是文本串中词频的分 布不均。随着文本串长度的增长,这种处理上的时差将会放大。
[0056] 这时候,就需要对文本串的切分方法作进一步的优化。在超长文本的情况下,本申 请提出基于流水线模式的文本串切分处理方法。将超长文本切分为一个个小的任务包,将 逐个任务包分到处理核上。当有处理核心完成匹配时,再将新的任务包分配到核心上,实现 各个核心任务上的负载均衡。图2为处理过程示意图。
[0057] 处理流程如下:
[0058] 1,将待匹配的超长文本按照文本串切分模型划分为N个子任务(Taskl,Task2, Task3,......);
[0059] 2.管理核心(图中MangeCore)根据用于匹配的核的情况,将子任务分配到不同的 匹配核上;(图中虚线)
[0060] 3.匹配核对子任务进行匹配,匹配完毕后,将结果返回给管理核心;(图中右侧线)
[0061] 4.管理核心根据已经完成的匹配结果,将新的子任务分配到已完成匹配的核上 (图中Task5,Task6);
[0062] 5.新的任务到已完成匹配的核进行匹配;(图中黑色箭头)
[0063] ……
[0064] 6.匹配完毕,对匹配结果进行整合。
[0065] 流程结束。
[0066] 实际运行结果:
[0067]为了比较以上众核环境下算法在众核处理器平台的运算速度,本申请选用了 1U 72核的Tilera GX72服务器与双路6核Intel的服务器进行了对比。测试环境如下:特征串长 度范围:4-100字节;特征串长度分布8-16字节的占80% ;特征串数量5万。测试文本采用字 符集大小为256,随机产生的32MB文本,然后按照命中率的不同随机插入字符串。首先,测试 了不同平台单个核的处理能力:
[0069]从上表可以看出,Tilera单核处理能力与x86服务器相比具有较大差距。接下来, 我们利用上述模型进行了 Tilera众核服务器和x86服务器的性能比较,结果如下:
[0071]
[0072] 从上表中可以看出,使用以上方法的众核平台执行速度大约是x86平台下执行速 度的3-6倍。而且测试数据越大,众核性能的优势更大。以上方法对于提高众核平台处理能 力具有十分重要作用。同时也可以看出,该方法下处理器性能是比较稳定的,覆盖了特征串 分布的不同情况。
[0073] 显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发 明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
【主权项】
1. 一种众核环境下的字符串匹配方法,包括以下步骤: 将待匹配的文本串切割为若干文本块后,根据模式集中的模式串长度通过处理器不同 的核进行匹配; 如文本串为离散存储的,则每个由一个处理器的核进行匹配的文本块的长度ni为:其中,q为模式集中最长的模式串长度,η为文本串长度;t为文本块的数量; 如文本串为连续存储的,则每个由一个处理器的核进行匹配的文本块的长度ni为:其中,m为模式集中最短的模式串长度。2. 如权利要求1所述的众核环境下的字符串匹配方法,其特征在于,所述文本块的数量 t与处理器中作为模式匹配工具的核的数量相同。3. 如权利要求1所述的众核环境下的字符串匹配方法,其特征在于,所述文本块的数量 t与处理器的核数相同。4. 如权利要求1至3任一项所述的众核环境下的字符串匹配方法,其特征在于,还包括: 将t个处理器的核上的匹配的结果反馈并进行统计。5. 如权利要求1至3任一项所述的众核环境下的字符串匹配方法,其特征在于,所述处 理器的核对文本块依据Wu-Manber算法进行串匹配。6. 如权利要求1所述的众核环境下的字符串匹配方法,其特征在于,所述文本块的数量 t大于处理器的核数,进行匹配时,首先逐个将与处理器的核数对应数量的文本块分到处理 器的核上进行匹配;当有一处理器的核完成匹配时,则将其余文本块中的一个的分到前述 完成匹配的处理器的核上进行匹配。7. 如权利要求6所述的众核环境下的字符串匹配方法,其特征在于,处理器的一管理核 心根据用于匹配的处理器的核的情况,将文本块分配到不同的处理器的核。8. 如权利要求7所述的众核环境下的字符串匹配方法,其特征在于,处理器的核对一文 本块进行匹配后,将匹配结果返回给管理核心。9. 如权利要求8所述的众核环境下的字符串匹配方法,其特征在于,管理核心根据已经 完成的匹配结果,将其余文本块中的一个的分到前述完成匹配的处理器的核上进行匹配。
【文档编号】G06F9/50GK105868300SQ201610173374
【公开日】2016年8月17日
【申请日】2016年3月24日
【发明人】王子厚, 汪立东, 贺龙涛, 邹昕, 张良, 孙昊良, 李晓倩, 彭义刚
【申请人】国家计算机网络与信息安全管理中心