内核调度方法及系统与流程

文档序号:11654224阅读:415来源:国知局
内核调度方法及系统与流程

本公开涉及一种内核调度方法及系统。



背景技术:

多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核,即cpu),此时处理器能支持系统总线上的多个处理器,由总线控制器提供所有总线控制信号和命令信号。随着多核技术的发展,目前,一枚处理器中可集成的内核数目越来越多,成为名副其实的众核处理器。

发明人发现,在相关技术中,内核数目众多的多核处理器在应对需要大量进程间同步(fullmesh)的场景时,一般需要使用特定调度策略,从所有空闲内核中随机调度指定数目的内核来运行这些进程,导致程序执行性能不佳。

针对上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种内核调度方法,以至少解决相关技术中程序执行性能不佳的技术问题。

本公开的一个方面提供了一种内核调度方法,应用于多核处理器,上述多核处理器中设置有多个内核,上述方法包括:获取多个目标任务,其中,上述多个目标任务需要同步运行在上述多核处理器中的至少一个内核上;确定第一关系,上述第一关系包括上述多个目标任务中各目标任务间的关系;确定第二关系,上述第二关系包括上述多个内核中各内核间的关系;以及根据确定出的上述第一关系和上述第二关系,从上述多个内核中为上述多个目标任务调度对应的内核。

可选地,确定第一关系包括确定上述多个目标任务中各目标任务间的通信紧密度,该操作包括:获取目标内存地址;确定各目标任务在预设时间段内对上述目标内存地址的访问次数;以及根据上述访问次数确定各目标任务间的通信紧密度。

可选地,获取目标内存地址包括:获取上述多个目标任务在上述预设时间段内对同一内存中各内存地址的访问热度;以及根据上述访问热度确定访问热度值等于预设值的内存地址。

可选地,确定第二关系包括:获取上述多个内核中各内核间的平均消息传递延迟;以及根据上述平均消息传递延迟确定上述第二关系。

可选地,获取上述多个内核中各内核间的平均消息传递延迟包括:将第一预设任务运行在第一内核上且将第二预设任务运行在第二内核上,以对上述多个内核中各内核间进行消息传递延迟测试,其中,上述第一预设任务和上述第二预设任务共享同一内存中的存储信息;以及在上述第一预设任务在第一缓存中修改上述存储信息后,通知上述第二预设任务,以使上述第二预设任务在第二缓存中对上述存储信息做相同修改,从而完成一次消息传递,如此循环预定时间后,计算各内核间的平均消息传递延迟,其中,上述第一缓存与上述第一内核对应,上述第二缓存与上述第二内核对应。

可选地,根据确定出的上述第一关系和上述第二关系,从上述多个内核中为上述多个目标任务调度对应的内核包括:按照上述平均消息传递延迟由小到大或由大到小的顺序给上述上述多个内核中各内核排序,得到内核序列;以及按照上述通信紧密度由小到大或由大到小的顺序将上述多个目标任务中各目标任务分配到上述内核序列上。

本公开的另一个方面提供了一种内核调度系统,应用于多核处理器,上述多核处理器中设置有多个内核,上述系统包括:获取模块,用于获取多个目标任务,其中,上述多个目标任务需要同步运行在上述多核处理器中的至少一个内核上;第一确定模块,用于确定第一关系,上述第一关系包括上述多个目标任务中各目标任务间的关系;第二确定模块,用于确定第二关系,上述第二关系包括上述多个内核中各内核间的关系;以及调度模块,用于根据确定出的上述第一关系和上述第二关系,从上述多个内核中为上述多个目标任务调度对应的内核。

可选地,上述第一确定模块还用于确定上述多个目标任务中各目标任务间的通信紧密度,上述第一确定模块包括:第一获取单元,用于获取目标内存地址;第一确定单元,用于确定各目标任务在预设时间段内对上述目标内存地址的访问次数;以及第二确定单元,用于根据上述访问次数确定各目标任务间的通信紧密度。

可选地,上述获取单元包括:获取子单元,用于获取上述多个目标任务在上述预设时间段内对同一内存中各内存地址的访问热度;以及确定子单元,用于根据上述访问热度确定访问热度值等于预设值的内存地址。

可选地,上述第二确定模块包括:第二获取单元,用于获取上述多个内核中各内核间的平均消息传递延迟;以及第三确定单元,用于根据上述平均消息传递延迟确定上述第二关系。

可选地,上述第二获取单元包括:运行子单元,用于将第一预设任务运行在第一内核上且将第二预设任务运行在第二内核上,以对上述多个内核中各内核间进行消息传递延迟测试,其中,上述第一预设任务和上述第二预设任务共享同一内存中的存储信息;以及处理子单元,用于在上述第一预设任务在第一缓存中修改上述存储信息后,通知上述第二预设任务,以使上述第二预设任务在第二缓存中对上述存储信息做相同修改,从而完成一次消息传递,如此循环预定时间后,计算各内核间的平均消息传递延迟,其中,上述第一缓存与上述第一内核对应,上述第二缓存与上述第二内核对应。

可选地,上述调度模块包括:排序单元,用于按照上述平均消息传递延迟由小到大或由大到小的顺序给上述上述多个内核中各内核排序,得到内核序列;以及分配单元,用于按照上述通信紧密度由小到大或由大到小的顺序将上述多个目标任务中各目标任务分配到上述内核序列上。

本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上上述的方法。

本公开的另一方面提供了一种处理器,上述处理器用于执行计算机可执行指令,上述指令在被执行时用于实现如上上述的方法。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开的实施例的内核调度方法及系统的应用场景;

图2示意性示出了根据本公开的实施例的内核调度方法的流程图;

图3示意性示出了相关技术的进程通讯模型的示意图;

图4示意性示出了根据本公开实施例的确定各进程间的通信紧密度的原理图;

图5a示意性示出了根据本公开实施例的确定各内核间的平均消息传递延迟的原理图;

图5b示意性示出了根据本公开实施例的确定各内核间的平均消息传递延迟的流程图;

图6示意性示出了根据本公开的实施例的内核调度系统的框图;以及

图7示意性示出了根据本公开的另一实施例的内核调度系统的框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

本公开的实施例提供了一种内核调度方法。该方法包括目标任务关系确认阶段、内核关系确认阶段、以及内核调度阶段。在目标任务关系确认阶段,确认一段时间内各目标任务间的关系。在内核关系确认阶段,确认一段时间内各内核间的关系。在完成目标任务关系确认和内核关系确认之后,进入内核调度阶段,可以根据各目标任务间关系和各内核间的关系为各目标任务调度对应的内核。

图1示意性示出了根据本公开的实施例的内核调度方法及系统的应用场景。如图1所示,在该应用场景中示出了逻辑内核拓扑结构,一个处理器所包括的多个内核分布在两个环上,消息可以在同一个环上的内核之间传递,也可以在不同环上的内核之间传递,而在同一个环上的内核之间传递时,其消息传递延迟一般情况下会小于在不同环上的内核之间传递时的消息传递延迟,但不一定都会。

图2示意性示出了根据本公开的实施例的内核调度方法的流程图。

如图2所示,该方法应用于多核处理器,多核处理器中设置有多个内核,该方法包括操作s201~s204,其中:

在操作s201,获取多个目标任务,其中,多个目标任务需要同步运行在多核处理器中的至少一个内核上。

其中,目标任务可以包括但不限于:进程和线程等。优选地,如果当前空闲的内核数量足够,则可以使每个目标任务运行在一个内核上,并且使所有的目标任务保持同步。

在操作s202,确定第一关系,第一关系包括多个目标任务中各目标任务间的关系。

其中,各目标任务间的关系可以包括但不限于各目标任务间的通信紧密关系。进一步,通信紧密关系的紧密程度可以使用通信紧密度来衡量。而通信紧密度则可以根据各目标任务对同一内存的访问情况计算确定。

需要说明的是,各目标任务间的通信紧密度可以实时计算确定,也可以预先计算好并存储在对应的存储单元内。其中,若采用预先计算好的方式,使用时可以直接通过查询对应的存储单元得到前述的第一关系。

在操作s203,确定第二关系,第二关系包括多个内核中各内核间的关系。

其中,各内核间的关系可以包括但不限于各内核间的物理位置关系以及消息传输延迟关系。进一步,物理位置关系可以通过实际测量确定,而消息传输延迟关系的大小可以使用平均消息传输延迟来衡量。使用平均消息传输延迟与使用消息传输延迟相比,前者更准确,因为可以消除偶然事件的影响。而平均消息传输延迟则可以根据各内核对多次传输消息的延迟计算得到。

需要说明的是,各内核间的平均消息传输延迟可以实时计算确定,也可以预先计算好并存储在对应的存储单元内。其中,若采用预先计算好的方式,使用时可以直接通过查询对应的存储单元得到前述的第二关系。

在操作s204,根据确定出的第一关系和第二关系,从多个内核中为多个目标任务调度对应的内核。

具体地,根据第一关系和第二关系,在为多个目标任务调度对应的内核时,既可以为每个目标任务调度一个内核,也可以为多个目标任务调度一个内核。优选地,在空闲内核的数据足够的情况下,根据第一关系和第二关系为每个目标任务调度一个内核。这样一个内核运行一个目标任务,可以提高程序的执行性能。

图3示意性示出了相关技术的进程通讯模型的示意图。如图3所示,发明人发现,在相关技术中,默认各进程之间通信紧密程度相同,因而在给进程分配内核时不会考虑各进程之间的关系。并且,在相关技术中,发明人还发现,在给进程分配内核时也不会考虑各内核间的关系,而是采取特定调度策略,从所有空闲内核中随机调度指定数目的内核来运行这些进程。实际上,如果将两个关系最紧密的进程放在物理距离最远和/或消息传输延迟最大的两个内核上运行时,虽然可以实现它们原本的功能,但是程序的执行性能不佳。

与相关技术相比,通过本公开实施例,在调度内核时充分考虑了各进程之间的关系以及多核处理器的新架构带来的各内核间关系,因而在对应需要大量进程间同步的应用时,能够保证最佳程序执行性能。

下面参考图4、图5a和图5b,结合具体实施例对图2所示的方法做进一步说明。

作为一种可选的实施例,确定第一关系可以包括确定多个目标任务中各目标任务间的通信紧密度,该操作可以包括:获取目标内存地址;确定各目标任务在预设时间段内对目标内存地址的访问次数;以及根据访问次数确定各目标任务间的通信紧密度。

一般地,各目标任务会共享内存,因而可以使用各目标任务对内存的访问情况来确定它们之间的通信紧密度。其中,若两个目标任务对同一内存地址的访问次数较多,则表明它们通信较紧密,若两个目标任务对同一内存地址的访问次数较少甚至为0,则表明它们通信不紧密。

需要说明的是,前述的目标内存地址可以是用户指定的,也可以是在预设时间段内被访问的次数达到预设值的满足一定热度的内存地址。

图4示意性示出了根据本公开实施例的确定各进程间的通信紧密度的原理图。如图4所示,热点列表中包含内存地址a和内存地址b,其中,在时间段t内,内存地址a有2000次访问记录,内存地址b有9000次访问记录。对于内存地址a而言,进程a的访问次数为800次,进程b的访问次数为900次,进程c的访问次数为200次。可见,进程a和进程b对内存地址a的访问较频繁,因而它们之间通信紧密;进程a和进程c对内存地址a的访问次数相差较大,因而它们之间通信不够紧密;进程b和进程c对内存地址a的访问次数相差也较大,因而它们之间通信也不够紧密。

通过本公开实施例,使用各目标任务在预设时间段内对内存地址的访问次数来确定各目标任务间的通信紧密程度,即简单又准确。

作为一种可选的实施例,获取目标内存地址包括:获取多个目标任务在预设时间段内对同一内存中各内存地址的访问热度;以及根据访问热度确定访问热度值等于预设值的内存地址。

具体地,可以通过以下方式实现本公开实施例的上述操作:(1)开启内存;(2)设定访问请求;(3)记录各内存地址的访问次数,并根据“热度”对内存地址排序以确定热点地址;(4)记录访问热点地址次数满足预设值的线程或者线程的id。

作为一种可选的实施例,确定第二关系包括:获取多个内核中各内核间的平均消息传递延迟;以及根据平均消息传递延迟确定第二关系。

需要说明的是,在确定第二关系时,也可以利用多核处理器的架构,基于内核之间的物理距离来确定。

另外,前述的平均消息传递延迟可以通过预测试得到并存储在对应的存储单元中,使用时直接查表。也可以通过实时测试得到,但是这种方式比较浪费时间。

需要说明的是,此处也可以使用消息传递延迟来代替平均消息传递延迟,但是直接使用消息传递延迟容易受偶然事件影响。

作为一种可选的实施例,获取多个内核中各内核间的平均消息传递延迟可以包括:将第一预设任务运行在第一内核上且将第二预设任务运行在第二内核上,以对多个内核中各内核间进行消息传递延迟测试,其中,第一预设任务和第二预设任务共享同一内存中的存储信息;以及在第一预设任务在第一缓存中修改存储信息后,通知第二预设任务,以使第二预设任务在第二缓存中对存储信息做相同修改,从而完成一次消息传递,如此循环预定时间后,计算各内核间的平均消息传递延迟,其中,第一缓存与第一内核对应,第二缓存与第二内核对应。

图5a示意性示出了根据本公开实施例的确定各内核间的平均消息传递延迟的原理图。如图5a所示,线程a和线程b共享内存501,其中,线程a使用缓存a,将内存501中的存储信息缓存在缓存a中,线程b使用缓存b,将内存501中的存储信息缓存在缓存b中。

下面参考图5a和图5b,详细阐述如何基于访问对方缓存的延迟来划分多核心处理器内部结构。

具体地,可以基于内存访问的规律性硬件性能计数器中断(即硬件性能计数器)来分析进程间共享内存的关系。图5b示意性示出了根据本公开实施例的确定各内核间的平均消息传递延迟的流程图。如图5b所示,以fullmesh方式,逻辑内核拓扑结构检测如下:进程a、b分别运行在待测内核上,共享同一cacheline;进程a修改其值为b的令牌,以spinloop等待b将其修改成自己的令牌;进程b以spinloop方式查询到值被修改后,将其值修改为a的令牌;如此循环,一定时间结束后,计算平均消息传递时延。平均消息传递时延的计算结果如表1-1和表1-2所示。根据表1可以知道离某内核最近的内核有哪些,可以升序写入一缓存数组中。例如,开机时或者产品出厂时,测试平均消息传递时延并存入固件指定地址,这样,操作系统os启动后读取此拓扑信息。

表1-1

表1-2

作为一种可选的实施例,根据确定出的第一关系和第二关系,从多个内核中为多个目标任务调度对应的内核可以包括:按照平均消息传递延迟由小到大或由大到小的顺序给多个内核中各内核排序,得到内核序列;以及按照通信紧密度由小到大或由大到小的顺序将多个目标任务中各目标任务分配到内核序列上。

在本公开实施例中,优先考虑通信紧密的进程线程组,将其分配到“关系”最近的内核上。具体地,可以由异步线程对数据进行分析,分析出相关线程的通信紧密程度,从而在每个线程下一个进程调度时,优先调度预先设定的cpu域内的内核。

图6示意性示出了根据本公开的实施例的内核调度系统的框图。如图6所示,该内核调度系统应用于多核处理器,多核处理器中设置有多个内核,该内核调度系统包括:获取模块610,用于获取多个目标任务,其中,多个目标任务需要同步运行在多核处理器中的至少一个内核上;第一确定模块620,用于确定第一关系,第一关系包括多个目标任务中各目标任务间的关系;第二确定模块630,用于确定第二关系,第二关系包括多个内核中各内核间的关系;以及调度模块640,用于根据确定出的第一关系和第二关系,从多个内核中为多个目标任务调度对应的内核。该内核调度系统可以执行上面参考图2描述的方法以及对应的其它实施方式中所列的方法,以实现为多个进程合理调度对应的内核。

与相关技术相比,通过本公开实施例,在调度内核时充分考虑了各进程之间的关系以及多核处理器的新架构带来的各内核间关系,因而在对应需要大量进程间同步的应用时,能够保证最佳程序执行性能。

需要说明的是,本公开中,装置部分实施例中各实施方式中的模块/单元/子单元与方法部分实施例中各实施方式操作/步骤对应,具有相同或类似的实现方式,能够实现相同或类似的功能,能够达到相同或类似的技术效果,能够解决相同或类似的技术问题。

作为一种可选的实施例,第一确定模块还可以用于确定多个目标任务中各目标任务间的通信紧密度,第一确定模块包括:第一获取单元,用于获取目标内存地址;第一确定单元,用于确定各目标任务在预设时间段内对目标内存地址的访问次数;以及第二确定单元,用于根据访问次数确定各目标任务间的通信紧密度。

作为一种可选的实施例,获取单元可以包括:获取子单元,用于获取多个目标任务在预设时间段内对同一内存中各内存地址的访问热度;以及确定子单元,用于根据访问热度确定访问热度值等于预设值的内存地址。

作为一种可选的实施例,第二确定模块包括:第二获取单元,用于获取多个内核中各内核间的平均消息传递延迟;以及第三确定单元,用于根据平均消息传递延迟确定第二关系。

作为一种可选的实施例,第二获取单元可以包括:运行子单元,用于将第一预设任务运行在第一内核上且将第二预设任务运行在第二内核上,以对多个内核中各内核间进行消息传递延迟测试,其中,第一预设任务和第二预设任务共享同一内存中的存储信息;以及处理子单元,用于在第一预设任务在第一缓存中修改存储信息后,通知第二预设任务,以使第二预设任务在第二缓存中对存储信息做相同修改,从而完成一次消息传递,如此循环预定时间后,计算各内核间的平均消息传递延迟,其中,第一缓存与第一内核对应,第二缓存与第二内核对应。

作为一种可选的实施例,调度模块可以包括:排序单元,用于按照平均消息传递延迟由小到大或由大到小的顺序给多个内核中各内核排序,得到内核序列;以及分配单元,用于按照通信紧密度由小到大或由大到小的顺序将多个目标任务中各目标任务分配到内核序列上。

需要说明的是,装置部分实施例中各实施方式中的模块/单元/子单元与方法部分实施例中各实施方式中的操作/步骤对应,它们在实现方法、实现的功能、达到的技术效果和解决的技术问题等方面相同或类似,在此不再赘述。

可以理解的是,获取模块610、第一确定模块620、第二确定模块630、以及调度模块640可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块610、第一确定模块620、第二确定模块630、以及调度模块640中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,获取模块610、第一确定模块620、第二确定模块630、以及调度模块640中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。

图7示意性示出了根据本公开的另一实施例的内核调度系统的框图。如图7所示,该内核调度系统包括处理器710、计算机可读存储介质720。该内核调度系统可以执行上面参考图2描述的方法及其对应的其它实施方式中所列的方法,以实现为多个进程合理调度对应的内核。

具体地,处理器710例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器710还可以包括用于缓存用途的板载存储器。处理器710可以是用于执行参考图2描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元,以及与图2描述的方法对应的其它实施方式中所列的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质720,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

计算机可读存储介质720可以包括计算机程序721,该计算机程序721可以包括代码/计算机可执行指令,其在由处理器710执行时使得处理器710执行例如上面结合图2所描述的方法流程以及对应的其它实施方式中所列的方法流程及其任何变形。

计算机程序721可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序721中的代码可以包括一个或多个程序模块,例如包括721a、模块721b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器710执行时,使得处理器710可以执行例如上面结合图2所描述的方法流程以及对应的其它实施方式中所列的方法流程及其任何变形。

根据本公开的实施例,获取模块610、第一确定模块620、第二确定模块630、以及调度模块640中的至少一个可以实现为参考图7描述的计算机程序模块,其在被处理器710执行时,可以实现上面描述的相应操作。

尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1