发明内容
本发明提供在多核系统上配置核资源的方法、多核系统以及管理核,以提高以流水线方式工作的多核系统的业务处理效率。
本发明的技术方案是这样实现的:
一种在多核系统上配置核资源的方法,该方法在多核系统中预先选择一个核作为管理核,其它核作为功能核,包括:
管理核根据各流水线阶段的功能核发来的负载信息,检测到一个流水线阶段的功能核都处于超载状态,则从功能核都处于低负载状态的流水线阶段中,选择一个功能核作为补充核,将该补充核添加到所述功能核都处于超载状态的流水线阶段中。
所述在多核系统中预先选择一个核作为管理核进一步包括:预先设定一个超载阈值,
所述管理核检测到一个流水线阶段的功能核都处于超载状态包括:管理核检测到一个流水线阶段中,每个功能核的负载都连续预定次数大于超载阈值,则确定该流水线阶段的功能核都处于超载状态。
所述在多核系统中预先选择一个核作为管理核进一步包括:预先设定一个低负载阈值,
所述管理核选择一个补充核包括:管理核检测到一个流水线阶段中,每个功能核的负载都连续预定次数低于低负载阈值,则确定该流水线阶段的功能核都处于低负载状态,则从该流水线阶段中选择一个功能核作为补充核。
所述管理核将补充核添加到所述功能核都超载的流水线阶段中包括:管理核向补充核发送复位命令,补充核收到该复位命令,停止接收新业务,并在处理完已接收的业务后,将自身的运行状态设置为待复位状态,向管理核上报该运行状态,管理核根据该运行状态,将补充核的运行环境设置为与所述功能核都超载的流水线阶段中的功能核相同,设置完毕,对补充核执行复位操作。
所述管理核对补充核执行复位操作进一步包括:管理核确定补充核复位成功,释放补充核在复位前所处流水线阶段中占用的资源。
所述管理核将补充核的运行环境设置为与所述功能核都超载的流水线阶段中的功能核相同包括:设置补充核完成所述功能核都超载的流水线阶段的功能所需要的代码段、数据段、共享数据段和堆栈空间。
所述管理核对补充核执行复位操作包括:管理核通过多核系统提供的单核复位功能对补充核进行复位。
一种多核系统,该系统包括:管理核和功能核,其中:
管理核,接收各流水线阶段的功能核发来的负载信息,检测到一个流水线阶段的功能核都处于超载状态,则从功能核都处于低负载状态的流水线阶段中,选择一个功能核作为补充核,将该补充核添加到所述功能核都处于超载状态的流水线阶段中;
功能核,向管理核上报自身的负载信息。
所述管理核包括:
通信模块,接收并记录功能核发来的负载信息;
超载检测模块,当从通信模块查询到一个流水线阶段的功能核都处于超载状态时,则向通信模块查询功能核都处于低负载状态的流水线阶段,从查询到的流水线阶段选择一个功能核作为补充核,将该补充核标识和超载流水线阶段标识发送给超载处理模块;
超载处理模块,接收补充核标识和超载流水线阶段标识,通知补充核复位,在检测到补充核为待复位状态后,将补充核的运行环境设置为与功能核都处于超载状态的流水线阶段的功能核相同,设置完毕,将补充核复位,检测到补充核复位成功后,释放补充核在复位前所在流水线阶段中占用的资源。
一种管理核,该管理核包括:通信模块、超载检测模块和超载处理模块,其中:
通信模块,接收并记录功能核发来的负载信息;
超载检测模块,当从通信模块查询到一个流水线阶段的功能核都处于超载状态时,则向通信模块查询功能核都处于低负载状态的流水线阶段,从查询到的流水线阶段选择一个功能核作为补充核,将该补充核标识和超载流水线阶段标识发送给超载处理模块;
超载处理模块,接收补充核标识和超载流水线阶段标识,通知补充核复位,在检测到补充核为待复位状态后,将补充核的运行环境设置为与功能核都处于超载状态的流水线阶段的功能核相同,设置完毕,将补充核复位,检测到补充核复位成功后,释放补充核在复位前所在流水线阶段中占用的资源。
与现有技术相比,本发明通过在多核系统中预先选择一个核作为管理核,其它核作为功能核,当管理核根据各流水线阶段的功能核发来的负载信息,检测到一个流水线阶段的功能核都处于超载状态时,则从功能核都处于低负载状态的流水线阶段中,选择一个功能核作为补充核,将该补充核添加到所述功能核都超载的流水线阶段中,实现了根据多核系统各流水线阶段的业务负载动态调整各流水线阶段占用的核资源、从而提高多核系统的业务处理效率的目的。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图2为本发明实施例提供的在以流水线方式工作的多核系统中,动态配置核资源的流程图,如图2所示,其具体步骤如下:
步骤201:在多核系统中选择一个核作为管理核,其它核作为功能核。
可在多核处理器中单独使用一个核作为管理核,也可以在一个负载较轻的功能核上实现核资源管理功能,使该核同时作为功能核和管理核。
步骤202:功能核实时计算自身的负载值,每隔预定时间间隔将自身负载值和运行状态信息发送给管理核。
步骤203:管理核收到功能核发来的负载值和运行状态信息,记录该功能核的负载值、运行状态信息与当前时刻的对应关系。
若管理核同时为功能核,则管理核也要实时计算自身的负载值,并每隔预定时间间隔记录一次自身的负载值、运行状态信息和当前时刻的对应关系。
步骤204:管理核根据已记录的该功能核的负载值,判断该功能核是否处于超载状态,若是,执行步骤205;否则,转至步骤203。
具体地,管理核可预先设定一个超载阈值,且预先设定:当功能核发来的负载值连续预定次数大于超载阈值时,则认为该功能核处于超载状态。例如:管理核预先设定超载阈值为80%,且预先设定功能核发来的负载值连续三次超过80%,则认为功能核处于超载状态。
步骤205:管理核判断该功能核所处流水线阶段的其它功能核是否也都处于超载状态,若是,执行步骤206;否则,转至步骤203。
步骤206:管理核确定为该流水线阶段分配的核的数量已不能满足当前业务需求,根据已记录的其它流水线阶段中的功能核的负载值,判断是否存在功能核都处于低负载状态的流水线阶段,若是,执行步骤207;否则,转至步骤203。
管理核可预先设定一个低负载阈值,且预先设定:当功能核发来的负载值连续预定次数低于低负载阈值时,则认为该功能核处于低负载状态。例如:管理核预先设定低负载阈值为20%,且预先设定:当功能核发来的负载值连续三次低于20%,则认为功能核处于低负载状态。
步骤207:管理核从该功能核都处于低负载状态的流水线阶段任意选择一个功能核,将该功能核作为补充核,添加到功能核都处于超载状态的流水线阶段中,转至步骤203。
本发明实施例中,将功能核都处于超载状态的流水线阶段简称为超载流水线阶段,将功能核都处于低负载状态的流水线阶段简称为低负载流水线阶段。
以下给出管理核将补充核添加到超载流水线阶段的具体实施方式:
图3为本发明实施例提供的将补充核添加到超载流水线阶段的流程图,如图3所示,其具体步骤如下:
步骤301:管理核向选中的补充核发送复位命令。
步骤302:补充核收到管理核发来的复位命令,停止接收新业务,并在完成当前已接收业务的处理后,将自身运行状态设为待复位状态,并在上报负载值和运行状态时刻到来时,向管理核上报自身的负载值和运行状态信息。
步骤303:管理核收到补充核发来负载值和运行状态信息,检测到该运行状态信息指示补充核处于待复位状态,则将补充核的运行环境设置为与超载流水线阶段的功能核相同。
设置补充核的运行环境包括:设置补充核完成超载流水线阶段的功能所需要的代码段、数据段、共享数据段和堆栈空间。管理核为补充核设置运行环境的过程类似于Bootloader为核加载程序的过程。具体过程为:由于管理核掌握着每个功能核执行映像地址,首先为补充核选择新的执行映像即:超载核所执行的映像,管理核将该映像的入口地址作为补充核复位后的程序入口地址写到补充核的启动向量中;然后管理核为补充核分配新的数据段空间和堆栈空间,并通过修改补充核启动向量中的TLB表项将数据段空间和堆栈空间映射到补充核的虚拟空间中;最后,管理核为补充核设置启动参数,管理核需在启动参数中告知补充核启动后不必重新初始化共享数据段,这样补充核启动后就可以直接使用共享数据段中的数据开始工作了。
步骤304:运行环境设置完毕,管理核对补充核进行复位。
在本实施例中,管理核可通过多核处理器提供的单核复位功能对补充核进行复位。例如:多核处理器提供一个复位寄存器,寄存器的每一位与一个核对应,当向一位写入“1”时,可使对应的核复位,从而,可通过操作多核处理器的复位寄存器使得补充核复位。
步骤305:补充核在复位成功后,将自身的运行状态设为正常工作状态,然后在上报负载值和运行状态时刻到来时,向管理核上报自身的负载值和运行状态信息。
步骤306:管理核收到补充核发来的负载值和运行状态信息,检测到该运行状态信息指示补充核处于正常工作状态,则确定补充核复位成功,释放补充核在原低负载流水线阶段中所占用的数据段空间和堆栈空间。
步骤307:补充核在新的运行环境下,完成超载流水线阶段的业务处理功能。
以下给出一个应用本发明实施例的具体例子:
如图4所示,设多核网络服务器系统的流水线由四个阶段:ETH处理、IP处理、TCP处理和APP处理组成。启动时为TCP处理阶段和APP处理阶段各分配了四个核、而为ETH处理阶段和IP处理阶段各分配了两个核,且由于ETH处理较简单,将ETH处理阶段中的一个核同时作为功能核和管理核,其它核都作为功能核。且,功能核每隔预定时间间隔向管理核上报自身的负载值和运行状态信息。当网络中的IP分片报文突然增多导致IP处理阶段的功能核的负载突然加重时,管理核根据IP处理阶段的功能核上报的负载值,可检测到IP处理阶段超载,则查看其它流水线阶段的负载情况,检测到TCP处理阶段的功能核都处于低负载状态,则从TCP处理阶段任意选择一个功能核,通知该功能核复位,并将该功能核的运行环境设置为与IP处理阶段的功能核相同,从而使得IP处理阶段增加了一个功能核。
图5为发明实施例提供的以流水线方式工作的多核系统组成图,如图5所示,其主要包括:管理核51和功能核52,其中:
管理核51包括:通信模块511、超载检测模块512和超载处理模块513,其中:
通信模块511:用于接收功能核52发来的负载值和运行状态信息,保存功能核的负载值、运行状态信息与当前时刻的对应关系。
超载检测模块512:用于预先设定超载阈值和低负载阈值,每隔预定时间间隔查询一次通信模块511中记录的功能核的负载值,判断是否有功能核的负载值连续预定次数大于超载阈值,若有,则确定该功能核超载,进一步判断该功能核所处流水线阶段的其它功能核是否都超载,若都超载,则查看通信模块511中记录的其它流水线阶段的功能核的负载值,判断是否存在功能核都处于低负载状态的流水线阶段,若存在,则从该流水线阶段任意选择一个功能核作为补充核,将该补充核标识和超载流水线阶段标识发送给超载处理模块513。
超载处理模块513:接收到超载检测模块512发来的补充核标识和超载流水线阶段标识,向该补充核标识对应补充核发送复位命令,并在通信模块511中查询到该补充核的运行状态为待复位状态后,将该补充核的运行环境设置为与超载流水线阶段的功能核相同,设置完毕,将补充核复位,并在通信模块511中查询到该补充核的运行状态为正常工作状态后,释放补充核在原低负载流水线阶段中所占用的数据段空间和堆栈空间。
功能核52:实时计算自身的负载值,每隔预定时间间隔向管理核51发送自身的负载值和运行状态信息;接收到管理核51发来的复位命令,停止接收新业备.并将自身已接收业务处理完毕:在新的运行环境下,完成与超载流水线阶段的功能核相同的业务处理功能。
从图2、3、5所示实施例可以看出:本发明实施例通过监测各流水线阶段的负载情况,当一个流水线阶段的功能核都处于超载状态后,则从其它功能核都处于低负载状态的流水线阶段中,选择一个功能核作为补充核添加到所述超载的流水线阶段中,实现了在无需重启多核系统的前提下,根据各流水线阶段的业务负载变化动态调整各流水线阶段占用核资源,从而避免系统瓶颈、提高多核系统的业务处理效率的目的。
本发明实施例所提供的方案主要应用于以流水线方式工作、且同一流水线阶段的各功能核的运行环境相同的多核系统中。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。