一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向交通数据流的最优排序算法选择方法与流程

2021-10-27 20:08:00 来源:中国专利 TAG:方法 排序 流速 数据流 线程


1.本发明涉及面向交通监控数据流的最优排序方法,涉及不同流速的数据流下的多线程排序方法及线程数选择方法。


背景技术:

2.近年来,数据流的应用场景愈发广泛,如智慧城市、物联网、智能交通等。数据流是时间有序且延时间方向无限延伸的字节数据序列。数据流具有以下特点:实时性、快速性、无限性、不可控性。本发明中的数据流由流元组构成,而流元组又是由信息头和数据元组两部分组成,流元组信息头存储该流元组相关信息。对于数据流的处理一般是在接收后就进行处理,否则持久化后很难再处理,而处理的手段之一就是根据流元组信息头中某一因素进行排序。作为最耗费资源的操作,排序很大程度影响了整个系统的处理效率,因此需要选择合适的算法以及排序线程数进行优化,尤其是对于现代多核多线程的处理器。
3.流数据处理方面已有大量的研究工作,产生了许多处理实时数据流的系统,但是对于数据流排序处理的算法以及线程选择并没有相关成果,而数据流实时性、突发性、无限性的特点对数据流的排序速度提出了更高的要求。数据流处理速度跟不上数据流的接收速度或导致系统宕机。


技术实现要素:

4.为了克服现有技术的不足,本发明提出一种针对交通数据流场景下,同等大小时间窗口下不同数据量的排序策略选择方法,交通数据流具有波动性,例如早晚高峰期和其他时间段的数据流,同等大小时间窗口下的数据量是不同的,最终扩展为任何大小数据量的排序策略选择的方法。
5.本发明解决其技术问题所采用的技术方案是:
6.一种面向交通数据流的最优排序算法选择方法,包括以下步骤:
7.1)、获得各排序算法的运行时间

数据量

线程数关系拟合函数并创建算法库,过程如下:
8.1.1)、首先通过本地环境测试得到快速排序时间远优于其他排序算法时的最小数据规模s_max,并将所有算法标志位置1,即可用;
9.1.2)、创建各排序算法对应的计算内存资源消耗的函数;
10.1.3)、按运行时间

数据量

线程数关系构造中所阐述的方式,计算每个算法的拟合函数;
11.2)、获取计算参数并进行剪枝,过程如下:
12.2.1)、获取计算机cpu核数、可用内存大小以及待排序的数据量大小s_num;
13.2.2)、若s_max<s_num,将算法库中除快速排序之外的所有排序算法的标志位置为0,即不可用,反之不做操作;
14.2.3)、根据算法库中各排序算法的计算内存资源消耗函数,获取预计消耗内存大
小,假设预计消耗3g内存,而当前可用内存大小为2g,将该算法标志位置为0,若所有算法标志位都为0,则算法选择结束,等待资源释放内存充足;若存在标志位为1的排序算法则执行步骤3);
15.3)、通过已知拟合函数,计算获取当前条件下最优排序算法,过程如下:
16.3.1)、通过拟合函数计算可用排序算法的时间开销tn和线程数kn;
17.3.2)、若采用时间优先策略,将可用排序算法按照时间开销升序排列,反之将可用排序算法按照内存开销升序排列,内存开销在2.3)中算得。
18.进一步,所述步骤3)中,交通数据流不间断,前一个时间窗口排序时间过长会导致后续时间窗口数据阻塞,所以采取时间开销升序排列。
19.再进一步,在window10系统下,平均每个线程540kb,考虑线程内存消耗,计算排序算法1(6线程)、排序算法2(8线程)和排序算法3(5线程)预计消耗总内存:排序算法1(m1 3240kb)、排序算法2(m2 4320kb)、排序算法3(m3 2700kb);排序算法1预计消耗总内存大于当前可用内存,则考虑排序算法2,若小于当前内存,则选择该排序算法为当前最优排序策略,排序算法选择结束。排序算法2、3同理判断,若排序算法3预计消耗总内存也大于当前可用内存,即所有排序算法均不满足条件,则排序算法选择结束,等待资源释放内存充足。
20.所述步骤1)中,创建算法库的过程为:
21.i)根据排序算法性能测试的结果构建运行时间

数据量

线程数关系;
22.ii)参照各排序算法的空间复杂度构造排序算法的资源计算函数,提供一个大于等于实际值的估值,避免选用因过度使用内存导致系统宕机的算法;
23.iii)参照各排序算法的时间复杂度构造各排序算法的拟合函数,提供一个目标拟合函数,且除了快速排序拟合函数,其他排序算法的拟合函数的数据量自变量都不超过临界值s_max,减少拟合资源耗费。
24.所述步骤1)中,算法库创建中的时间

数据量

线程数关系,算法库内各排序算法的运行时间

数据量

线程数关系分别对应一个曲面,曲面由各排序算法在不同数据量不同线程数下的实际运行时间拟合而成,各排序算法的运行时间

数据量

线程数关系构造的过程为:
25.i)进行各排序算法在不同线程数和不同数据量大小下的时间测试;
26.ii)利用最小二乘法拟合各排序算法对应不同线程、不同数据量下耗费时间的曲面函数;
27.iii)该曲面函数得出后会被记录存储供实际应用时调用。
28.所述步骤3)中,最优排序算法选择的过程为:
29.i)获取计算机cpu核数、可用内存大小以及待排序的数据量大小s_num;ii)如果s_num大于s_max,则仅考虑快速排序,否则需要考虑所有排序算法;
30.iii)对所有可能的排序算法利用资源计算函数,计算出各个排序算法所需的预估内存资源消耗,如果所需内存资源消耗量大于实际可用内存,则拒绝该排序算法,否则接受该排序算法为候选排序算法;
31.iv)对所有候选排序算法利用拟合函数,计算出所有候选排序算法在当前环境下的最优线程数和最小排序时间;
32.v)针对交通数据流的实时性特点,即交通场景对时间要求比较高,所以对所有候
选排序算法的最小排序时间进行排序,取其中最小排序时间最小的排序算法,该排序算法即当前环境下最优排序算法,同时更新预测表中相应时间段的排序算法信息。
33.本发明中,考虑不同系统不同机器之间的差异,构建本地数据集,数据集包括各种排序算法在不同线程数不同数据量下的排序代价,以拟合曲面的形式存储,即将点集连续化,构成时间

数据量

线程数关系,使其能应归各种复杂情况,提高了实际应用的可行性,实现了基于实时可用内存的一次构建长期使用的方案。运行时根据时间窗口内实际的数据规模,兼顾考虑可用内存量,同时根据具体情况进行剪枝优化,维护一张历史排序算法选择结果的预测表以提高分析效率,根据系统资源情况更改时间窗口大小,最终实现根据不同需求场景提供不同的排序算法以达到最优的排序效率。
34.本发明的有益效果主要表现在:达到最优的排序效率。
附图说明
35.图1是本发明的最优算法选择的流程示意图。
36.图2是本发明的最优算法选择流程图。
37.图3是本发明的预测表结构示意图。
具体实施方式
38.下面结合附图对本发明作进一步描述。
39.参照图1~图3,一种面向交通数据流的最优排序算法选择方法,包括以下步骤:
40.1)、获得各排序算法的运行时间

数据量

线程数关系拟合函数并创建算法库,过程如下:
41.1.1)、首先通过本地环境测试得到快速排序时间远优于其他排序算法时的最小数据规模s_max,并将所有算法标志位置1,即可用;
42.1.2)、创建各排序算法对应的计算内存资源消耗的函数;
43.1.3)、按运行时间

数据量

线程数关系构造中所阐述的方式,计算每个算法的拟合函数;
44.2)、获取计算参数并进行剪枝,过程如下:
45.2.1)、获取计算机cpu核数、可用内存大小以及待排序的数据量大小s_num;
46.2.2)、若s_max<s_num,将算法库中除快速排序之外的所有排序算法的标志位置为0,即不可用,反之不做操作;
47.2.3)、根据算法库中各排序算法的计算内存资源消耗函数,获取预计消耗内存大小,假设预计消耗3g内存,而当前可用内存大小为2g,将该算法标志位置为0,若所有算法标志位都为0,则算法选择结束,等待资源释放内存充足;若存在标志位为1的排序算法则执行步骤3);
48.3)、通过已知拟合函数,计算获取当前条件下最优排序算法,过程如下:
49.3.1)、通过拟合函数计算可用排序算法的时间开销tn和线程数kn;
50.3.2)、若采用时间优先策略,将可用排序算法按照时间开销升序排列,反之将可用排序算法按照内存开销升序排列,内存开销在2.3)中算得。
51.进一步,所述步骤3)中,交通数据流不间断,前一个时间窗口排序时间过长会导致
后续时间窗口数据阻塞,所以采取时间开销升序排列。
52.再进一步,在window10系统下,平均每个线程540kb,考虑线程内存消耗,计算排序算法1(6线程)、排序算法2(8线程)和排序算法3(5线程)预计消耗总内存:排序算法1(m1 3240kb)、排序算法2(m2 4320kb)、排序算法3(m3 2700kb);排序算法1预计消耗总内存大于当前可用内存,则考虑排序算法2,若小于当前内存,则选择该排序算法为当前最优排序策略,排序算法选择结束。排序算法2、3同理判断,若排序算法3预计消耗总内存也大于当前可用内存,即所有排序算法均不满足条件,则排序算法选择结束,等待资源释放内存充足。
53.大数据背景下,针对不同流速数据流和不同软硬件条件的最优排序策略不同,故而发明本方法。下面以城市交通路口数据为例,具体阐述最优排序算法选择的方案。通过预先测试,实现在应用时实时选择高效排序算法以及对应线程数。
54.交通数据流元组以<t,data>形式构成,t代表数据流元组的时间戳,data包括车辆信息与监控信息。对于不同需求场景可以采用不同数据作为排序的key值,例如车牌号、监控路口编号等。排序数据量大小为一个时间窗口内的数据量。
55.交通数据流除了具有一般数据流的特点以外,还存在数据流流量的高峰期和低谷期且差异较大的特性,影响单个时间窗口中数据流排序的效果,所以针对不同数据流流量情况选择最优排序算法以实现各种数据流流量情况下数据处理效率都较高的效果。当然影响排序效果的因素并不止是数据流量的大小,以下对面向交通数据流排序算法选择方案作具体阐述。
56.交通数据流可以从交通摄像头等各种设备中获取,无论对数据流建立索引,亦或是为了满足方便查询的需要,普遍采取对数据流做排序处理。针对交通数据流流量大的特点,普遍将数据流划分为一个个时间窗口t_window(假设初始值设置为10s)再进行处理。当一个时间窗口的数据流元组完全到达后,才开始执行数据流的排序方案。数据流排序方案分为启动和运行两个阶段。
57.第一阶段:启动阶段
58.任何算法的执行效果是依赖于机器环境的,所以在进行排序算法选择之前,应该对所有预选排序算法在本机环境中做必要的测试。根据经验可以知道,快速排序算法在大数据量的情况下有非常好的排序效果,所以本测试的主要目的在于获得快速排序算法在多少数据量下可以明显优于其他预选算法,假设为s_max。
59.算法库用以存储所有排序算法的信息,包括排序数据量、排序线程数、占用内存量和执行时间等。当后续的解决方案需要用到某一个具体的排序算法时,可以直接在算法库中找到并按照排序算法信息进行设置并执行。
60.预测表初始为空表,如附图3所示。系统在第一次启动时建立预测表。预测表中的内容是最近一周在早晚高峰和其余时间的历史最优排序算法。历史最优排序算法选择情况包括算法名称、占用内存情况、最优线程数和最小运行时间。
61.第二阶段:运行阶段
62.系统初次启动时预测表为空,所以系统在第一周运行时需要将本周的数据流量及选择的排序算法信息记录到预测表中。例如,在早晚高峰的时间段内,如果每次都对当前时间窗口进行排序算法选择的话,从性能角度考虑显然不可取,因为此时数据流大量流入,排序操作本身已经很消耗计算机资源,如果再额外消耗大量计算资源进行排序算法选择,不
但造成了计算资源的极大浪费,还有可能导致后续数据流接收的堵塞。所以,若预测表中已存在某个时间段内的历史最优排序算法信息,则直接使用预测表中记录的排序算法信息。如果系统使用之后发现该排序算法已经不适用于当前状况,表明该预测已失效,则重新对当前窗口的数据进行排序算法选择,并且用最新的排序算法信息覆盖原来对应位置的预测表中的排序算法信息。当下一周开始的时候,步骤同上,优先使用预测表中的排序算法信息以减小系统开销和时间花销;若不成功,则重新进行排序算法选额并更新覆盖预测表原有的排序算法信息。
63.由此可知,系统存在两种情况必须进行排序算法的选择工作:
64.(1)系统刚启动时预测表为空,所以第一周必须进行排序算法选择;
65.(2)当预测表中的信息过时时,需要重新进行排序算法选择。
66.排序算法选择的主要过程如下:若当前时间窗口的数据量大小超过s_max,则直接采用快速排序算法。如果因为内存资源不足而导致快速排序算法的不可用,则将时间窗口大小缩短至原来的一半(即t_window/2,向上取整),再次判断快速排序算法的可用性,如果还是因为内存不足的原因,继续缩短时间窗口大小,直到时间窗口大小为1s,此时仍然因为内存不足导致排序工作无法顺利执行,则只能做系统宕机处理。如果当前时间窗口的数据量大小小于s_max,则需要考虑所有预选排序算法,从中找到最优的方案。
67.以下是对数据流排序方案中两个阶段的具体描述:
68.本地环境排序算法性能测试:已知快速排序算法在大数据规模下显著优于大部分排序算法,故单个时间窗口大小数据流超过一定规模后系统只考虑采用快速排序算法。由于机器配置不同性能也不会不同,导致选择快速排序算法的有效临界数据规模值s_max(亦称临界值)也不同。为获取临界值s_max,在实际运行环境下先进行排序算法性能测试,随机生成不同数据量(例如10
n
,n=1,2,3
……
n)的数列,分别运用所有备选排序方法对其进行排序,当n值大小逐渐递增直到快速排序算法的时间明显优于其他算法时,确定此值为临界值,测试结束。
69.算法库的创建以及使用:系统启动阶段创建算法库,即根据排序算法性能测试的结果构建运行时间

数据量

线程数关系创建算法库,同时维护各种排序算法的相关信息以及对应的资源计算函数(geta_memconsume(s_num))和拟合函数(fun_a(s_num))。资源计算函数参照各排序算法的空间复杂度,提供一个大于等于实际值的估值,避免选用因过度使用内存导致系统宕机的排序算法。拟合函数参照各算法的时间复杂度,提供一个目标拟合函数,且除了快速排序函数,其他算法的拟合函数的数据量自变量都不超过临界值s_max,减少拟合过程的资源耗费。
70.算法库中的各排序算法信息包括根据资源计算函数得出的排序时占用内存情况,运行时间

数据量

线程数的对应关系,以及一个函数标志位用于标记此排序算法在当前情况下是否可用。
71.当得到即将排序的数据量大小时,经过最优排序算法选择选取合适算法,根据已知数据量大小从算法库中获取排序算法信息,包括时间空间资源耗费代价,根据交通流数据实时性优先的特点选取时间耗费最小的算法以及对应的线程数。
72.时间

数据量

线程数关系构造:算法库内各排序算法的运行时间

数据量

线程数关系分别对应一个曲面,曲面由各个排序算法在不同数据量和线程数下的实际运行数据拟
合而成。虽然在内存允许的情况下排序算法耗时与数组大小正相关,但是为了能够得到更精准的关系,需要进行在不同数据量大小下的排序算法性能测试,然后再利用最小二乘法拟合出每种排序算法对应的不同线程、不同数据量下时间代价的曲面,该曲面得出后会被记录存储供实际应用时调用。
73.就以上构建过程展开如下几点说明:
74.1)、曲面拟合采用的是最小二乘法拟合,拟合前需要判断曲面形状获取计算所需通式。该曲面在运行时间

数据量面上的投影形状为排序算法对应时间复杂度,在运行时间

线程数面上的投影近似二次函数,由此得出构建曲面方程通式;
75.2)、数据量采样点选择10
n
,n=1,2,3
……
,超过10万以后每次增加10万,除快速排序算法以外,其余算法不测试数据量超过临界值s_max之后的性能,线程数采样点与当前cpu的核数有关(具体措施见最优排序算法的选择流程),采用最小二乘法进行曲面拟合得到特定排序算法对应的曲面模型;
76.3)、重复上述操作获得每一个排序算法对应的曲面模型。
77.最优排序算法的选择流程:首先,获取计算机cpu核数core_num及可用内存大小mem_ava。获取cpu核数core_num的目的在于确定最大可能线程数max_thread=core_num*4(对于拥有超线程技术的处理器而言,如若不是,则最大可能线程数采用max_thread=core_num*2);获取可用内存大小mem_ava的目的在于限制或拒绝某些需要消耗大量内存资源的排序算法,如果排序算法预估的内存占用大于mem_ava,则直接拒绝该排序算法。
78.算法库已存入所有可能适用的排序算法的名称、计算预占用内存大小的函数、拟合曲面参数、计算某一数据量下运行时间和线程数大小的关系曲线等关键信息。系统统计数据流流入的数据量大小s_num,当s_num比排序算法测试中得到的s_max还要大的时候,认为当前的数据量大小已经超出了一般排序算法处于最优性能时的数据量范围,此时只考虑采用快速排序算法进行处理。当可用内存空间无法满足快速排序算法所需内存空间要求时,可考虑堆排序,因为堆排序在空间复杂度上要小于快速排序(快速排序为o(nlogn),堆排序为o(1))。如果此时系统仍然无法满足算法要求,则认为没有任何算法可以满足系统要求,只能作系统宕机处理。
79.当s_num比排序算法测试中得到的s_max还要小的时候,则认为不仅快速排序可以满足系统排序要求,算法库中其他的排序算法也可能可以适用,所以需要遍历所有可能适用的排序算法。首先,通过算法库中的预占用内存大小的计算函数测出该排序算法内存代价,如果满足系统的可用内存资源的限制,则在结构体中记录下该排序算法的所有信息,包括算法名称、算法占用内存大小、最小时间、线程数,最小时间和线程数通过算法库中的曲面拟合函数计算得到。计算过程如下:由于在进行曲面模型拟合时,时间和线程数的关系采用二次关系,所以当s_num确定后,三维曲面就变成了二次函数,通过数学关系易得最小值点,即所求最小时间和线程数。如果可用算法集为空,则同样认为没有任何排序算法可以满足系统要求,只能作系统宕机处理,否则,根据实际情况的需要,如果对时间要求比较高,则可从算法集中优先选取所花时间短的排序算法;如果对内存资源要求比较高,则可从算法集中优先选取内存消耗小的排序算法。
80.但是,值得一提的是,前面在讨论排序算法在内存方面是否可用时只依据空间复杂度考虑排序算法的可行性,但是在实际情况中,多线程同样需要花费内存资源,所以需要
将线程占用的内存资源也考虑进来。假设在linux或windows系统下单个线程所耗内存大致约a kb,为了确保系统的可行性,设置单个线程所消耗内存为(a 200)kb。如果多线程所消耗的内存(线程数*(a 200)kb)加上排序算法所消耗的内存仍然满足系统内存要求,即小于可用内存总量,则认为该排序算法可以被使用,称之为候选排序算法。
81.以系统对时间要求比较高为例(此时结构体元素按时间升序排列),依次遍历可用算法集中的结构体元素(各个排序算法),若当前排序算法是候选排序算法时,则该排序算法就是系统需要选择的最优排序算法,此时的结构体元素中就包含了该排序算法在本地环境和数据量下所有的关键信息,如图2所示。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜