一种多核处理器的调度方法和相关装置制造方法

文档序号:6508778阅读:155来源:国知局
一种多核处理器的调度方法和相关装置制造方法
【专利摘要】本发明实施例公开了一种多核处理器的调度方法和相关装置,用于在调度前精细化分配给各个处理器的任务。本发明实施例方法包括:对系统中处理器和高速缓存之间的拓扑结构生成快照;根据所述快照和用户输入的控制信息生成调度策略;根据所述快照、所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源;使用分配给所述待调度任务的处理器资源执行所述待调度任务。
【专利说明】—种多核处理器的调度方法和相关装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种多核处理器的调度方法和相关装置。【背景技术】
[0002]多核处理器是及未来处理器发展的主要趋势,单个物理处理器中集成的核的数量已由最初的双核发展到四核、八核、甚至更多,随着集成度的不断提高,对于调度器来说,普通多核、处理能力不同的同构多核及多核异构平台给调度器提出了更高的要求,调度器面临的调度场景趋于复杂化。
[0003]Linux 系统启动时 BIOS (Basic Input Output System,基本输入输出系统)会提供处理器相关的静态信息,Linux系统以处理器相关的静态信息为基础,根据HT(Hyper-Threading,超线程),内核(core), SMP (Symmetrical Mult1-Processing,对称多处理机)、NUMA (Non-Uniform Memory Access,非一致性共享内存访问)节点之间的关系将系统结构划分成了 3个级别的调度域(Scheduling Domain),每个调度域为具有相同属性的一组处理器(CPU, Central Processing Unit)的集合,如图1所示,3个级别的调度域分别为SMT (Simultaneous Multithreading、同时多线程)域、SMP域、NMUA域,各个不同级别的调度域之间通过指针链接在一起,从而形成一种多层次的架构。现有的这种架构主要用于周期性的对多个处理器之间进行负载均衡,或在每次执行完毕后对多个处理器之间进行负载均衡,还用于根据用户空间下发的CPU亲和性进行系统调用。
[0004]但是现有的基于多核处理器的调度方法对多个处理器之间进行的负载均衡属于处理器调度完成任务之后的事后调整行为,但是对于调度之前多个处理器间的任务分配不均衡、不精细则无法解决。而且CPU亲和性的相关策略只能从用户空间手动下发,调度器只能根据用户空间指定的CPU亲和性来对任务进行调度,而无法实现调度器的智能化调度。

【发明内容】

[0005]本发明实施例提供了一种多核处理器的调度方法和相关装置,用于解决调度之前多个处理器间的任务分配不均衡、不精细的问题。
[0006]为解决上述技术问题,本发明实施例提供以下技术方案:
[0007]第一方面,本发明实施例提供一种多核处理器的调度方法,包括:
[0008]对系统中处理器和高速缓存之间的拓扑结构生成快照;
[0009]根据所述快照和用户输入的控制信息生成调度策略;
[0010]根据所述快照、所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源;
[0011]使用分配给所述待调度任务的处理器资源执行所述待调度任务。
[0012]结合第一方面,在第一方面的第一种可能的实现方式中,所述对系统中处理器和高速缓存之间的拓扑结构生成快照包括:
[0013]周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或,[0014]根据预置的快照范围,对系统中所述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或,
[0015]根据预置的快照范围,周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。
[0016]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括:
[0017]根据周期性生成的快照判断所述系统的负载是否超过负载门限;
[0018]若所述系统的负载超过负载门限,根据所述周期性生成的快照、所述调度策略和待调度任务的属性重新为所述待调度任务分配处理器资源;
[0019]使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0020]结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括:
[0021]判断所述待调度任务的属性是否发生变化;
[0022]若所述待调度任务的属性发生变化,根据周期性生成的快照、所述调度策略和变化后待调度任务的属性重新为所述待调度任务分配处理器资源;
[0023]使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0024]结合第一方面或第一方面的第一种、第二种、第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述对系统中处理器和高速缓存之间的拓扑结构生成快照之后还包括:
[0025]根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果;
[0026]所述根据所述快照和用户输入的控制信息生成调度策略具体包括:
[0027]根据所述快照、所述统计分析结果和用户输入的控制信息生成调度策略。
[0028]结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括:
[0029]根据所述统计分析结果判断是否出现基于统计分析结果的错误;
[0030]若出现基于统计分析结果的错误,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
[0031]结合第一方面的第四种或第五种可能的实现方式中,在第一方面的第六种可能的实现方式中,所述根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果,包括以下六种实现方式的其中至少一种:
[0032]根据所述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,所述第一统计分析结果包括:空闲状态队列,所述空闲状态队列包括所述各个处理器的空闲状态排序队列;
[0033]根据所述各个处理器的频率属性进行统计分析,生成第二统计分析结果,所述第二统计分析结果包括:频率队列,所述频率队列包括所述各个处理器的频率高低排序队列;
[0034]根据所述各个处理器的负载属性进行统计分析,生成第三统计分析结果,所述第三统计分析结果包括:负载队列,所述负载队列包括所述各个处理器的负载高低排序队列;
[0035]根据所述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,所述第四统计分析结果包括:缓存错误队列,所述缓存错误队列包括所述各个处理器的缓存错误次数排序队列;
[0036]根据所述各个处理器的温度属性进行统计分析,生成第五统计分析结果,所述第五统计分析结果包括:温度队列,所述温度队列包括所述各个处理器的温度高低排序队列;
[0037]根据所述各个处理器的队列属性进行统计分析,生成第六统计分析结果,所述第六统计分析结果包括:任务队列,所述任务队列包括所述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
[0038]结合第一方面的第四种、第五种、第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述统计分析结果以红黑树RBtree或者二叉堆的形式进行排序。
[0039]结合第一方面或第一方面的第一种、第二种、第三种、第四种、第五种、第六种、第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括:
[0040]判断所述系统中的处理器是否出现软件方面或硬件方面的硬障;
[0041]若所述系统中的处理器出现了软件方面或硬件方面的故障,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
[0042]结合第一方面或第一方面的第一种、第二种、第三种、第四种、第五种、第六种、第七种、第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述快照包括至少一个以下的信息:所述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程SMT以及所述SMT的个数。
[0043]结合第一方面或第一方面的第一种、第二种、第三种、第四种、第五种、第六种、第七种、第八种、第九种可能的实现方式,在第一方面的第十种可能的实现方式中,所述快照还包括各个处理器内封装的共享高速缓存的属性信息。
[0044]第二方面、本发明实施例提供一种多核处理器的调度装置,包括:
[0045]快照生成模块,用于对系统中处理器和高速缓存之间的拓扑结构生成快照;
[0046]获取模块,用于根据所述快照和用户输入的控制信息生成调度策略;
[0047]资源分配模块,用于根据所述快照、所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源;
[0048]调度模块,用于使用分配给所述待调度任务的处理器资源执行所述待调度任务。
[0049]结合第二方面,在第二方面的第一种可能的实现方式中,所述快照生成模块,具体用于按照周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围,对系统中所述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围,周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。
[0050]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述装置还包括:判断模块,其中,[0051]所述判断模块,用于若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,则根据周期性生成的快照判断所述系统的负载是否超过负载门限;
[0052]所述资源分配模块,还用于当所述系统的负载超过负载门限时,根据所述周期性生成的快照、所述调度策略和待调度任务的属性重新为所述待调度任务分配处理器资源;
[0053]所述调度模块,还用于使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0054]结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述装置还包括:判断模块,其中,
[0055]所述判断模块,用于若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,则判断所述待调度任务的属性是否发生变化;
[0056]所述资源分配模块,还用于当所述系统的负载超过负载门限时,根据周期性生成的快照、所述调度策略和变化后待调度任务的属性重新为所述待调度任务分配处理器资源;
[0057]所述调度模块,还用于使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0058]结合第二方面或第二方面的第一种、第二种、第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述装置还包括:统计分析模块,其中,
[0059]所述统计分析模块,用于根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果;
[0060]所述获取模块,具体用于根据所述快照、所述统计分析结果和用户输入的控制信息生成调度策略。
[0061]结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述装置还包括:判断模块和调度迁移模块,其中,
[0062]所述判断模块,用于根据所述统计分析结果判断是否出现基于统计分析结果的错误;
[0063]所述调度迁移模块,还用于当出现基于统计分析结果的错误时,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器上。
[0064]结合第二方面的第四种或第五种可能的实现方式中,在第二方面的第六种可能的实现方式中,所述统计分析模块,包括以下六个子模块中的至少一个:
[0065]第一统计分析子模块,用于根据所述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,所述第一统计分析结果包括:空闲状态队列,所述空闲状态队列包括所述各个处理器的空闲状态排序队列;
[0066]第二统计分析子模块,用于根据所述各个处理器的频率属性进行统计分析,生成第二统计分析结果,所述第二统计分析结果包括:频率队列,所述频率队列包括所述各个处理器的频率闻低排序队列;
[0067]第三统计分析子模块,用于根据所述各个处理器的负载属性进行统计分析,生成第三统计分析结果,所述第三统计分析结果包括:负载队列,所述负载队列包括所述各个处理器的负载高低排序队列;
[0068]第四统计分析子模块,用于根据所述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,所述第四统计分析结果包括:缓存错误队列,所述缓存错误队列包括所述各个处理器的缓存错误次数排序队列;
[0069]第五统计分析子模块,用于根据所述各个处理器的温度属性进行统计分析,生成第五统计分析结果,所述第五统计分析结果包括:温度队列,所述温度队列包括所述各个处理器的温度高低排序队列;
[0070]第六统计分析子模块,用于根据所述各个处理器的队列属性进行统计分析,生成第六统计分析结果,所述第六统计分析结果包括:任务队列,所述任务队列包括所述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
[0071]结合第二方面的第四种、第五种、第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述统计分析模块,具体用于以红黑树RBtree或者二叉堆的形式对所述统计分析结果进行排序。
[0072]结合第二方面或第二方面的第一种、第二种、第三种、第四种、第五种、第六种、第七种可能的实现方式,在第二方面的第八种可能的实现方式中,所述装置还包括:判断模块和调度迁移模块,其中,
[0073]所述判断模块,用于判断所述系统中的处理器是否出现软件方面或硬件方面的硬障;
[0074]所述调度迁移模块,用于当所述系统中的处理器出现了软件方面或硬件方面的故障,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
[0075]结合第二方面或第二方面的第一种、第二种、第三种、第四种、第五种、第六种、第七种、第八种可能的实现方式,在第二方面的第九种可能的实现方式中,所述快照生成模块生成的所述快照包括至少一个以下的信息:所述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程SMT以及所述SMT的个数。
[0076]结合第二方面或第二方面的第一种、第二种、第三种、第四种、第五种、第六种、第七种、第八种、第九种可能的实现方式,在第二方面的第十种可能的实现方式中,所述快照生成模块,还用于生成包括各个处理器内封装的共享高速缓存的属性信息的快照。
[0077]从以上技术方案可以看出,本发明实施例具有以下优点:
[0078]在本发明实施例中,首先对系统中处理器和高速缓存之间的拓扑结构生成快照,然后根据上述快照和用户输入的控制信息生成调度策略,根据上述快照、上述调度策略和待调度任务的属性为该待调度任务分配处理器资源,最后根据分配给待调度任务的处理器资源执行该调度任务。由于在为待调度任务分配处理器资源之前针对系统中处理器和高速缓存之间的拓扑结构生成了快照,分配处理器资源时也是基于该快照、调度策略和待调度任务的属性而分配,而快照能够更准确更细致的描述系统的真实状况,结合这样的快照向待调度任务分配处理器资源,能够使各个处理器之间任务分配更均衡,更精细化,并且通过快照能够感知系统的拓扑结构,从而可以自行获知处理器的亲和性,不需要用户的手动下发,提闻调度的智能化。
【专利附图】

【附图说明】
[0079]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
[0080]图1为现有技术中提供的用于负载均衡的Linux调度域的实现方式示意图;
[0081]图2为本发明实施例提供的一种多核处理器的调度方法的流程方框示意图;
[0082]图3为本发明实施例提供的系统中的多核处理器的拓扑结构示意图;
[0083]图4为本发明实施例提供的根据处理器和高速缓存的拓扑结构生成快照以及根据快照进行统计分析的实现方式示意图;
[0084]图5为本发明实施例提供的核处理器的调度装置的一种具体实现过程的示意图;
[0085]图6为本发明实施例提供的应用于无线控制器的调度与控制实现方式示意图;
[0086]图7为本发明实施例提供的以快照和统计分析结果为基础的任务分发机制的实现过程示意图;
[0087]图8_a为本发明实施例提供的一种多核处理器的调度装置的组成结构示意图;
[0088]图8_b为本发明实施例提供的另一种多核处理器的调度装置的组成结构示意图;
[0089]图8-c为本发明实施例提供的另一种多核处理器的调度装置的组成结构示意图;
[0090]图8-d为本发明实施例提供的一种统计分析模块的组成结构示意图;
[0091]图9为本发明实施例提供的另一种多核处理器的调度装置的组成结构示意图。
【具体实施方式】
[0092]本发明实施例提供了一种多核处理器的调度方法和相关装置,用于在调度前精细化分配给各个处理器的任务。
[0093]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0094]本发明多核处理器的调度方法其中一个实施例,可以包括:对系统中处理器和高速缓存之间的拓扑结构生成快照;根据上述快照和用户输入的控制信息生成调度策略;根据上述快照、上述调度策略和待调度任务的属性为上述待调度任务分配处理器资源;使用分配给上述待调度任务的处理器资源执行所述待调度任务。
[0095]请参阅如图2所示,本发明实施例提供的一种多核处理器的调度方法,可以包括:
[0096]201、对系统中处理器和高速缓存之间的拓扑结构生成快照。
[0097]本发明实施例中,对于系统中处理器和高速缓存之间的拓扑结构,首先做快照,通过快照就可以记录下系统中处理器和高速缓存之间的拓扑结构信息,为后续的调度提供参考依据。
[0098]具体的,在本发明的一些实施例中,上述快照可以包括上述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程(SMT, Simultaneous Multithreading)以及上述SMT的个数。
[0099]在本发明的一些实施例中,为了能够使用处理器内的共享高速缓存,则生成的快照还可以包括:各个处理器内封装的共享高速缓存的属性信息。[0100]在本发明实施例中,系统指的是包括有多个内核的处理器的系统(system),系统包括有多个非一致性共享内存访问(NUMA, Non-Uniform Memory Access)节点,每个NUMA包括有多个对称多处理机(SMP, Symmetrical Mult1-Processing),每个SMP包括多个套接口(Socket),每个Socket包括多个处理器,各个处理器可以是同构多核,也可以是异构多核,如图3所示,CPUl为X86处理器,CPUl包括有四个核,分别为C0RE#0、C0RE#1、C0RE#2、C0RE#3,每个CORE内都包括有两个SMT,分别为SMT#0、SMT#1,每个CORE分别对应有两级的高速缓存,分别为:Llcache:(—级高速缓存)、L2cache (二级高速缓存),并且在CPUl内还封装有L3cache,其中L3cache称之为共享高速缓存,另外,CPU2为ARM (Advanced RISCMachines)处理器,CPU2 包括有四个核,分别为 C0RE#0、C0RE#1、C0RE#2、C0RE#3,每个 CORE分别对应有一个高速缓存,为Llcache:(—级高速缓存),并且在CPUl内还封装有L2cache(共享高速缓存)。可知,如图3所示的系统各个处理器包括的内核数,各个内核包括的SMT,各个内核对应的高速缓存等各种情况都不相同,本发明实施例通过对系统中处理器和高速缓存之间的拓扑结构生成快照就可以准确、细致的获取到系统的真实情况,为制定调度策略、分配处理器资源提供真实可靠的依据,使各个处理器之间分配任务更均衡,这和现有技术中总是在事后进行负载均衡实现的“补救性策略”是完全不同的,可以在调度前就实现各个处理器之间任务分配更均衡,更精细化。由于系统的组成结构的复杂性,现有技术中在分配处理器资源时没有考虑到系统复杂的组成结构,故为任务分配处理器资源时不够精细化,而本发明实施例中可以首先针对系统中处理器和高速缓存之间的拓扑结构生成快照,可以根据系统复杂的组成结构分配处理器资源。
[0101 ] 在本发明的一些实施例中,可以周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围对系统中上述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围、周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。也就是说,对系统中处理器和高速缓存之间的拓扑结构生成快照可以三种具体实现方式,第一根据预置的快照范围,第二根据预置的时间间隔,第三根据预置的快照范围和预置的时间间隔。例如,可以设置时间间隔为Ims,每隔Ims就对系统中处理器和高速缓存之间的拓扑结构生成快照,则假如当前时刻对系统中处理器和高速缓存之间的拓扑结构生成了快照后,有一个CPU被隔离或Cache被隔离或CPU出现了硬件故障,则在下一个时刻点生成的快照后,通过前后两次快照的比对,就可以发现前后系统中的拓扑结构发生了变换,故通过快照能够准确细致的反映系统的真实状况。其中,快照范围用于指示针对系统中哪些器件生成快照,例如,预置的快照范围为只采集CPUl中C0RE#2,则可以只针对系统中CPUl内的处理器和高速缓存之间的拓扑结构生成快照,这样能够有更强的针对性,可以根据预先设置的快照范围针对特定的应用程序关心的一个或一系列对调度有影响的指标来生成快照,如应用程序感兴趣的处理器负载大小生成快照,那么在生成调度策略以及分配处理器资源时就可以针对各个处理器负载的大小来选择适当的处理器,以保证各个处理器之间的负载均衡。需要说明的是,生成快照的时间间隔和快照的范围具体可以由用户通过人机交换界面输入,以控制信息的方式存储在用户态库中,以备生成快照时调用。
[0102]在本发明的另一些实施例中,对系统中处理器和高速缓存之间的拓扑结构生成快照之后,还可以根据上述快照对上述各个处理器的属性信息进行统计分析,生成统计分析结果。也就是说采集到系统中处理器和高速缓存之间的拓扑结构之后,还可以对快照的内容对各个处理器的属性信息进行统计分析,生成统计分析结果,这个统计分析结果同样可以作为生成调度策略的依据之一,如此,生成的调度策略就能够更精准。
[0103]需要说明的是,上述统计分析结果具体可以以红黑树(RB tree, Red Black tree)或者二叉堆(binary heap)的形式进行排序。接下来对生成统计分析结果的实现方式进行详细举例说明,具体可以为以下举例的其中一种,也可以是其中两种以上的组合,此处不做限定。
[0104]其中,处理器的属性信息具体可以为处理器的空闲状态(Idle state)属性,根据上述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,上述第一统计分析结果包括:空闲状态队列,上述空闲状态队列包括上述各个处理器的空闲状态排序队列;
[0105]其中,处理器的属性信息具体可以为处理器的频率(Frequency)属性,根据上述各个处理器的频率属性进行统计分析,生成第二统计分析结果,上述第二统计分析结果包括:频率队列,上述频率队列包括上述各个处理器的频率高低排序队列;
[0106]其中,处理器的属性信息具体可以为处理器的负载(load)属性,根据上述各个处理器的负载属性进行统计分析,生成第三统计分析结果,上述第三统计分析结果包括:负载队列,上述负载队列包括上述各个处理器的负载高低排序队列;
[0107]其中,处理器的属性信息具体可以为处理器的缓存错误(Cache error)属性,根据上述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,上述第四统计分析结果包括:缓存错误队列,上述缓存错误队列包括上述各个处理器的缓存错误次数排序队列;
[0108]其中,处理器的属性信息具体可以为处理器的温度(temperature)属性,根据上述各个处理器的温度属性进行统计分析,生成第五统计分析结果,上述第五统计分析结果包括:温度队列,上述温度队列包括上述各个处理器的温度高低排序队列;
[0109]其中,处理器的属性信息具体可以为处理器的队列(Queue)属性,根据上述各个处理器的队列属性进行统计分析,生成第六统计分析结果,上述第六统计分析结果包括:任务队列,上述任务队列包括上述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
[0110]为了详细说明本发明实施例中描述的快照以及统计分析结果,接下来进行举例说明:以对NUMA节点的一个SMP内CPU和Cache之间的拓扑结构生成快照为例,如图4所示,则该快照的内容包括:SMP包括socket I和socket2,socketl包括CPU1,socket2包括CPU2,CPUl和CPU2同属于一个SMP,CPU1包括两个内核,分别为coreO和corel,CPU2包括两个内核,分别为core2和Core3,每个core对应高速缓存LI和L2,一级高速缓存LI分为用于存储数据的LlD和用于存储指令的L1I,每个core还对应有一个共享高速缓存L3,每个core包括有两个SMT,分别为SMTO和SMTl。
[0111]在图4中,以SMP包括两个CPU为例进行了图示说明,但是需要以SMP的真实情况进行展示,此处只是示例。在生成快照之后,还可以根据快照对各个处理器的属性信息进行统计分析,生成统计分析结果,如图4所示,以SMP包括了七个CPU (分别为CPU0、CPUUCPU2、CPU3、CPU4、CPU5、CPU6 )为例进行说明,分别生成空闲状态队列、频率队列、负载队列、缓存错误队列、温度队列、任务队列,需要说明的是,每个队列中从左到右依次表示CPU特定属性的高低,例如对于温度队列,温度最高的是CPU5,其次是CPU6,温度最低的是CPU3,其它队列的排序关系和此类似,不再赘述。并且统计分析结果可以RB tree或二叉堆进行排序,如图4右上方所示的,以负载队列为例示出了排序方式,便于查找到各个CPU的负载闻低。
[0112]202、根据上述快照和用户输入的控制信息生成调度策略。
[0113]在本发明实施例中,生成快照以后,可以根据上述快照和用户输入的控制信息生成调度策略,通过快照能够更准确更细致的描述系统的真实状况,结合这样的快照以及用户输入的控制信息生成调度策略,能够更符合系统的真实状况,从而实现智能化调度。其中,用户输入的控制信息可以包括多种,例如,用户可以设置一个白名单,将特定的任务ID(Identity,身份识别码)以控制信息的方式写入白名单中,还可以以控制信息的方式将指定的CPU也写入白名单中,则只有白名单中出现的特定任务才能够被分配这些指定的CPU资源,又如,用户输入的控制信息可以为特定的任务和特定的处理器资源绑定,对于满足这种绑定关系的任务只能被分配这些绑定的处理器资源,另外,用户输入的控制信息还可以是特定的安全策略等等,在生成调度策略时需要依据用户输入的控制信息以及前述生成的快照。本发明实施例中需要根据用户输入的具体控制信息以及生成的快照的具体内容来灵活生成调度策略,调度策略也可以生成有多种,例如,调度策略可以运用在基于特定安全策略和资源占有机制的调度隔离机制中,特别是对用户态调度有着更好的支持。又如,容错性调度策略还可以应用于调度迁移机制中,在为调度器提供调度优化所需处理器资源的同时,动态监视、隔离故障实体并完成调度迁移,避免了关键任务失效,同时兼顾了效率与可靠性。
[0114]在本发明的一些实施例中,若根据上述快照对各个处理器的属性信息进行统计分析,生成了统计分析结果,则在生成调度策略时同样也可以将统计分析结果作为生成调度策略的依据之一,也就是说,可以根据上述快照、上述统计分析结果和用户输入的控制信息生成调度策略。例如,若统计分析结果具体指的是稳定队列时,可以生成的调度策略为:每次优先选择温度低的CPU执行待调度任务。
[0115]在本发明的另一些实施例中,调度策略还可以为当出现基于统计分析结果的错误时或系统的硬件出现故障时将待调度任务迁移到哪些处理器上,以避免任务调度失败。其中,基于统计分析结果的错误指的是通过生成的统计分析结果可以获取到的错误,例如,当处理器的缓存错误超过预置的阈值时就判定出现了基于统计分析结果的错误,又如,当处理器的温度超过预置的温度值时就判定出现了基于统计分析结果的错误。
[0116]需要说明的是,有些系统没有设置共享高速缓存,而有的系统设置有共享高速缓存,若系统中的处理器内封装有共享高速缓存,如图3中的L2、L3,则前述步骤201中生成的快照还可以包括共享高速缓存的属性信息,那么在生成调度策略时就可以使用这个共享高速缓存,生成的调度策略就可以是将共享高速缓存分配给待调度任务使用。
[0117]203、根据上述快照、上述调度策略和待调度任务的属性为上述待调度任务分配处理器资源。
[0118]在本发明实施例中,生成快照和调度策略后,还需要考虑待调度任务的属性,针对这些信息可以为待调度的任务分配处理器资源了,例如,根据待调度任务的属性满足调度策略中设置的白名单,则结合快照,就可以找到能够正常工作的处理器,优先将调度策略中指定的处理器资源分配给该调度任务,若通过快照发现调度策略中指定的处理器资源已经被隔离或者出现了故障,则为了避免该调度任务的失败,还根据快照选择能够正常工作的处理器,将该能够正常工作的处理器分配给待调度任务,以避免关键任务的调度失败。
[0119]在本发明的一些实施例中,为待调度任务分配处理器资源时除了将生成的快照、调度策略和待调度任务的属性作为分配依据外,可以结合系统的负载作为分配依据,尽量保证系统不会超负荷。
[0120]204、使用分配给上述待调度任务的处理器资源执行所述待调度任务。
[0121]其中,为待调度任务分配过处理器资源之后,就可以使用分配给上述待调度任务的处理器资源执行该待调度任务。
[0122]在本发明的一些实施例中,使用分配给上述待调度任务的处理器资源执行上述待调度任务的同时,本发明实施例还可以包括如下方法:若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,还可以根据周期性生成的快照判断上述系统的负载是否超过负载门限;若系统的负载超过负载门限,根据上述周期性生成的快照、上述调度策略和待调度任务的属性重新为上述待调度任务分配处理器资源;使用重新分配给上述待调度任务的处理器资源继续执行所述待调度任务。即可以在待调度任务在执行的过程中,基于时间间隔例如Ims不断地生成系统的快照,通过对及时生成的最新快照,实时监测系统的负载是否过重,若系统的负载是否过重,还可以重新为该待调度任务分配处理器资源,则可以使用重新分配的处理器资源继续执行待调度任务。
[0123]在本发明的另一些实施例中,使用分配给上述待调度任务的处理器资源执行上述待调度任务的同时,本发明实施例还可以包括如下方法:若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,还可以判断上述待调度任务的属性是否发生变化;若待调度任务的属性发生变化,根据上述周期性生成的快照、上述调度策略和变化后待调度任务的属性重新为上述待调度任务分配处理器资源;使用重新分配给上述待调度任务的处理器资源继续执行上述待调度任务。即可以在待调度任务在执行的过程中,基于时间间隔例如Ims不断地生成系统的快照,当待调度任务的属性发生变化后,通过对及时生成的最新快照、调度策略和变化后待调度任务的属性重新为该待调度任务分配处理器资源,则可以使用重新分配的处理器资源继续执行待调度任务。
[0124]在本发明的另一些实施例中,使用分配给上述待调度任务的处理器资源执行上述待调度任务的同时,本发明实施例还可以包括如下方法:还可以根据上述统计分析结果判断是否出现基于统计分析结果的错误;若出现基于统计分析结果的错误,根据上述调度策略将上待调度任务迁移到所述调度策略指定的处理器上。即可以在待调度任务在执行的过程中,基于时间间隔例如Ims不断地生成系统的快照,通过对及时生成的最新快照,根据统计分析结果判断是否出现了基于统计分析结果的错误,若出现基于统计分析结果的错误,还可以根据调度策略将待调度任务迁移到调度策略指定的处理器上,以避免待调度任务的失败。
[0125]在本发明的另一些实施例中,使用分配给上述待调度任务的处理器资源执行上述待调度任务的同时,本发明实施例还可以包括如下方法:还可以判断系统中的处理器是否出现软件方面或硬件方面的故障;若系统中的处理器出现了软件方面或硬件方面的故障,根据上述调度策略将上待调度任务迁移到所述调度策略指定的处理器上。即可以在待调度任务在执行的过程中,基于时间间隔例如Ims不断地生成系统的快照,通过对及时生成的最新快照,根据统计分析结果判断系统中处理器的硬件方面是否出现了故障,若系统中处理器的硬件方面出现故障,还可以根据调度策略将待调度任务迁移到调度策略指定的处理器上,以避免待调度任务的失败,若系统中处理器的软件方面出现故障,还可以根据调度策略将待调度任务迁移到调度策略指定的处理器上,以避免待调度任务的失败。
[0126]由上述实施例可知,首先对系统中处理器和高速缓存之间的拓扑结构生成快照,然后根据上述快照和用户输入的控制信息生成调度策略,根据上述快照、上述调度策略和待调度任务的属性为该待调度任务分配处理器资源,最后根据分配给待调度任务的处理器资源执行该调度任务。由于在为待调度任务分配处理器资源之前针对系统中处理器和高速缓存之间的拓扑结构生成了快照,分配处理器资源时也是基于该快照、调度策略和待调度任务的属性而分配,而快照能够更准确更细致的描述系统的真实状况,结合这样的快照向待调度任务分配处理器资源,能够使各个处理器之间任务分配更均衡,更精细化,并且通过快照能够感知系统的拓扑结构,从而可以自行获知处理器的亲和性,不需要用户的手动下发,提高调度的智能化。
[0127]为便于更好的理解和实施本发明实施例的上述方案,下面举例几个应用场景来进行说明。如图5所示为实际应用中的多核处理器的调度装置的一种具体实现方式,可以包括:快照生成及分析模块、用户管理模块、处理器资源分配与控制模块、调度控制与迁移模块、用户态调度器、任务分发模块、内核态调度器。其中,
[0128]快照生成及分析模块对系统中处理器和高速缓存之间的拓扑结构生成快照,并对处理器的属性信息做出基于历史统计的分析,生成统计分析结果。其中对系统生成快照可以基于可控的时间粒度和/或深度粒度反映处理器和高速缓存之间的拓扑结构,可以支持多个处理器的不同能力集,可以实现拓扑感知。根据应用场景和用户需求的不同,可以灵活的配置快照生成及分析模块,例如,图5中表示的是将快照生成及分析模块设置在用户空间(Uesr space)中,同样也可以将快照生成及分析模块设置在操作系统的内核(Kernel)中,其中,图5中对于设置在操作系统的内核中的快照生成及分析模块以虚线来表示,特此说明。另外,设置在用户空间中可以实现完全在用户态实现相关功能,设置在操作系统的内核中还可以实现内核态调度器实现内容调度。
[0129]快照生成及分析模块主要包括如下两方面的功能:
[0130]I)、生成快照对象:反映处理器和高速缓存之间的拓扑结构以及实时数据采集,包括以树状结构组织的处理器及cache的拓扑结构以及相关属性(数据),对于同构和异构平台都能够准确的生成快照对象。仍以图4为例,每一个快照生成点都会生成一个树状结构,体现出CPU/CACHE之间的亲缘关系,叶子节点代表每一个系统可用的处理器和相关属性数据,以及指向处理器运行队列的指针。
[0131]2)、对快照的统计分析比对,仍以图4为例,每一次快照生成后都会做基于当前和以往快照的对比分析,生成基于不同策略及属性的统计分析结果,统计结果可以以不同的数据结构(RB tree or binary heap)进行排序或处理,并存储在相应的属性队列,便于快速索引,不同的属性可以叠加以组形成组合策略。
[0132]用户管理模块,用于通过人机交换界面获取到用户输入的控制信息,用于指示快照生成及分析模块生成快照的时间粒度、特定程序感兴趣的处理器属性信息和快照的范围粒度。并且通过控制与状态、统计与查询接口实现控制信息、调度策略下发,任务分发控制与统计、状态监听。
[0133]处理器资源分配与控制模块,用于根据快照和用户输入的控制信息生成调度策略;根据快照、调度策略和待调度任务的属性为待调度任务分配处理器资源。
[0134]调度控制与迁移模块,用于自动检测的调度状态,针对基于统计分析结果的错误或硬件错误对待调度任务进行迁移。可以基于正常调度策略的主动调度迁移机制(资源动态调配),也可以基于容灾性调度策略的调度迁移机制,避免关键任务长时间失效。如图5中,MCA (Machine Check Architecture,机器自动检查架构)检测到出现了内核错误事件或者处理器的温度超过阈值的错误事件。调度控制与迁移模块可以结合快照与统计分析,可提供基于特定安全策略和资源占有机制的调度隔离机制,特别是对用户态调度有着更好的支持。调度管理及控制模块提供基于快照和统计分析的调度迁移机制,特别是对于容错性调度策略的支持,在为调度器提供调度优化所需资源的同时,动态监视、隔离故障实体并完成调度迁移,避免了关键任务失效,同时兼顾了效率与可靠性。
[0135]用户态调度器,用于使用分配给待调度任务的处理器资源执行待调度任务,如图5中将两个CPU分配给待调度任务,则直接可以使用者两个CPU来执行待调度任务。用户态调度器可以实现均衡的或基于统计分析的作业调度,选择待调度任务并分发至合适的处理器调度队列,不需要用户下发处理器及cache亲和性策略,就可以具备亲和性的自我感知和动态设置的能力,这样对于系统性能的提升会有帮助。
[0136]任务分发模块,用于根据系统的快照和统计分析结果将待调度任务分配到调度队列中。
[0137]内核态调度器,用于使用CPU资源执行各个调度队列中的待调度任务。例如,内核态调度器基于CFS (Completely Fair Scheduler,完全公平调度算法)感兴趣的统计分析结果(例如单一内核或局部温度过高时启动卸载(off loading)或自动下线程序),还可以结合系统的快照,实现一定程度智能化的调度。
[0138]请参阅如图6所示,以本发明实施例中提供的多核处理器的调度方法应用在诸如无线控制器之类的实时系统中为例,通过绑定处理器来实现用户态调度,从而达到不修改内核而匹配特殊的调度策略以及减少系统调用的开销的目的。
[0139]请结合图6所示,在此应用场景下的实施流程包括以下几个步骤:
[0140]S01、循环处理用户输入的控制信息。其中,通过用户管理模块设置用户态调度的控制信息可以包括:需要的CPU个数,进程/线程个数,Cache资源的使用策略,能力集划分等一些可以支持的属性。
[0141]S02、判断针对系统是否生成有快照?若是,执行步骤S03,若没有执行步骤S04。
[0142]S03、获取快照和统计分析结果,然后触发步骤S05执行。
[0143]S04、对系统中处理器和高速缓存之间的拓扑结构生成快照,若成功生成,执行步骤S03,若生成快照失败,重新回到步骤S01。
[0144]S05、根据快照和用户输入的控制信息生成调度策略,根据快照、调度策略和待调度任务的属性为待调度任务分配处理器资源。
[0145]S06、将待调度任务和分配的处理器资源绑定。[0146]S07、使用分配给待调度任务的处理器资源开始执行待调度任务,然后分别触发步骤S08、S15执行。
[0147]S08、实时提供快照内容监测系统的负载和待调度任务,判断系统的负载是否超过负载门限,以及判断待调度任务的属性是否发生变化,分别执行步骤S09和S13。
[0148]S09、判断系统的负载是否过重,若是,触发步骤SlO和步骤Sll执行。
[0149]S10、检查快照内容,动态扩展处理器资源。
[0150]S11、根据快照内容确定是否释放某些资源,若决定释放某些资源,执行步骤S12。例如根据任务所占用的资源比如处理器的数目、是否独占资源等可以进行动态调整。
[0151]S12、动态减少处理器资源。
[0152]S13、判断待调度任务的属性是否需要调整或者待调度任务的属性是否发生变化,若是,触发步骤Sll和步骤S14执行。
[0153]S14、判断是否动态调整处理器资源,若是,回到步骤S09。
[0154]S15、实时提供快照内容监测基于统计分析结果的错误和硬件故障,触发步骤S16执行。
[0155]S16、判断是否发现错误,若是,分别触发步骤S17和步骤S18执行。例如通过实时监测,发现错误时根据快照内容进行处理器资源的动态调整。
[0156]S17、判断cache错误是否达到阈值,若是执行步骤S19。
[0157]S18、判断CPU是否出现故障,若是执行步骤S19。
[0158]S19、借助实时提供的快照内容进行任务迁移和重新调度。
[0159]通过统计分析的某类错误(如cache error)达到阈值或发生硬件故障时进行容错调度,隔离故障资源并根据快照将调度迁移到事先指定的处理器上,避免关键应用失效。
[0160]请参阅如图7所示,为本发明的多核处理器的调度方法在任务分发机制中的应用场景,以快照生成及分析模块设置在操作系统的内核中为例,该实现方法的流程可以包括以下几个步骤:
[0161 ] I )、基于预配置文件或用户管理模块,通过控制与状态查询接口下发内核态调度的任务分发策略和能力集合划分以及快照间隔等参数;
[0162]2)、快照生成及分析模块(设置在内核中)根据能力集合或任务要求的不同划分不同的任务分发域,每个域包含至少一个处理器调度队列;
[0163]3)、根据快照、统计分析结果及根据用户输入的控制信息生成最终的调度策略并设置内核中的任务分发模块。
[0164]4)、任务分发模块实时调整待调度任务至不同的处理器调度队列,避免频繁的调度后再进行负载均衡;
[0165]5)、内核态调度器通过与快照生成及分析模块的接口,在具体进程/线程调度时可以做到拓扑感知,并且会基于调度器所关注的属性(例如处理器负载、即时频率、idle状态、高速缓存共享(cache sharing)、高速缓存一致性(cache coherency)、处理器温度等)生成调度策略,以此作为调度的参考,从而使得内核态的调度更加智能化,CPU的亲和性不必通过用户态手动下发,在内核态调度器中就可以实现智能化调度。
[0166]由上可见,首先对系统中处理器和高速缓存之间的拓扑结构生成快照,该快照可包括系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括SMT以及SMT的个数,然后根据上述快照和用户输入的控制信息生成调度策略,根据上述快照、上述调度策略和待调度任务的属性为该待调度任务分配处理器资源,最后根据分配给待调度任务的处理器资源执行该调度任务。由于在为待调度任务分配处理器资源之前针对系统中处理器和高速缓存之间的拓扑结构生成了快照,分配处理器资源时也是基于该快照、调度策略和待调度任务的属性而分配,而快照能够更准确更细致的描述系统的真实状况,结合这样的快照向待调度任务分配处理器资源,能够使各个处理器之间任务分配更均衡,更精细化,并且通过快照能够感知系统的拓扑结构,从而可以自行获知处理器的亲和性,不需要用户的手动下发,提高调度的智能化。
[0167]为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相
关装置。
[0168]请参阅如图8-a所示,本发明实施例提供的多核处理器的调度装置800,包括:快照生成模块801、获取模块802、资源分配模块803、调度模块804,其中,
[0169]快照生成模块801,用于对系统中处理器和高速缓存之间的拓扑结构生成快照;
[0170]获取模块802,用于根据快照生成模块801获取到的所述快照和用户输入的控制信息生成调度策略;
[0171]资源分配模块803,用于根据快照生成模块801获取到的所述快照、获取模块802生成的所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源;
[0172]调度模块804,用于使用资源分配模块803分配给所述待调度任务的处理器资源执行所述待调度任务。
[0173]在本发明的一些实施例中,快照生成模块801,具体用于按照周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围,对系统中所述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围,周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。
[0174]请参阅如图8_b所示,在本发明的一些实施例中,多核处理器的调度装置800,还可以包括:判断模块805,其中,
[0175]所述判断模块805,用于若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,则根据周期性生成的快照判断所述系统的负载是否超过负载门限;
[0176]所述资源分配模块803,还用于当所述系统的负载超过负载门限时,根据所述周期性生成的快照、所述调度策略和待调度任务的属性重新为所述待调度任务分配处理器资源;
[0177]所述调度模块804,还用于使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0178]在本发明的一些实施例中,判断模块805,还用于若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,则判断所述待调度任务的属性是否发生变化;
[0179]所述资源分配模块803,还用于当所述系统的负载超过负载门限时,根据周期性生成的快照、所述调度策略和变化后待调度任务的属性重新为所述待调度任务分配处理器资源;
[0180]所述调度模块804,还用于使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0181]请参阅如图8-c所示,在本发明的一些实施例中,多核处理器的调度装置800,还可以包括:统计分析模块806,其中,
[0182]所述统计分析模块806,用于根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果;
[0183]所述获取模块802,具体用于根据所述快照、所述统计分析结果和用户输入的控制信息生成调度策略。
[0184]请参阅如图8-c所示,在本发明的一些实施例中,多核处理器的调度装置800,除了包括统计分析模块806,还可以包括:判断模块805和调度迁移模块807,其中,
[0185]所述判断模块805,用于根据所述统计分析结果判断是否出现基于统计分析结果的错误;
[0186]所述调度迁移模块807,用于当出现基于统计分析结果的错误时,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器上。
[0187]在本发明的另一些实施例中,请参阅如图8-d所示,统计分析模块806,具体可以包括以下六个子模块中的至少一个:
[0188]第一统计分析子模块8061,用于根据所述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,所述第一统计分析结果包括:空闲状态队列,所述空闲状态队列包括所述各个处理器的空闲状态排序队列;
[0189]第二统计分析子模块8062,用于根据所述各个处理器的频率属性进行统计分析,生成第二统计分析结果,所述第二统计分析结果包括:频率队列,所述频率队列包括所述各个处理器的频率高低排序队列;
[0190]第三统计分析子模块8063,用于根据所述各个处理器的负载属性进行统计分析,生成第三统计分析结果,所述第三统计分析结果包括:负载队列,所述负载队列包括所述各个处理器的负载高低排序队列;
[0191]第四统计分析子模块8064,用于根据所述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,所述第四统计分析结果包括:缓存错误队列,所述缓存错误队列包括所述各个处理器的缓存错误次数排序队列;
[0192]第五统计分析子模块8065,用于根据所述各个处理器的温度属性进行统计分析,生成第五统计分析结果,所述第五统计分析结果包括:温度队列,所述温度队列包括所述各个处理器的温度高低排序队列;
[0193]第六统计分析子模块8066,用于根据所述各个处理器的队列属性进行统计分析,生成第六统计分析结果,所述第六统计分析结果包括:任务队列,所述任务队列包括所述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
[0194]其中图8-d中示出了统计分析模块806包括的所有子模块,可以理解的是,在实际应用中并不需要执行这些所有的子模块,而是根据具体的应用场景来灵活决定选择哪些子模块。
[0195]在本发明的另一些实施例中,统计分析模块806,具体用于以红黑树RB tree或者二叉堆的形式对所述统计分析结果进行排序。
[0196]在本发明的另一些实施例中,多核处理器的调度装置800包括的判断模块805和调度迁移模块807,还用于如下方式:
[0197]所述判断模块805,用于判断所述系统中的处理器是否出现软件方面或硬件方面的硬障;
[0198]所述调度迁移模块807,用于当所述系统中的处理器出现了软件方面或硬件方面的故障,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
[0199]在本发明的另一些实施例中,所述快照生成模块801生成的所述快照包括至少一个以下的信息:所述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程SMT以及所述SMT的个数。
[0200]在本发明的另一些实施例中,所述快照生成模块801,还用于生成包括各个处理器内封装的共享高速缓存的属性信息的快照。
[0201]由上可见,首先对系统中处理器和高速缓存之间的拓扑结构生成快照,然后根据上述快照和用户输入的控制信息生成调度策略,根据上述快照、上述调度策略和待调度任务的属性为该待调度任务分配处理器资源,最后根据分配给待调度任务的处理器资源执行该调度任务。由于在为待调度任务分配处理器资源之前针对系统中处理器和高速缓存之间的拓扑结构生成了快照,分配处理器资源时也是基于该快照、调度策略和待调度任务的属性而分配,而快照能够更准确更细致的描述系统的真实状况,结合这样的快照向待调度任务分配处理器资源,能够使各个处理器之间任务分配更均衡,更精细化,并且通过快照能够感知系统的拓扑结构,从而可以自行获知处理器的亲和性,不需要用户的手动下发,提高调度的智能化。
[0202]本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部布置。
[0203]接下来介绍本发明实施例提供的另一种多核处理器的调度装置,请参阅图9所示,多核处理器的调度装置900包括:
[0204]输入装置901、输出装置902、处理器903和存储器904 (其中调度装置900中的处理器903的数量可以一个或多个,图9中以一个处理器为例)。在本发明的一些实施例中,输入装置901、输出装置902、处理器903和存储器904可通过总线或其它方式连接,其中,图9中以通过总线连接为例。
[0205]其中,处理器903,用于执行如下步骤:对系统中处理器和高速缓存之间的拓扑结构生成快照;根据所述快照和用户输入的控制信息生成调度策略;根据所述快照、所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源;使用分配给所述待调度任务的处理器资源执行所述待调度任务。
[0206]在本发明的一些实施例中,处理器903具体用于执行以下步骤:周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或,
[0207]根据预置的快照范围,对系统中所述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或,
[0208]根据预置的快照范围,周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。
[0209]在本发明的一些实施例中,处理器903还用于执行以下步骤:根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果。
[0210]在本发明的另一些实施例中,处理器903还用于执行以下步骤:若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,根据周期性生成的快照判断所述系统的负载是否超过负载门限;若所述系统的负载超过负载门限,根据所述周期性生成的快照、所述调度策略和待调度任务的属性重新为所述待调度任务分配处理器资源;使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0211]在本发明的一些实施例中,处理器903还用于执行以下步骤:若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,判断所述待调度任务的属性是否发生变化;若所述待调度任务的属性发生变化,根据周期性生成的快照、所述调度策略和变化后待调度任务的属性重新为所述待调度任务分配处理器资源;使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
[0212]在本发明的一些实施例中,处理器903还用于执行以下步骤:根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果;根据所述快照、所述统计分析结果和用户输入的控制信息生成调度策略。
[0213]在本发明的一些实施例中,处理器903还用于执行以下步骤:根据所述统计分析结果判断是否出现基于统计分析结果的错误;若出现基于统计分析结果的错误,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
[0214]在本发明的一些实施例中,处理器903具体用于执行以下步骤:根据所述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,所述第一统计分析结果包括:空闲状态队列,所述空闲状态队列包括所述各个处理器的空闲状态排序队列;
[0215]根据所述各个处理器的频率属性进行统计分析,生成第二统计分析结果,所述第二统计分析结果包括:频率队列,所述频率队列包括所述各个处理器的频率高低排序队列;
[0216]根据所述各个处理器的负载属性进行统计分析,生成第三统计分析结果,所述第三统计分析结果包括:负载队列,所述负载队列包括所述各个处理器的负载高低排序队列;
[0217]根据所述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,所述第四统计分析结果包括:缓存错误队列,所述缓存错误队列包括所述各个处理器的缓存错误次数排序队列;
[0218]根据所述各个处理器的温度属性进行统计分析,生成第五统计分析结果,所述第五统计分析结果包括:温度队列,所述温度队列包括所述各个处理器的温度高低排序队列;
[0219]根据所述各个处理器的队列属性进行统计分析,生成第六统计分析结果,所述第六统计分析结果包括:任务队列,所述任务队列包括所述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
[0220]在本发明的一些实施例中,处理器903具体用于执行以下步骤:所述统计分析结果以红黑树RB tree或者二叉堆的形式进行排序。
[0221]在本发明的一些实施例中,处理器903还用于执行以下步骤:判断所述系统中的处理器是否出现软件方面或硬件方面的硬障;[0222]若所述系统中的处理器出现了软件方面或硬件方面的故障,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
[0223]在本发明的一些实施例中,处理器903具体用于执行以下步骤:对至少一个以下的信息生成快照:所述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程SMT以及所述SMT的个数。
[0224]在本发明的一些实施例中,处理器903还用于执行以下步骤:对各个处理器内封装的共享高速缓存的属性信息生成快照。
[0225]综上,首先对系统中处理器和高速缓存之间的拓扑结构生成快照,然后根据上述快照和用户输入的控制信息生成调度策略,根据上述快照、上述调度策略和待调度任务的属性为该待调度任务分配处理器资源,最后根据分配给待调度任务的处理器资源执行该调度任务。由于在为待调度任务分配处理器资源之前针对系统中处理器和高速缓存之间的拓扑结构生成了快照,分配处理器资源时也是基于该快照、调度策略和待调度任务的属性而分配,而快照能够更准确更细致的描述系统的真实状况,结合这样的快照向待调度任务分配处理器资源,能够使各个处理器之间任务分配更均衡,更精细化,并且通过快照能够感知系统的拓扑结构,从而可以自行获知处理器的亲和性,不需要用户的手动下发,提高调度的智能化。
[0226]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0227]以上对本发明所提供的一种多核处理器的调度方法和相关装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种多核处理器的调度方法,其特征在于,包括: 对系统中处理器和高速缓存之间的拓扑结构生成快照; 根据所述快照和用户输入的控制信息生成调度策略; 根据所述快照、所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源; 使用分配给所述待调度任务的处理器资源执行所述待调度任务。
2.根据权利要求1所述的方法,其特征在于,所述对系统中处理器和高速缓存之间的拓扑结构生成快照包括: 周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或, 根据预置的快照范围,对系统中所述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或, 根据预置的快照范围,周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。
3.根据权利要求2所述的方法,其特征在于,若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括: 根据周期性生成的快照.判断所述系统的负载是否超过负载门限; 若所述系统的负载超过负载门限,根据所述周期性生成的快照、所述调度策略和待调度任务的属性重新为所述待调度任务分配处理器资源; 使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
4.根据权利要求2所述的方法,其特征在于,若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括: 判断所述待调度任务的属性是否发生变化; 若所述待调度任务的属性发生变化,根据周期性生成的快照、所述调度策略和变化后待调度任务的属性重新为所述待调度任务分配处理器资源; 使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述对系统中处理器和高速缓存之间的拓扑结构生成快照之后还包括: 根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果; 所述根据所述快照和用户输入的控制信息生成调度策略具体包括: 根据所述快照、所述统计分析结果和用户输入的控制信息生成调度策略。
6.根据权利要求5所述的方法,其特征在于,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括: 根据所述统计分析结果判断是否出现基于统计分析结果的错误; 若出现基于统计分析结果的错误,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
7.根据权利要求5或6所述的方法,其特征在于,所述根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果,包括以下六种实现方式的其中至少一种:根据所述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,所述第一统计分析结果包括:空闲状态队列,所述空闲状态队列包括所述各个处理器的空闲状态排序队列; 根据所述各个处理器的频率属性进行统计分析,生成第二统计分析结果,所述第二统计分析结果包括:频率队列,所述频率队列包括所述各个处理器的频率高低排序队列;根据所述各个处理器的负载属性进行统计分析,生成第三统计分析结果,所述第三统计分析结果包括:负载队列,所述负载队列包括所述各个处理器的负载高低排序队列; 根据所述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,所述第四统计分析结果包括:缓存错误队列,所述缓存错误队列包括所述各个处理器的缓存错误次数排序队列; 根据所述各个处理器的温度属性进行统计分析,生成第五统计分析结果,所述第五统计分析结果包括:温度队列,所述温度队列包括所述各个处理器的温度高低排序队列; 根据所述各个 处理器的队列属性进行统计分析,生成第六统计分析结果,所述第六统计分析结果包括:任务队列,所述任务队列包括所述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述统计分析结果以红黑树RB tree或者二叉堆的形式进行排序。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述使用分配给所述待调度任务的处理器资源执行所述待调度任务的同时还包括: 判断所述系统中的处理器是否出现软件方面或硬件方面的硬障; 若所述系统中的处理器出现了软件方面或硬件方面的故障,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述快照包括至少一个以下的信息:所述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程SMT以及所述SMT的个数。
11.根据权利要求1至10中任一项所述的方法,其特征在于,所述的方法,其特征在于,所述快照还包括各个处理器内封装的共享高速缓存的属性信息。
12.—种多核处理器的调度装置,其特征在于,包括: 快照生成模块,用于对系统中处理器和高速缓存之间的拓扑结构生成快照; 获取模块,用于根据所述快照和用户输入的控制信息生成调度策略; 资源分配模块,用于根据所述快照、所述调度策略和待调度任务的属性为所述待调度任务分配处理器资源; 调度模块,用于使用分配给所述待调度任务的处理器资源执行所述待调度任务。
13.根据权利要求12所述的装置,其特征在于,所述快照生成模块,具体用于按照周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围,对系统中所述快照范围内的处理器和高速缓存之间的拓扑结构生成快照;或,根据预置的快照范围,周期性的对系统中处理器和高速缓存之间的拓扑结构生成快照。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:判断模块,其中,所述判断模块,用于若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,则根据周期性生成的快照判断所述系统的负载是否超过负载门限; 所述资源分配模块,还用于当所述系统的负载超过负载门限时,根据所述周期性生成的快照、所述调度策略和待调度任务的属性重新为所述待调度任务分配处理器资源; 所述调度模块,还用于使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
15.根据权利要求13所述的装置,其特征在于,所述装置还包括:判断模块,其中, 所述判断模块,用于若周期性的对系统中处理器和高速缓存之间的拓扑结构生成有快照,则判断所述待调度任务的属性是否发生变化; 所述资源分配模块,还用于当所述系统的负载超过负载门限时,根据周期性生成的快照、所述调度策略和变化后待调度任务的属性重新为所述待调度任务分配处理器资源;所述调度模块,还用于使用重新分配给所述待调度任务的处理器资源继续执行所述待调度任务。
16.根据权利要求12至15中任一项所述的装置,其特征在于,所述装置还包括:统计分析模块,其中, 所述统计分析模块,用于根据所述快照对所述各个处理器的属性信息进行统计分析,生成统计分析结果; 所述获取模块,具体用于根据所述快照、所述统计分析结果和用户输入的控制信息生成调度策略。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:判断模块和调度迁移模块,其中, 所述判断模块,用于根据所述统计分析结果判断是否出现基于统计分析结果的错误;所述调度迁移模块,用于当出现基于统计分析结果的错误时,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器上。
18.根据权利要求16或17所述的装置,其特征在于,所述统计分析模块,包括以下六个子模块中的至少一个: 第一统计分析子模块,用于根据所述各个处理器的空闲状态属性进行统计分析,生成第一统计分析结果,所述第一统计分析结果包括:空闲状态队列,所述空闲状态队列包括所述各个处理器的空闲状态排序队列; 第二统计分析子模块,用于根据所述各个处理器的频率属性进行统计分析,生成第二统计分析结果,所述第二统计分析结果包括:频率队列,所述频率队列包括所述各个处理器的频率闻低排序队列; 第三统计分析子模块,用于根据所述各个处理器的负载属性进行统计分析,生成第三统计分析结果,所述第三统计分析结果包括:负载队列,所述负载队列包括所述各个处理器的负载闻低排序队列; 第四统计分析子模块,用于根据所述各个处理器的缓存错误属性进行统计分析,生成第四统计分析结果,所述第四统计分析结果包括:缓存错误队列,所述缓存错误队列包括所述各个处理器的缓存错误次数排序队列; 第五统计分析子模块,用于根据所述各个处理器的温度属性进行统计分析,生成第五统计分析结果,所述第五统计分析结果包括:温度队列,所述温度队列包括所述各个处理器的温度高低排序队列; 第六统计分析子模块,用于根据所述各个处理器的队列属性进行统计分析,生成第六统计分析结果,所述第六统计分析结果包括:任务队列,所述任务队列包括所述各个处理器的队列中任务量个数排序或任务优先级高低排序队列。
19.根据权利要求16至18中任一项所述的装置,其特征在于,所述统计分析模块,具体用于以红黑树RB tree或者二叉堆的形式对所述统计分析结果进行排序。
20.根据权利要求12至19中任一项所述的装置,其特征在于,所述装置还包括:判断模块和调度迁移模块,其中, 所述判断模块,用于判断所述系统中的处理器是否出现软件方面或硬件方面的硬障; 所述调度迁移模块,用于当所述系统中的处理器出现了软件方面或硬件方面的故障,根据所述调度策略将所述待调度任务迁移到所述调度策略指定的处理器。
21.根据权利要求12至20中任一项所述的装置,其特征在于,所述快照生成模块生成的所述快照包括至少一个以下的信息:所述系统中处理器的个数、各个处理器的属性信息、各个处理器内封装的高速缓存的属性信息、每个处理器包括的内核的个数、每个内核是否包括同时多线程SMT以及所述SMT的个数。
22.根据权利要求12至21中任一项所述的装置,其特征在于,所述快照生成模块,还用于生成包括各个处理器内封装的共`享高速缓存的属性信息的快照。
【文档编号】G06F9/50GK103440173SQ201310373371
【公开日】2013年12月11日 申请日期:2013年8月23日 优先权日:2013年8月23日
【发明者】胡欣蔚 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1