业务调度方法及装置与流程

文档序号:16309832发布日期:2018-12-19 05:14阅读:182来源:国知局
业务调度方法及装置与流程

本申请涉及网络技术领域,尤其涉及一种业务调度方法及装置。

背景技术

在对多个网络业务进行处理时,为了提高业务执行的并发度并提升网络资源的利用率,可以使用负载均衡策略来将业务请求分发给不同的业务处理线程来进行处理。即将多个业务请求分摊到多个操作单元上来共同完成对多个业务请求处理的工作任务。

在业务请求较少的情况下,部分业务处理线程空闲,会主动睡眠来释放处理器资源,以节省资源。当新的业务请求需要空闲的业务处理线程进行处理时,首先需要唤醒业务处理线程。唤醒业务处理线程的过程需要向cpu系统进行申请,然后cpu系统对申请进行允许后,业务处理线程运行起来后才可以对新的业务请求进行处理。

在业务请求负载较小的情况下,根据负载均衡策略,新的业务请求优先由空闲的业务处理线程来处理。因此,在业务请求负载较小的情况下较多的业务请求由休眠的业务处理线程来执行。然而,重新唤醒业务处理线程的过程需要消耗较长的时间,从而增加了整体业务处理的时延,降低了业务请求处理的处理效率。



技术实现要素:

本申请公开了一种业务调度方法及装置,可以提高业务请求的处理效率,并节省处理器资源。

第一方面,本申请实施例提供一种业务调度方法,所述方法应用于业务调度装置中,所述业务调度装置包括处理器,所述处理器包括m个处理器核,m为大于2的整数,所述方法包括:当所述处理器进入低负载模式时,计算运行中的多个业务请求所需的处理器核的数量n,所述n为大于等于1的整数,并且n<m;在n个所述处理器核上分发所述多个业务请求。

上述的业务调度方法中,在检测到处理器进入低负载模式的情况下,可以根据处理器中所运行的业务请求的数量来减少用于处理业务请求的处理器核的数量,从而减少在低负载模式下,处理器核的线程会频繁的执行睡眠、被唤醒和再睡眠的循环的情况,从而可以减少业务请求被处理所消耗的时间,可以减少整体业务处理的时延,提高业务请求处理的处理效率。

其中,业务调度装置判断处理器进入低负载模式的具体方式可以是:获取所述运行中的多个业务请求的并发度,以及所述运行中的多个业务请求的负载;当所述并发度低于预设的并发度阈值,并且所述运行中的多个业务请求的负载低于预设的负载阈值时,确定所述处理器进入所述低负载模式。

可选的,业务调度装置统计运行中的多个业务请求的并发度,具体可以是统计在预设周期t1内需要处理的业务请求的数量。

可选的,业务调度装置可以根据cpu系统处理压力集中时间段、系统中用户平均活跃时间等信息,通过数学方法推测出某一时刻cpu系统中运行中的业务请求的并发度。

其中,运行中的多个业务请求的负载可以是在预设周期内,运行中的多个业务请求处理完成的时间占该预设周期的时长比例。可以根据实际业务场景中对精确度和效率的要求来确定预设周期t1的取值。

可选的,获取运行中的多个业务请求的负载可以包含两种方式:方式一,可以包含步骤:步骤一:业务调度装置可以统计运行中的多个业务请求的实际执行时间。步骤二:业务调度装置可以计算处理器中这运行中的多个业务请求的负载。方式二:直接统计运行中的多个业务请求中每个业务请求的负载,即每个业务请求的运行时间占该预设周期的时长比例。之后将多个业务请求中各个业务请求的负载叠加即得到这运行中的多个业务请求的负载。

在一种可能的实施例中,所述运行中的多个业务请求所需的处理器核的数量n与所述并发度正相关,与所述运行中的多个业务请求的负载正相关。

在一种可能的实施例中,所述处理器核上分发所述多个业务请求的方式为轮询模式。由于这n个处理器核中每个处理器核需要预留时间对业务请求队列进行轮询。可以根据需要进行轮询的时间间隔设置处理器核可以承担的负载p。该进行轮询的时间间隔越小,表明处理器核轮询业务请求队列的频率越大,处理器核可以承担的负载p越小。n个处理器核使用轮询模式处理多个业务请求可以保证业务请求到达处理器之后可以迅速被处理,可以降低业务请求等待的时延,提升业务请求的处理效率。

可选的,在确定运行中的多个业务请求所需的处理器核的数量n之后,可以通过自适应算法来实现将原先在m个处理器核上分发业务请求调整为在n个处理器核上分发业务请求。通过自适应算法,可以实现无需手动设置分发业务请求的处理器核的范围,可以自动按需分配处理器核资源。

在一种可能的实施例中,在所述m个处理器核中,除所述n个处理器核之外的(n-m)个处理器核中处理所述多个业务请求的线程处于睡眠状态。在无需这除选取的n个处理器核之外的(n-m)个处理器核处理该业务请求时,(n-m)个处理器核处理该业务请求的线程可以进入睡眠状态释放处理器核资源,从而可以降低处理器核的损耗,节省处理器资源。

可选的,在业务调度装置检测到运行中的多个业务请求的并发度高于预设的并发度阈值,或者运行中的业务请求的负载高于预设的负载阈值时,表明对于这n个处理器核来说,业务请求的负载较高,可以重新进入高负载模式,即在m个处理器核上分发多个业务请求。在检测到处理器进入高负载模式的情况下,可以根据处理器中所运行的业务请求的数量来增加用于处理业务请求的处理器核的数量,从而减少在高负载模式下,n个处理器核的线程无法及时处理运行的业务请求的情况,从而可以减少业务请求被处理所消耗的时间,可以减少整体业务处理的时延,提高业务请求处理的处理效率。

可选的,在检测到运行中的多个业务请求的并发度高于预设的并发度阈值,或者运行中的业务请求的负载高于预设的负载阈值时,可以重新计算运行中的多个业务请求所需的处理器核的数量l,l可以是大于n且小于等于m的整数。可选的,该过程中业务调度装置可以选择继续使用上述低负载模式下的n个处理器核来进行业务请求处理,同时可以唤醒(l-n)个处理器核与上述n个处理器核一起来进行业务请求处理。

第二方面,本申请提供一种业务调度方法,所述方法应用于业务调度装置中,所述业务调度装置包括处理器,所述处理器包括m个处理器核,m为大于2的整数,所述方法包括:当所述处理器进入无业务请求处理状态时,将所述m个处理器核中处理业务请求的线程设定为睡眠状态。当处理器中没有业务请求需要处理时,m个处理器核的业务处理线程可以进入睡眠状态,等待有业务处理请求需要处理时重新唤醒为工作状态,可以避免对处理器资源无效占用,节省处理器资源。

具体的,当在预设时间周期t1内,检测到运行中的多个业务请求的并发度低于一定阈值时,表明处理器处于无业务请求处理状态。

可选的,在处理器接收到业务请求需要进行处理时,可以唤醒处理器核处理业务请求的线程来进行业务请求处理。该用来确定处理器进入无业务请求处理状态的第一阈值可以是根据cpu系统需求确定。

第三方面,本申请提供一种业务调度装置,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令来执行第一方面或者第一方面任一种可能实现方式所描述的方法。

第四方面,本申请提供一种业务调度装置,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令来执行第二方面或者第二方面任一种可能实现方式所描述的方法。

第五方面,本申请提供一种业务调度装置,该业务调度装置包括用于执行第一方面或第一方面任一个可能的实施例所提供方法的模块或单元。

第六方面,本申请提供一种业务调度装置,该业务调度装置包括用于执行第二方面或第二方面任一个可能的实施例所提供方法的模块或单元。

第七方面,本发明提供一种芯片系统,该芯片系统包括至少一个处理器,存储器和接口电路,该存储器、该接口电路和该至少一个处理器通过线路互联,该至少一个存储器中存储有程序指令;该程序指令被该处理器执行时,实现第一方面或者第一方面任一个可能的实施例所描述的方法。

第八方面,本发明实施例提供一种芯片系统,该芯片系统包括至少一个处理器,存储器和接口电路,该存储器、该接口电路和该至少一个处理器通过线路互联,该至少一个存储器中存储有程序指令;该程序指令被该处理器执行时,实现第二方面或者第二方面任一个可能的实施例所描述的方法。

第九方面,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序指令,当该程序指令由处理器运行时,实现第一方面或者第一方面任一个可能的实施例所描述的方法。

第十方面,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序指令,当该程序指令由处理器运行时,实现第二方面或者第二方面任一个可能的实施例所描述的方法。

第十一方面,本发明实施例提供一种计算机程序产品,当该计算机程序产品在由处理器上运行时,实现第一方面或者第一方面任一个可能的实施例所描述的方法。

第十二方面,本发明实施例提供一种计算机程序产品,当该计算机程序产品在由处理器上运行时,实现第二方面或者第二方面任一个可能的实施例所描述的方法。

附图说明

下面对本申请实施例用到的附图进行介绍。

图1是本申请实施例提供的一种应用场景示意图;

图2是本申请实施例提供的一种业务调度方法的流程示意图;

图3是本申请实施例提供的一种业务调度装置的结构示意图;

图4是本申请实施例提供的另一种业务调度装置的结构示意图;

图5是本申请实施例提供的又一种业务调度装置的结构示意图。

具体实施方式

首先,为了便于理解本申请实施例,对本申请实施例涉及的一些概念或术语进行解释。

(1)线程

线程是程序执行流的最小单元,也是操作系统能够进行运算调度的最小单位。线程包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程本身不包含系统资源,只包含在运行中必不可少的资源。但线程可与同属一个进程的其它线程共享进程所拥有的系统资源,如处理器(centralprocessingunit,cpu)资源、虚拟地址空间、文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(callstack),自己的寄存器环境(registercontext),自己的线程本地存储(thread-localstorage)。线程依靠共享的系统资源来运行。

在处理业务请求时,业务处理线程是用于处理业务请求的最小单位。一个业务处理线程只能够同时处理一条业务请求。其中的业务请求例如可以是数据存储请求、数据读取请求、数据写入请求、数据采集请求、显示请求等,也可以是其他类型的请求,本申请实施例对此不作限定。

(2)负载均衡

负载均衡(loadbalancing)是一种负载分配技术,用来在多个计算机、计算机集群、网络连接、cpu、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

在通过多个业务处理线程处理业务请求时,也可以使用负载均衡的策略来将多个业务处理请求分配给多个业务处理线程进行处理,从而均衡每个业务处理线程处理的业务请求,减少业务请求等待处理时间过长的情况。使用负载均衡的方式来在多个业务处理线程上分发业务请求,可以降低业务请求等待的时延,提升业务请求的处理效率。

(4)处理器核

处理器核即处理器核心(core),又称为内核,是cpu重要的组成部分。处理器的核心数是指计算组件的单一集成电路(integratedcircuit,ic)中封装的独立处理器中的数量。这些处理器核心可以分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。两个或更多独立处理器封装在一个单一集成电路中的方案称为多核心处理器,而封装在不同ic中的独立处理器形成的计算机系统被称为多处理器。

一个处理器核可以对应一个线程,即一个处理器核可以运行一个线程。一个处理器核可以利用一个业务处理线程来实现同时对一条业务请求进行处理。

(5)轮询

轮询(polling)是cpu决策如何为周边设备提供服务的方式。轮询法实现的方式是:由处理器或者处理器核定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。轮询的方式容易实现,但效率偏低。

在处理器通过业务处理线程进行业务请求处理时,也可以使用轮询模式。具体的,每个处理器核均可以对应一个业务请求队列。处理器核可以调用线程在对应的业务请求队列中依次对业务请求队列中的业务请求进行处理。每个处理器通过轮询模式处理对应的业务请求队列中的业务请求是指处理器的线程按照预设的时间间隔周期性的去对应的业务请求队列中查看是否有业务请求需要处理,若有,按照队列次序依次对业务请求进行处理。本申请实施例对队列中业务处理请求的排序依据不作限制,可以是按照到来的时间先后排序,也可以是其他方式。

(6)并发度

在处理器进行业务请求处理时,多个业务请求可以同时发生,这些同时发生的业务请求可以称为并发请求。cpu系统中在某一时刻或者某一时间段内并发请求的数量可以用来表示cpu系统中业务请求的并发度。

由于同一时刻发生的业务请求(称为绝对并发请求)的数量无法测量,可以测量一段时间以内发生的业务请求(相对并发请求)的数量表示系统中业务请求的并发度。另外,也可以根据一些可观测的数据进行合理的推测和估算,来得到某一时刻绝对并发请求的数量,来表示系统中业务请求的并发度。具体的,例如,可以根据分析得到的cpu系统处理压力集中时间段、系统中用户平均活跃时间等信息,通过数学方法推测出某一时刻cpu系统中业务请求的并发度。

(7)处理器核中线程的睡眠

处理器核中线程的睡眠是指暂时停止处理器核中线程的运行,主动释放处理器核资源,避免无效的资源浪费。在处理器核无需处理业务请求时,处理器核中的业务处理线程进入休眠状态,可以降低处理器核的损耗,节省处理器资源。

对于处理器核中的业务处理线程来说,休眠可以看作是一种线程的特殊状态。当线程暂时无需处理业务请求时,为了避免当前业务处理线程浪费处理器核时间,将该业务处理线程从运行队列中移走,放入线程等待队列中。因此,处理器核中线程的睡眠就是为了更好地利用cpu。当处理器核中的业务处理线程需要处理业务请求时,可以恢复到唤醒状态,并且还原到睡眠前的状态。处理器核中线程进入休眠状态后,可以由其他线程或者其他处理器核来唤醒。

(8)cpu资源和cpu系统

本申请实施例中,cpu资源可以理解为业务请求占用cpu硬件和软件的时间和使用率。具体的,cpu资源可以包括cpu性能资源、内存资源和硬盘资源等。

cpu系统可以包含处理器共享内存,i/o设备,控制器,及外部设备。整个cpu系统的硬件系统由统一的操作系统控制,在处理器和程序之间实现作业、任务、程序、数组极其元素各级的全面并行。

(9)自适应算法

自适应(self-adaptive)是指在数据处理和分析过程中,系统根据所处理数据的数据特征自动调整处理方法、处理顺序和处理参数,使得数据处理过程与所处理数据的统计分布特征、结构特征相适应,以取得最佳的处理效果。自适应算法可以采用基于梯度的算法,例如迫零算法,最陡下降算法、最小均方误差(leastmeansquare,lms)算法。自适应算法可以用硬件(处理电路)、或者软件(程序控制)来实现,还可以是软硬件结合来实现。

本申请实施例中,在从m个处理器核中确定n个处理器核进行业务请求处理之后,业务调度装置可以利用自适应算法将原先在m个处理器核上分发业务请求调整为在n个处理器核上分发业务请求。将原先在n个处理器核上分发业务请求调整为在m个处理器核上分发业务请求,也可以是通过自适应算法来实现。

下面介绍本申请实施例提供的应用场景。

请参阅图1,图1是本申请实施例提供的一种应用场景示意图。如图1所示,为了提高cpu的利用率,cpu可以通过多个处理器核分别调用线程的方式去同时处理多个业务请求,这多个线程即为业务处理线程,且这多个线程不互相干扰。该cpu可以包含m个处理器核,每个处理器核可以调用线程来处理业务请求。如图1所示,处理器核1可以调用线程1来处理业务请求,处理器核2可以调用线程2来处理业务请求,……,处理器核m可以调用线程m来处理业务请求。这m个处理器核调用线程来处理业务请求可以并行执行的。各个处理器核的线程之间可以相互不影响。在业务请求在多个线程上进行调度时,可以通过负载均衡向多个线程进行分发。

其中,可以根据业务请求的并发度相对于cpu中处理多个业务请求的处理器核的数量m来分为两种场景:业务请求负载较高或者业务请求负载较低。具体的,当cpu中业务请求的并发度远远小于cpu中的处理多个业务请求的处理器核的数量m时,可以认为是业务请求负载较低的场景。反之,可以认为是业务请求负载较高的场景。下面分别介绍在cpu内业务请求负载较高和业务请求负载较低两种场景。

当业务请求负载较高时,利用负载均衡的策略将业务请求分发到各个线程,可以减少各个线程上业务请求不均衡的情况,从而可以更大化的利用cpu系统的资源来进行业务请求的处理,可以减少业务请求等待被处理的时间,提高业务请求的处理效率。

而当业务请求负载较低时,处理业务请求的线程中部分线程在没有业务请求可以处理时会主动睡眠来释放cpu资源。负载均衡策略会使得新的业务请求优先由空闲的线程即已睡眠的线程来进行处理。由已睡眠的线程来处理业务请求,需要首先唤醒线程,唤醒线程的过程需要向cpu系统进行申请,然后cpu系统对申请进行允许后,线程运行后才可以对新的业务请求进行处理。该唤醒线程来进行业务请求处理的过程需要消耗较长的时间。并且该业务请求负载较低的场景中,进行业务请求处理时cpu系统中线程反复进行睡眠、唤醒、再睡眠的循环,增加了整体业务处理的时延,降低了业务请求处理的处理效率。

基于上述应用场景,为了提高在业务请求负载较低时业务请求处理的处理效率,本发明实施例提供一种业务调度方法和设备。

由于在低负载模式下,处理器中空闲的处理器核的线程会频繁的执行睡眠、被唤醒和再睡眠的循环,表明处理器中的处理器核的线程当前可以无需全部运行来处理业务请求。因此,可以检测处理器是否进入低负载模式,在检测到包含m个处理器核的处理器进入低负载模式的情况下,可以计算处理器中所运行的业务请求所需的处理器核的数量n,之后仅在n个处理器核上分发多个业务请求。其中的n是小于m的整数。

该业务调度方法中,在检测到处理器进入低负载模式的情况下,可以根据处理器中所运行的业务请求的数量来减少用于处理业务请求的处理器核的数量,从而减少在低负载模式下,处理器核的线程会频繁的执行睡眠、被唤醒和再睡眠的循环的情况,从而可以减少业务请求被处理所消耗的时间,可以减少整体业务处理的时延,提高业务请求处理的处理效率。

示例性的,本申请实施例提供一种业务调度方法,可以提高业务请求的处理效率。请参阅图2,图2是本申请实施例提供的一种业务调度方法的流程示意图,该业务调度方法可以应用于业务调度装置中,该业务调度装置可以包括处理器,该处理器可以包括m个处理器核,m为大于2的整数。该业务调度方法包含但不限于步骤s101-s102。

s101、当处理器进入低负载模式时,业务调度装置计算运行中的多个业务请求所需的处理器核的数量n。

其中,n为大于等于1的整数,并且n<m。处理器进入低负载模式表明处理器中业务请求负载较低。

s102、业务调度装置在n个处理器核上分发多个业务请求。

该业务调度方法中,在检测到处理器进入低负载模式的情况下,可以根据处理器中所运行的业务请求的数量来减少用于处理业务请求的处理器核的数量,从而减少在低负载模式下,处理器核的线程会频繁的执行睡眠、被唤醒和再睡眠的循环的情况,从而可以减少业务请求被处理所消耗的时间,可以减少整体业务处理的时延,提高业务请求处理的处理效率。

其中,业务调度装置判断处理器进入低负载模式的具体方式可以是:业务调度装置可以获取运行中的多个业务请求的并发度,以及运行中的多个业务请求的负载。当并发度低于预设的并发度阈值,并且运行中的多个业务请求的负载低于预设的负载阈值时,业务调度装置确定处理器进入低负载模式。

首先,分别对获取运行中的多个业务请求的并发度和获取运行中的多个业务请求的负载的过程分别进行介绍。

(1)获取运行中的多个业务请求的并发度

cpu系统中m个处理器核进行业务请求处理时,可以统计运行中的多个业务请求的并发度,这多个业务请求的并发度可以用于表征处理器的负载情况。业务调度装置在统计运行中的多个业务请求的并发度时,具体可以是统计在预设周期t1内处理器中需要处理的业务请求的数量。

可以理解的,本申请实施例中,获取cpu系统中运行中的多个业务请求的并发度的方式不限于上述方式,也可以是其他的方式,本申请实施例对此不作限制。例如还可以根据cpu系统处理压力集中时间段、系统中用户平均活跃时间等信息,通过数学方法推测出某一时刻cpu系统中运行中的业务请求的并发度。

(2)获取运行中的多个业务请求的负载

另外,每个业务请求的负载也会影响处理器的负载,其中,每个业务请求的负载表示每个业务请求对处理器产生的负载,即该业务请求的运行负载。运行中的多个业务请求的负载可以是在预设周期内,运行中的多个业务请求处理完成的时间占该预设周期的时长比例。其中该预设周期可以是前述统计业务请求的并发度时的预设周期t1。业务请求处理完成所需的时间即业务请求的运行时间。运行中的多个业务请求中各个业务请求的负载的总和可以用来表示处理器的负载情况。因此,业务调度装置可以获取运行中的多个业务请求中每个业务请求的运行时间,以检测处理器是否处于低负载模式。

其中,预设周期t1越长,业务请求的并发度和负载的获取结果就越准确,但是预设周期t1越长,效率越低。因此可以根据实际业务场景中对精确度和效率的要求来确定预设周期t1的取值。

获取运行中的多个业务请求的负载可以包含两种方式以下分别进行介绍。

方式一,可以包含以下步骤:

步骤一:业务调度装置可以统计运行中的多个业务请求的实际执行时间。

具体的,业务调度装置可以统计运行中的多个业务请求中业务请求的实际执行时间,业务请求的实际执行时间即业务请求从开始执行到执行结束所需要的时间。之后根据运行中的多个业务请求中每个业务请求的实际执行时间确定这多个业务请求的运行时间。运行中的多个业务请求的运行时间可以是每个业务请求的运行时间叠加得到的总的时间t2。

步骤二:业务调度装置可以计算处理器中这运行中的多个业务请求的负载。

其中,多个业务请求的负载即为这运行中的多个业务请求的运行时间占该预设周期的时长比例。具体的,处理器的m个处理器核均参与这运行中的多个业务请求的处理,m个处理器核并行处理这多个业务请求。因此,处理器中这运行中的多个业务请求的负载为t2/t1。当运行中的多个业务请求的并发度低于预设的并发度阈值,并且运行中的多个业务请求的负载低于预设的负载阈值时,业务调度装置确定处理器进入低负载模式。其中,并发度阈值和负载阈值可以是根据实际应用场景的需求来确定。

方式二,可以直接统计运行中的多个业务请求中每个业务请求的负载,即每个业务请求的运行时间占该预设周期的时长比例。之后将多个业务请求中各个业务请求的负载叠加即得到这运行中的多个业务请求的负载。具体的,运行中的多个业务请求的数量为m时,这m个业务请求的运行时间依次为t1、t2、……tm,则这m个业务请求的负载依次为t1/t1、t2/t1、……tm/t1。多个业务请求的负载为(t1+t2+……+tm)/t1。可以理解的,t1+t2+……+tm=t2。

其次,对确定处理器核的数量n的过程进行介绍。

在业务调度装置确定处理器进入低负载模式之后,业务调度装置可以根据运行中的多个业务请求的负载来确定处理器核的数量n。

具体的,处理器核的数量n与运行中的多个业务请求的负载正相关。运行中的多个业务请求的负载(即运行中的多个业务请求的运行时间占该预设周期的时长比例)越大,确定继续进行业务请求处理的处理器核的数量n越大,反之,运行中的多个业务请求的负载越小,确定继续进行业务请求处理的处理器核的数量n越小。处理器核的数量n还可以与运行中的多个业务请求的并发度正相关。运行中的多个业务请求的并发度越大,确定继续进行业务请求处理的处理器核的数量n也越大。

举例说明,在预设周期t1内,检测到运行中的多个业务请求的负载为s。在确定处理器进入低负载模式后,假设在低负载模式下,这n个处理器核继续进行业务请求处理的处理器核中每个处理器核可以承担的负载为p,则确定继续进行业务请求处理的处理器核的数量n=s/p。可以理解的,示例仅用于解释本申请实施例,不应构成限定。其中,这n个处理器核可以是m个处理器核中的任意n个,也可以是按照一定规则选出的n个,本申请实施例对此不作限定。

可选的,对于步骤s102,在进入低负载模式后,n个处理器核处理多个业务请求的方式可以为轮询模式。具体的,n个处理器核中,对于每个处理器核来说,均对应一个业务请求队列。处理器核可以调用线程在对应的业务请求队列中依次对业务请求队列中的业务请求进行处理。每个处理器通过轮询模式处理对应的业务请求队列中的业务请求是指处理器的线程按照预设的时间间隔周期性的去对应的业务请求队列中查看是否有业务请求需要处理,若有,按照次序依次对业务请求进行处理。

可以理解的,n个处理器核处理的这多个业务请求与步骤s101中用于确定处理器进入低负载模式的“运行中的多个业务请求”是不同的业务请求。

由于这n个处理器核中每个处理器核需要预留时间对业务请求队列进行轮询。可以根据需要进行轮询的时间间隔设置处理器核可以承担的负载p。该进行轮询的时间间隔越小,表明处理器核轮询业务请求队列的频率越大,处理器核可以承担的负载p越小。

n个处理器核使用轮询模式处理多个业务请求可以保证业务请求到达处理器之后可以迅速被处理,可以降低业务请求等待的时延,提升业务请求的处理效率。

可选的,在确定运行中的多个业务请求所需的处理器核的数量n之后,可以通过自适应算法来实现将原先在m个处理器核上分发业务请求调整为在n个处理器核上分发业务请求。通过自适应算法,可以实现无需手动设置分发业务请求的处理器核的范围,可以自动按需分配处理器核资源。

可选的,上述步骤s101可以是周期性的执行来实现动态检测处理器是否处于低负载模式。其中,检测周期越短,检测处理器是否处于低负载模式的状态越精确。但是检测周期越短,消耗在检测上的处理器资源越多,处理业务请求的处理器资源越少。因此,在具体业务场景中,检测处理器是否处于低负载模式的检测周期可以是根据是否处于低负载模式状态的精确度要求和处理业务请求的处理器资源要求来确定。

可选的,在m个处理器核中,除选取的n个处理器核之外的(n-m)个处理器核处理该业务请求的线程可以处于睡眠状态。除选取的n个处理器核之外的(n-m)个处理器核还可以用于其他任务,本申请实施例对此不作限制。在无需这除选取的n个处理器核之外的(n-m)个处理器核处理该业务请求时,(n-m)个处理器核处理该业务请求的线程可以进入睡眠状态释放处理器核资源,从而可以降低处理器核的损耗,节省处理器资源。

可选的,在业务调度装置检测到运行中的多个业务请求的并发度高于预设的并发度阈值,或者运行中的业务请求的负载高于预设的负载阈值时,表明对于这n个处理器核来说,业务请求的负载较高,可以重新进入高负载模式,即在m个处理器核上分发多个业务请求。

在检测到处理器进入高负载模式的情况下,可以根据处理器中所运行的业务请求的数量来增加用于处理业务请求的处理器核的数量,从而减少在高负载模式下,n个处理器核的线程无法及时处理运行的业务请求的情况,从而可以减少业务请求被处理所消耗的时间,可以减少整体业务处理的时延,提高业务请求处理的处理效率。将原先在n个处理器核上分发业务请求调整为在m个处理器核上分发业务请求,也可以是通过自适应算法来实现。

可选的,在检测到运行中的多个业务请求的并发度高于预设的并发度阈值,或者运行中的业务请求的负载高于预设的负载阈值时,可以重新计算运行中的多个业务请求所需的处理器核的数量l,l可以是大于n且小于等于m的整数。该过程中业务调度装置可以选择继续使用上述低负载模式下的n个处理器核来进行业务请求处理,同时可以唤醒(l-n)个处理器核与上述n个处理器核一起来进行业务请求处理。其中,l可以是和运行中的多个业务请求的并发度正相关,且和运行中的业务请求的负载正相关。这l个处理器核处理多个业务请求,也可以是通过轮询的方式来进行。将原先在n个处理器核上分发业务请求调整为在l个处理器核上分发业务请求,也可以是通过自适应算法实现的。

可选的,在业务调度装置检测到处理器处于无业务请求处理状态时,则m个处理器核中每个处理器核处理业务请求的线程进入睡眠状态。具体的,当在预设时间周期t1内,检测到运行中的多个业务请求的并发度低于一定阈值时,表明处理器处于无业务请求处理状态。在处理器接收到业务请求需要进行处理时,可以唤醒处理器核处理业务请求的线程来进行业务请求处理。该用来确定处理器进入无业务请求处理状态的第一阈值可以是根据cpu系统需求确定。

当处理器中没有业务请求需要处理时,m个处理器核的业务处理线程可以进入睡眠状态,等待有业务处理请求需要处理时重新唤醒为工作状态,可以避免对处理器资源无效占用,节省处理器资源。

上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。

请参阅图3,图3是本申请实施例提供的一种业务调度装置的结构示意图,如图3所示,该业务调度装置可以包含处理器301,处理器301可以包含m个处理器核,m个处理器核中每个处理器核可以调用线程处理业务请求,m为大于2的整数,所述业务调度装置还包括计算单元302和分发单元303,其中:

所述计算单元302,用于当所述处理器301进入低负载模式时,计算运行中的多个业务请求所需的处理器核的数量n,所述n为大于等于1的整数,并且n<m;

所述分发单元303,用于在n个所述处理器核上分发所述多个业务请求。

在一种可能的实施方式中,所述业务调度装置还包括:获取单元304,用于获取所述运行中的多个业务请求的并发度,以及所述运行中的多个业务请求的负载;

确定单元305,用于当所述并发度低于预设的并发度阈值,并且所述运行中的多个业务请求的负载低于预设的负载阈值时,确定所述处理器进入所述低负载模式。

在一种可能的实施方式中,所述运行中的多个业务请求所需的处理器核的数量n与所述并发度正相关,与所述运行中的多个业务请求的负载正相关。

在一种可能的实施方式中,所述处理器核上分发所述多个业务请求的方式为轮询模式。

在一种可能的实施方式中,在所述m个处理器核中,除所述n个处理器核之外的(n-m)个处理器核中处理所述多个业务请求的线程处于睡眠状态。

其中,计算单元302、分发单元303、获取单元304和确定单元305可以是处理器301来实现,或者处理器301调用存储器中的程序来实现。

在该实施例中,各单元的功能可以对应参照图2所示方法实施例的相应描述,这里不再赘述。

请参阅图4,图4是本申请实施例提供的另一种业务调度装置的结构示意图,如图4所示,该业务调度装置可以包含处理器401,处理器401可以包含m个处理器核,m个处理器核中每个处理器核可以调用线程处理业务请求,m为大于2的整数,所述业务调度装置还包括设置单元402,用于当所述处理器进入无业务请求处理状态时,将所述m个处理器核中处理业务请求的线程设定为睡眠状态。其中,设置单元402可以是处理器301来实现。

其中,图4所描述的业务调度装置和图3所描述的业务调度装置可以是同一实体设备实现的,则处理器401即为处理器301。在该实施例中,各单元的功能可以对应参照图2所示方法实施例的相应描述,这里不再赘述。

其中,图2和图3所描述的业务调度装置可以应用于硬盘阵列或者服务器中。

请参阅图5,图5是本申请实施例提供的又一种业务调度装置的结构示意图。本申请实施例的业务调度装置可以应用在硬盘阵列的控制器中,其中,这里的硬盘阵列指的是独立硬盘冗余阵列(redundantarraysofindependentdisks,raid)。硬盘阵列包括控制器和多个硬盘构成。控制器是硬盘阵列的“大脑”。如图5所示,该业务调度装置可以包括一个或多个处理器501、通信接口502和存储器503,业务调度装置还可以包含缓存505(cache),处理器501、通信接口502、存储器503和缓存505可通过总线或者其它方式连接,本申请实施例以通过总线504连接为例。其中:

处理器501可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessingunit,cpu)。处理器501可包含m个处理器核,m为大于2的整数,m个处理器核中每个处理器核可以调用线程处理业务请求。处理器501可能是一个中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本申请实施例的一个或多个集成电路。在处理器501中安装有操作系统和其他软件程序,不同的软件程序可以视作一个处理模块,具有不同的功能。例如,处理对硬盘的输入/输出(input/output,i/o)请求,对硬盘中的数据进行其他处理等等。

通信接口502可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与主机和硬盘进行通信。本申请实施例中,通信接口502具体可用于接收多个业务请求。

存储器503,用于存放程序11,存储器503可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个硬盘存储器。可以理解的是,存储器503可以为随机存储器(random-accessmemory,ram)、磁碟、硬盘、光盘、固态硬盘(solidstatedisk,ssd)或者非易失性存储器等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。

程序11可以包括程序代码,所述程序代码包括计算机操作指令。存储器503可用于存储程序11,以便于处理器501调用存储器503中存储的程序11以实现本申请实施例提供的业务调度方法,具体的,可以实现图2所描述的业务调度方法。

缓存505(cache)用于缓存从主机接收的数据或者从硬盘阵列读取的数据,以提高阵列的性能和可靠性。缓存505可以是ram、rom、闪存(flashmemory)或固态硬盘(solidstatedisk,ssd)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定。

需要说明的,图5所示的业务调度装置仅仅是本申请实施例的一种实现方式,实际应用中,业务调度装置还可以包括更多或更少的部件,这里不作限制。

另外,本实施例提供的业务调度装置还可以应用在服务器中,业务调度装置应用在服务器时,硬件结构与前述图5所描述的业务调度装置类似,这里不再赘述。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述信号处理装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solidstatedisk,ssd))等。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。

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