一种数据调度方法和装置的制造方法

文档序号:8208984阅读:238来源:国知局
一种数据调度方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据处理技术领域,尤指一种数据调度方法和装置。
【背景技术】
[0002]数据的存储向大数据(Big data)方向发展,大数据的爆炸式增长在大容量、多样性和高增速方面,全面考验着现代企业的数据处理和分析能力。随着微处理器和操作系统的发展,高性能的应用程序越来越成为经济社会发展的需要。应用程序可以使用多个线程来提高执行效率,这为系统的负载均衡带来了巨大挑战,例如,将线程与CPU核心绑定后,线程之间负载不均衡将会导致CPU核心的负载不均衡,整个系统无法达到最佳利用率,甚至影响系统的吞吐量。
[0003]多线程中每个线程的生命周期不同。一方面,对于多线程中生命周期不重叠的部分,当线程映射到CPU核心后,会导致一些CPU核心处于空闲状态,没有充分发挥CPU的资源利用率;另一方面,对于生命周期重叠的部分,各个线程所执行的任务负载也不一定相同,从而导致有的CPU核心在线程执行完后处于空闲状态,如此影响了系统的负载均衡,进而影响了系统的处理速度。

【发明内容】

[0004]为了解决上述技术问题,本发明提供了一种数据调度方法和装置,能够实现多线程的负载均衡,提高系统的处理速度。
[0005]为了达到本发明目的,本发明提供了一种数据调度方法,包括:预先设置原始线程、任务调度线程和线程池,所述线程池包括至少一条执行线程;任务调度线程确定原始线程中的任务的优先级和执行线程的负载度;任务调度线程将优先级为第一预设值的任务调度给负载度为第二预设值的执行线程。
[0006]所述任务调度线程确定原始线程中的任务的优先级之前,还包括:所述原始线程获取任务请求中的任务,通过计算完成任务需要调用的每个函数在单个CPU上的时间来获得任务的预计完成时间,将包括任务的入口地址和预计完成时间的任务信息发送给所述任务调度线程;
[0007]所述任务调度线程确定原始线程中的任务的优先级,包括:所述任务调度线程接收来自原始线程的任务信息,确定任务的批次,并根据任务的预计完成时间和批次计算任务的优先级:
[0008]优先级=任务预计完成时间X可调系数R e (0.5,I),
[0009]其中,所述R与任务的批次相对应。
[0010]所述任务调度线程确定执行线程的负载度之前,还包括:所述执行线程获取自身任务队列中的任务处理信息,所述任务处理信息包括任务队列总时间、预计完成时间、当前任务消耗时间和任务平均时间,并将任务处理信息提交给任务调度程序;
[0011]所述任务调度线程确定执行线程的负载度,包括:
[0012]所述任务调度线程根据所述任务处理信息计算执行线程的负载度:
[0013]负载度=任务队列总时间+(预计完成时间-当前任务消耗时间)/预计完成时间X任务平均时间,
[0014]其中,所述任务队列总时间为执行线程的任务队列中所有任务预计完成时间之和;
[0015]所述预计完成时间为执行线程完成当前任务所需要的时间;
[0016]所述当前任务消耗时间为执行线程完成当前任务已消耗的时间;
[0017]所述任务平均时间为所有任务预计完成时间/任务数。
[0018]所述第一预设值为优先级最高,第二预设值为负载度最低;所述任务调度线程将优先级为第一预设值的任务调度给负载度为第二预设值的执行线程,包括:所述任务调度线程将优先级最高的任务调度给负载度最低的执行线程。
[0019]所述任务调度线程将优先级最高的任务调度给负载度最低的执行线程,包括:所述任务调度线程根据任务的优先级和执行线程的负载度分别构建任务的优先级根堆和执行线程的负载度根堆,其中,所述优先级根堆中堆顶为优先级最高的任务,所述负载度根堆中堆顶为负载度最低的执行线程;所述任务调度线程将所述优先级根堆中堆顶的任务添加到所述负载度根堆中堆顶的执行线程的任务列表中。
[0020]所述任务调度线程将优先级为第一预设值的任务调度给负载度为第二预设值的执行线程之后,还包括:所述任务调度线程接收来自执行线程的任务完成信息,更新执行线程的负载度;所述任务调度线程接收来自原始线程的任务,更新任务的优先级。
[0021]一种数据调度装置,至少包括:设置模块,用于预先设置原始线程、任务调度线程和线程池,所述线程池包括至少一条执行线程;处理模块,用于通过任务调度线程确定原始线程中的任务的优先级和执行线程的负载度;调度模块,用于通过任务调度线程将优先级为第一预设值的任务调度给负载度为第二预设值的执行线程。
[0022]所述处理模块通过任务调度线程确定原始线程中的任务的优先级,具体为:通过所述原始线程获取任务请求中的任务,通过计算完成任务需要调用的每个函数在单个CPU上的时间来获得任务的预计完成时间,将包括任务的入口地址和预计完成时间的任务信息发送给任务调度线程;
[0023]通过所述任务调度线程接收来自原始线程的任务信息,确定任务的批次,并根据任务的预计完成时间和批次计算任务的优先级:
[0024]优先级=任务预计完成时间X可调系数R e (0.5,I),
[0025]其中,所述R与任务的批次相对应。
[0026]所述处理模块通过任务调度线程确定执行线程的负载度,具体为:通过所述执行线程获取自身任务队列中的任务处理信息,所述任务处理信息包括任务队列总时间、预计完成时间、当前任务消耗时间和任务平均时间,并将任务处理信息提交给任务调度程序;
[0027]通过所述任务调度线程根据所述任务处理信息计算执行线程的负载度:
[0028]负载度=任务队列总时间+(预计完成时间-当前任务消耗时间)/预计完成时间X任务平均时间,
[0029]其中,所述任务队列总时间为执行线程的任务队列中所有任务预计完成时间之和;
[0030]所述预计完成时间为执行线程完成当前任务所需要的时间;
[0031]所述当前任务消耗时间为执行线程完成当前任务已消耗的时间;
[0032]所述任务平均时间为所有任务预计完成时间/任务数。
[0033]所述第一预设值为优先级最高,第二预设值为负载度最低;所述调度模块,具体用于:通过所述任务调度线程根据任务的优先级和执行线程的负载度分别构建任务的优先级根堆和执行线程的负载度根堆,其中,所述优先级根堆中堆顶为优先级最高的任务,所述负载度根堆中堆顶为负载度最低的执行线程;通过所述任务调度线程将所述优先级根堆中堆顶的任务添加到所述负载度根堆中堆顶的执行线程的任务列表中。
[0034]还包括更新模块,用于:通过所述任务调度线程接收来自执行线程的任务完成信息,更新执行线程的负载度;通过所述任务调度线程接收来自原始线程的任务,更新任务的优先级。
[0035]与现有技术相比,本发明包括预先设置原始线程、任务调度线程和线程池,所述线程池包括至少一条执行线程;任务调度线程确定来自原始线程的任务的优先级和执行线程的负载度;任务调度线程将优先级为第一预设值的任务调度给负载度为第二预设值的执行线程。通过本发明方法,原始线程接收到任务后,仅需要将任务提交给任务调度线程,任务调度线程根据任务的优先级和执行线程的负载度进行任务调度,将原始线程中优先级高的任务调度给负载度低的执行线程,从而实现了多线程间的负载均衡,提高了系统的处理速度。
[0036]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1