CN110178119A - 处理业务请求的方法、装置与存储*** - Google Patents
处理业务请求的方法、装置与存储*** Download PDFInfo
- Publication number
- CN110178119A CN110178119A CN201880005605.6A CN201880005605A CN110178119A CN 110178119 A CN110178119 A CN 110178119A CN 201880005605 A CN201880005605 A CN 201880005605A CN 110178119 A CN110178119 A CN 110178119A
- Authority
- CN
- China
- Prior art keywords
- processor core
- request
- core
- current generation
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种存储***中处理业务请求的方法,该存储***包含多个处理器核,其特征在于,包括:接收业务请求的当前阶段的请求,当前阶段的请求为业务请求的多个阶段的请求中的一个阶段的请求;确定执行当前阶段的请求的第一处理器核集合,第一处理器核集合为多个处理器核的一个处理器核子集;向第一处理器核集合负载最轻的处理器核发送当前阶段的请求。该方法能够保证处理器核之间的负载均衡,降低处理业务请求的时延。
Description
技术领域
本申请涉及信息技术领域,并且更具体地,涉及处理业务请求的方法、装置与处理器。
背景技术
在存储***中,阵列控制器的中央处理器(central processing unit,CPU)是影响***性能的关键因素,通常CPU包括的处理器核越多,存储***的性能就越高。
然而,在阵列控制器包含多处理器核的存储***中,随着处理器核数的增多,调度处理器核处理业务请求时会出现处理器核之间的负载不均衡问题。
现在技术,根据处理器核上待处理的业务请求个数来估计处理器核的负载,最终将业务请求发送至负载最小的处理器核。这种方法虽然能够改善处理器核之间的负载不均衡问题,但是处理业务请求的时间复杂度会随着处理器核数的增多而线性扩展,导致处理业务请求的时延的不可控。
发明内容
第一方面,提供了一种存储***中处理业务请求的方法,所述存储***包含多个处理器核,包括:接收业务请求的当前阶段的请求,所述当前阶段的请求为所述业务请求的多个阶段的请求中的一个阶段的请求;确定执行所述当前阶段的请求的第一处理器核集合,所述第一处理器核集合为所述多个处理器核的一个处理器核子集;向所述第一处理器核集合负载最轻的处理器核发送所述当前阶段的请求。
通过将待处理的业务请求划分为多个阶段的请求来执行,为每一阶段的请求分配一定数量的处理器核(例如,处理器核集合),并将每一阶段的请求均发送至为该阶段的请求分配的处理器核集合中的负载最轻的处理器核,相对于将业务请求发送至存储***中多个处理器核当中负载最轻的处理器核,本申请的处理业务请求的方法能够保证处理器核之间的负载均衡,为业务请求每个阶段的请求确定处理器核集合,在处理器集合范围内调度当前阶段的请求,相对于直接选择存储***中负载最轻的处理器核,考虑了各阶段的请求与影响处理器核处理各阶段的请求的时延的相关性,降低处理业务请求的时延。
可选地,所述确定执行所述当前阶段的请求的第一处理器核集合,包括:查询绑核关系,确定用于执行所述当前阶段的请求的所述第一处理器核集合,所述绑核关系用于指示所述当前阶段的请求与所述第一处理器核集合之间的关联关系。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:根据所述第一处理器核集合,重新确定执行所述当前阶段的请求的处理器核的数量;根据所述重新确定的执行所述当前阶段的请求的处理器核的数量,在所述多个处理器核中为所述当前阶段的请求分配满足所述数量的第二处理器核集合;根据所述第二处理器核集合,生成新的绑核关系,所述新的绑核关系用于指示所述当前阶段的请求与所述第二处理器核集合之间的关联关系。
可选地,所述根据所述第一处理器核集合,重新确定执行所述当前阶段的请求的处理器核的数量,包括:确定所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率;根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,重新确定执行所述当前阶段的请求的处理器核的数量。
通过周期性地监控存储***中的处理器核的利用率,并根据为任一阶段的请求分配的处理器核的利用率的变化情况,为相应阶段的请求重新分配处理器核,从而能够根据处理器核的利用率的变化情况,周期性地调整为相应阶段的请求分配的处理器核,进而改善处理器核之间的负载不均衡的现象。
可选地,所述根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,重新确定执行所述当前阶段的请求的处理器核的数量,包括:根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,基于以下关系式重新确定执行所述当前阶段的请求的处理器核的数量:
N=UP/Uave
其中,N为重新确定的执行所述当前阶段的请求的处理器核的数量,UP为所述第一处理器核集合中的处理器核的利用率总和,Uave为所述多个处理器核的平均利用率。
结合第一方面,在第一方面的某些实现方式中,所述在所述多个处理器核中为所述当前阶段的请求分配满足所述数量的第二处理器核集合,包括:生成多组分配结果,每组分配结果中包括为每一个阶段的请求重新分配的满足相应数量的处理器核集合;针对所述多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,所述路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行所述相邻阶段的请求的处理器核间的平均拓扑距离,M为所述业务请求的多个阶段的请求的数量;根据所述多个路径长度中的最短路径长度对应的一组分配结果,为所述当前阶段的请求分配满足所述数量的第二处理器核集合。
根据确定的为各个阶段的请求分配的处理器核的数量,生成多组处理器核的分配结果,针对该多组分配结果确定多个路径长度,通过为各个阶段的请求分配处理器核时考虑处理器核间的拓扑距离,将多个路径长度中的最短路径长度对应的分配结果确定为最终的处理器核分配结果,从而保证处理器核之间的负载均衡,降低处理业务请求的时延。
结合第一方面,在第一方面的某些实现方式中,所述第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,所述向所述第一处理器核集合中负载最轻的处理器核发送所述当前阶段的请求,包括:根据滑动窗口长度w与滑动步长d,在所述K个处理器核中为所述当前阶段的请求确定调度子区域,所述调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;向所述w个处理器核中负载最轻的处理器核发送所述当前阶段的请求。
在确定执行任一阶段的请求的处理器核时,通过引入滑动窗口机制,缩小搜索负载最轻的处理器核的搜索范围,使调度子区域中负载最轻的处理器核执行相应阶段的请求,保证处理器核之间的负载均衡,进一步降低处理业务请求的时延。
结合第一方面,在第一方面的某些实现方式中,所述d与所述K互为质数。
引入滑动窗口机制后,当存在多个阶段的请求与同一处理器核集合之间存在绑定关系时,并且当该处理器核集合中的每个处理器核的负载相同时,此时,在依次处理该多个阶段的请求时,为了保证处理器核间的负载均衡,需要保证负载相同(即,待处理的请求队列的个数相同)的处理器核被选中用于执行请求的概率相同,即,需要保证每个处理器核作为滑动窗口内的搜索起始点的概率相同,当该处理器核集合中的处理器核的个数K与滑动步长d互为质数时,能够保证每个处理器核作为滑动窗口内的搜索起始点的概率相同。
第二方面,提供了一种处理业务请求的配置方法,包括;为业务请求的第一阶段的请求配置第一处理器核集合,所述第一处理器核集合用于执行所述第一阶段的请求;配置第一规则,所述第一规则指示向所述第一处理器核集合中负载最轻的处理器核发送所述第一阶段的请求。
通过为业务请求的每一阶段的请求分配一定数量的处理器核(例如,处理器核集合),并将每一阶段的请求均发送至为该阶段的请求分配的处理器核集合中的负载最轻的处理器核,相对于将业务请求发送至存储***中多个处理器核当中负载最轻的处理器核,本申请的处理业务请求的配置方法能够使得处理业务请求时,保证处理器核之间的负载均衡,考虑了各阶段的请求与影响处理器核处理各阶段的请求的时延的相关性,降低处理业务请求的时延。
结合第二方面,在第二方面的某些实现方式中,所述方法还包括:为业务请求的第二阶段的请求配置第二处理器核集合,所述第二处理器核集合用于执行所述第二阶段的请求;配置第二规则,所述第二规则指示向所述第二处理器核集合中负载最轻的处理器核发送所述第二阶段的请求。
第三方面,提供一种处理业务请求的装置,所述装置配置于存储***中,所述装置用于执行上述第一方面或第二方面的任一可能的实现方式中的方法。具体地,所述装置可以包括用于执行第一方面或第二方面的任一可能的实现方式中的方法的模块。
第四方面,提供一种存储***,所述存储***包括多个处理器核与存储器;存储器,用于存储计算机指令;所述多个处理器核中的一个或多个处理器核用于执行所述存储器中存储的计算机指令,当所述存储器中的计算机指令被执行时,所述一个或多个处理器核用于执行上述第一方面或第二方面的任一可能的实现方式中的方法。
第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行第一方面或第二方面的任一可能的实现方式中的方法。
第六方面,提供一种包含计算机指令的计算机程序产品,当该计算机指令在计算机上运行时,使得计算机执行第一方面或第二方面的任一可能的实现方式中的方法。
附图说明
图1是本发明实施例的存储阵列架构示意图。
图2是本发明实施例的存储阵列的控制器的示意图。
图3是本发明实施例的分布式块存储***的示意图。
图4是分布式块存储***的服务器的示意性结构框图。
图5是本发明实施例的处理器的示意性框图。
图6是本发明实施例提供的存储***中处理业务请求的方法的示意性流程图。
图7是本发明实施例提供的基于滑动窗口机制调度处理器核的原理性示意图。
图8是本发明实施例的NUMA架构下共享不同层次的内存或cache的逻辑核之间的拓扑距离示意图。
图9位本发明实施例提供的处理业务请求的配置方法的示意性流程图。
图10为本发明实施例提供的处理业务请求的装置的示意性框图。
图11为本发明实施例提供的存储***的示意性框图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行描述。
首先对适用于本发明实施例的存储***进行介绍。
如图1所示,本发明实施例中的存储***,可以为存储阵列(如华为的 18000系列,V3系列)。存储阵列包括存储控制器101和多块硬盘,其中,硬盘包含固态硬盘(solid state disk,SSD)、机械硬盘或者混合硬盘等。机械硬盘如HDD(hard diskdrive)。如图2所示,控制器101包含中央处理单元(central processing unit,CPU)201、存储器202和接口203,存储器202中存储计算机指令,CPU201包括多个处理器核(图2中未示出),CPU201执行存储器202中的计算机指令对存储***进行管理及数据访问操作。另外,为节省CPU201的计算资源,现场可编程门阵列(field programmable gate array,FPGA)或其他硬件也可以用于执行本发明实施例中CPU201全部操作,或者,FPGA或其他硬件与CPU201分别用于执行本发明实施例CPU201的操作。为方便描述,本发明实施例将CPU201与内存202称为处理器、或将FPGA及其他替代CPU201的硬件称为处理器,或将FPGA及其他替代CPU201的硬件与CPU201的组合统称为处理器,处理器与接口203通信。接口203可以为网络接口卡(networking interface card,NIC)、主机总线适配器(host bus adaptor,HBA)等。
如图1和图2所描述的存储阵列,CPU201用于处理业务请求,如接收主机或客户端发送的业务请求,使用本发明实施例提供的处理业务请求的方法处理该业务请求。
进一步的,本发明实施例的存储***还可以为分布式文件存储***(如华为的9000系列),分布式块存储***(如华为的系列)等。以华为的系列为例。示例性的如图3所示,分布式块存储***包括多台服务器,如服务器1、服务器2、服务器3、服务器4、服务器5和服务器6,服务器间通过无限带宽(infiniband)技术或以太网络等互相通信。在实际应用当中,分布式块存储***中服务器的数量可以根据实际需求增加,本发明实施例对此不作限定。
分布式块存储***的服务器中包含如图4所示的结构。如图4所示,分布式块存储***中的每台服务器包含中央处理单元(central processing unit,CPU)401、内存402、接口403、硬盘1、硬盘2和硬盘3,内存402中存储计算机指令,CPU401包括多个处理器核(图4中未示出)、CPU401执行内存402中的计算机指令执行相应的操作。接口403可以为硬件接口,如网络接口卡(network interface card,NIC)或主机总线适配器(host bus adaptor,HBA)等,也可以为程序接口模块等。硬盘包含固态硬盘(solid state disk,SSD)、机械硬盘或者混合硬盘。机械硬盘如HDD(hard disk drive)。另外,为节省CPU401的计算资原,现场可编程门阵列(field programmable gate array,FPGA)或其他硬件也可以代替CPU401执行上述相应的操作,或者,FPGA或其他硬件与CPU401共同执行上述相应的操作。为方便描述,本发明实施例将CPU401与内存402称为处理器、或将FPGA及其他替代CPU401的硬件称为处理器,或将FPGA及其他替代CPU401的硬件与CPU401的组合统称为处理器。接口403可以为网络接口卡(networking interface card,NIC)、主机总线适配器(host bus adaptor,HBA)等。
如图3和图4所描述的分布式块存储***,CPU401用于处理业务请求,如接收主机或客户端发送的业务请求,使用本发明实施例提供的处理业务请求的方法处理该业务请求。
下面对处理业务请求的一般方法进行简单介绍:
在处理业务请求时,根据包含多个处理器核的存储***中的每个处理器核上待处理的业务请求的数量来估计处理器核的负载情况,最终将业务请求发送至存储***中负载最轻(例如,待处理的业务请求的数量最少)的处理器核。
这种方法虽然能够改善处理器核之间的负载不均衡的现象,但是处理业务请求的时间复杂度会随着处理器核数的增多而线性扩展,导致对处理业务请求的时延的不可控。
针对上述问题,本发明实施例提出一种处理业务请求的方法,待处理的业务请求可以划分为多个阶段的请求执行,为每一阶段的请求分配一定数量的处理器核(例如,处理器核集合),并将每一阶段的请求均发送至为该阶段的请求分配的处理器核集合中的负载最轻的处理器核,相对于将业务请求发送至存储***中所有处理器核当中负载最轻的处理器核。本发明实施例中,基于CPU(如处理器核)访问各个层次的内存或cache的访问时延、访问距离、处理器之间的连接关系或总线类型等影响时延的因素,为每一个阶段的请求分配处理器核集合。本发明实施例的处理业务请求的方法能够保证处理器核之间的负载均衡,在处理器核集合范围内调度当前阶段的请求,相对于直接选择存储***中负载最轻的处理器核,考虑了各阶段请求与处理器核处理各阶段的请求的时延的相关性,降低处理业务请求的时延。示例性的,访问请求可以分为两个阶段:等待资源阶段和使用资源阶段。其中,等待资源阶段的请求一般需要请求特殊的资源,如磁盘、内存、文件等,当资源被上一个请求占用没有被释放时,等待资源阶段的请求就会被阻塞,直到能够使用这个资源;使用资源阶段的请求是真正进行数据访问阶段的请求。再例如,以小型计算机***接口(computersystem interface,SCSI)子***为例,SCSI子***是一种分层的架构,共分为三层。顶部的那层,即是上层叫做较高层,代表的是操作***内核访问SCSI协议的设备和主要设备类型的驱动器的最高接口。接下来的是中间层,也称为公共层或统一层,在这一层包含SCSI堆栈的较高层和较低层的一些公共服务。最后是较低层,代表的是适用于SCSI协议的设备的物理接口的实际驱动器。基于SCSI的访问请求也相应划分为3个阶段的请求。
在对本发明实施例提供的存储***中处理业务请求的方法进行介绍之前,首先对本发明实施例提供的处理器(例如,图2中的CPU201与图4中的CPU401)进行介绍。
如图5所示,本发明实施例中的处理器包括多个处理器核(例如,处理器核0~处理器核S,S≥2),多个处理器核中的一个处理器核中包括负载均衡模块501与绑核关系计算模块502,其他处理器核中包括调度模块503。其中,负载均衡模块501用于为业务请求的每一阶段的请求计算需要绑定的处理器核的数量;绑核关系计算模块502用于为业务请求的每一阶段的请求分配满足相应数量的处理器核,进而生成绑核关系,该绑核关系指示业务请求的一个阶段的请求与一个处理该阶段请求的处理器核集合的对应关系;调度模块503用于保存该绑核关系,在接收到某一阶段的业务请求时,查询该绑核关系,确定用于执行该阶段的请求的处理核集合,并将该阶段的请求发送至该处理器核集合中负载最轻的处理器核,由该处理器核执行该阶段的请求。
此外,在部署有调度模块503的处理器核中,至少有一个处理器核中部署有监听模块504,该监听模块504用于监听来自主机或客户端的业务请求,在监听到来自主机或客户端的业务请求时,将该业务请求发送至处理器核中的调度模块503。
需要说明的是,上述仅以负载均衡模块501与绑核关系计算模块502部署在处理器核S中为例对本发明实施例中的处理器进行说明,但本发明实施例并不限定于此,负载均衡模块501与绑核关系计算模块502可以部署在处理器核0~处理器核S中的任意一个处理器核中,并且负载均衡模块501与绑核关系计算模块502可以部署在同一个处理器核中,也可以部署在不同的处理器核中。
下面对本发明实施例提供的存储***中处理业务请求的方法600进行详细说明。图6示出了存储***中处理业务请求的方法的示意性流程图,包括步骤601至603。
601,接收业务请求的当前阶段的请求,该当前阶段的请求为该业务请求的多个阶段的请求中的一个阶段的请求。需要说明的是,在本发明实施例中,业务请求的处理分为多个阶段进行,并为每一阶段分配了一个处理器核集合,由相应处理器核集合中负载最轻的处理器核处理业务请求的相应阶段的请求。业务请求的当前待处理的阶段的请求称为当前阶段的请求。
具体地,例如,当处理器核中的监听模块504(例如,处理器核1中的监听模块504)监听到来自主机或客户端的该业务请求时,当前阶段的业务请求是业务请求的多个阶段的请求中的第一个阶段的请求。
处理器核1中的监听模块504将该当前阶段的请求发送至处理器核1中的调度模块503。
602,确定执行该当前阶段的请求的第一处理器核集合,该第一处理器核集合为该多个处理器核的一个处理器核子集。
具体地,处理器核1中的调度模块503为接收到的当前阶段的请求确定执行该当前阶段的请求的处理器核集合(例如,第一处理器核集合)。
例如,调度模块503可以根据当前阶段的请求的具体类型,确定执行当前阶段的请求的第一处理器核集合,第一处理器核集合是存储***中的多个处理器核的一个处理器核子集。
还例如,确定执行该当前阶段的请求的第一处理器核集合,包括:查询绑核关系,确定用于执行该当前阶段的请求的该第一处理器核集合,该绑核关系用于指示该当前阶段的请求与该第一处理器核集合之间的关联关系。
具体地,处理器核1中的调度模块503可以查询绑核关系,该绑核关系中指示了为该业务请求的每一阶段的请求分配的处理器核集合,每个处理器核集合中包括多个处理器核,处理器核1中的调度模块503根据该绑核关系,确定执行当前阶段的请求的第一处理器核集合。
例如,处理器核1中的调度模块503查询该绑核关系,确定包含处理器核1、处理器核2、处理器核4、处理器核7与处理器核9的处理器核集合与当前阶段的请求之间存在关联关系,进而将该处理器核集合确定为执行当前阶段的请求的第一处理器核集合。
603,向该第一处理器核集合负载最轻的处理器核发送该当前阶段的请求。
具体地,在确定了用于执行当前阶段的请求的第一处理器核集合后,处理器核1中的调度模块503将该业务请求发送至第一处理器核集合中的负载最轻的处理器核,由该处理器核执行当前阶段的请求。
例如,处理器核1中的调度模块503确定第一处理器核集合中的处理器核1、处理器核2、处理器核4、处理器核7与处理器核9中负载最轻的处理器核为处理器核7,则处理器核1中的调度模块503将业务请求发送至处理器核7,由处理器核7执行当前阶段的请求。
当处理器核7完成对该当前阶段的请求的执行后,该业务请求便进入下一执行阶段,该处理器核7中的调度模块503根据保存的绑核关系,确定用于执行业务请求的下一阶段的请求的处理器核集合,并将该下一阶段的请求发送至该处理器核集合中的负载最轻的处理器核,由该处理器核执行该下一阶段的请求。
依次重复上述操作,直至最终完成对该业务请求的处理。
通过将待处理的业务请求划分为多个阶段执行,为每一阶段的请求分配一定数量的处理器核(例如,处理器核集合),并将每一阶段的请求均发送至为该阶段的请求分配的处理器核集合中的负载最轻的处理器核,相对于将业务请求发送至存储***中多个处理器核当中负载最轻的处理器核,本发明实施例的处理业务请求的方法能够保证处理器核之间的负载均衡,为业务请求每个阶段的请求确定处理器核集合,在处理器集合范围内调度当前阶段的请求,相对于直接选择存储***中负载最轻的处理器核,考虑了各阶段的请求与影响处理器核处理各阶段的请求的时延的相关性,降低处理业务请求的时延。
可选地,该第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,该向该第一处理器核集合中负载最轻的处理器核发送该当前阶段的请求,包括:根据滑动窗口长度w与滑动步长d,在该K个处理器核中为该当前阶段的请求确定调度子区域,该调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;向该w个处理器核中负载最轻的处理器核发送该当前阶段的请求。
具体地,调度模块503在确定了用于执行当前阶段的请求的第一处理器核集合后,可以将当前阶段的请求发送至该第一处理器核集合中的负载最轻的处理器核,由该处理器核执行当前阶段的请求;或者,还可以基于滑动窗口机制确定执行该当前阶段的请求的处理器核。
调度模块503在确定用于执行当前阶段的请求的第一处理器核集合后,可以根据滑动窗口长度w与滑动步长d,在根据绑核关系确定的第一处理器核集合中为该当前阶段的请求确定调度子区域,从该调度子区域包括的处理器核中确定负载最轻的处理器核,将该业务请求发送至该调度子区域中负载最轻的处理器核。
例如,调度模块503根据绑核关系确定的用于执行当前阶段的请求的第一处理器核集合中的处理器核为处理器核1、处理器核3、处理器核4、处理器核5、处理器核8、处理器核9与处理器核10(即,K=7)。例如,w=3,d=2,则调度模块503为当前阶段的请求确定的调度子区域如图7所示,从图7中可以看出,调度子区域中包括的处理器核为处理器核1、处理器核3、处理器核4,则调度模块503将当前阶段的请求发送至处理器核1、处理器核3、处理器核4中负载最轻的处理器核,由该负载最轻的处理器核执行该当前阶段的请求。
当该包含处理器核1、处理器核3、处理器核4、处理器核5、处理器核8、处理器核9与处理器核10的处理器集合还用于处理该当前阶段的请求之后的其他业务请求的某一阶段的请求时,则该其他业务请求的某一阶段的请求的调度子区域是将滑动窗口向后滑动两个处理器核,由处理器核4、处理器核5、处理器核8形成的子区域,调度模块503将该其他业务请求的某一阶段的请求发送至处理器核4、处理器核5、处理器核8中负载最轻的处理器核,由该处理器核执行该其他业务请求的某一阶段的请求。
在确定执行任一阶段的请求的处理器核时,通过引入滑动窗口机制,缩小搜索负载最轻的处理器核的搜索范围,使调度子区域中负载最轻的处理器核执行相应阶段的请求,本发明实施例的处理业务请求的方法能够保证处理器核之间的负载均衡,为业务请求每个阶段的请求确定处理器核集合,在处理器集合范围内调度当前阶段的请求,相对于直接选择存储***中负载最轻的处理器核,考虑了各阶段的请求与影响处理器核处理各阶段的请求的时延的相关性,进一步降低处理业务请求的时延。
引入滑动窗口机制后,当存在多个阶段的请求与同一处理器核集合之间存在绑定关系时,并且当该处理器核集合中的每个处理器核的负载相同时,此时,在依次处理该多个阶段的请求时,为了保证处理器核间的负载均衡,需要保证负载相同(即,待处理的请求队列的个数相同)的处理器核被选中用于执行请求的概率相同,即,需要保证每个处理器核作为滑动窗口内的搜索起始点的概率相同,当该处理器核集合中的处理器核的个数K与滑动步长d互为质数时,能够保证每个处理器核作为滑动窗口内的搜索起始点的概率相同。
需要说明的是,在该存储***刚开始运行时,该绑核关系可以是预先配置好的,后面由处理器核中的绑核关系计算模块502对该绑核关系进行更新,即生成新的绑核关系。
下面对本发明实施例提供的生成新的绑核关系的方法进行详细说明。
作为示例而非限定,该方法还包括:根据该第一处理器核集合,重新确定执行该当前阶段的请求的处理器核的数量;根据该重新确定的执行该当前阶段的请求的处理器核的数量,在该多个处理器核中为该当前阶段的请求分配满足该数量的第二处理器核集合;根据该第二处理器核集合,生成新的绑核关系,该新的绑核关系用于指示该当前阶段的请求与该第二处理器核集合之间的关联关系。
具体地,随着存储***的运行,处理器核S中的负载均衡模块501针对业务请求的多个阶段的请求,周期性地确定用于执行每一阶段的请求的处理器核集合中的处理器核的数量,将确定的用于执行每一阶段的请求的处理器核集合中的处理器核的数量提供给绑核关系计算模块502,绑核关系计算模块502根据负载均衡模块501提供的重新确定的用于执行每一阶段的请求的处理器核集合中的处理器核的数量,为每一阶段的请求重新分配满足相应数量的处理器核,并根据为每一阶段的请求重新分配满足相应数量的处理器核,周期性的生成新的绑核关系。
以下以负载均衡模块501重新确定用于执行当前阶段的请求的处理器核的数量的方法为例,对重新确定用于执行每一阶段的请求的处理器核的数量的方法进行说明。
作为示例而非限定,该根据该第一处理器核集合,重新确定执行该当前阶段的请求的处理器核的数量,包括:确定该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率;根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,重新确定执行该当前阶段的请求的处理器核的数量。
具体地,负载均衡模块501实时监控存储***中的每个处理器核的利用率,其中,处理器核的利用率为处理器核的运行时间与运行时间加空闲时间之和的比值,根据处理器核的利用率的变化情况,重新确定用于执行当前阶段的请求的处理器核集合中的处理器核的数量。
例如,在当前监控周期内,当前阶段的请求绑定的第一处理器核集合表示为P,第一处理器核集合的利用率用UP表示,则第一处理器核集合的利用率UP等于第一处理器核集合中的处理器核在当前周期内的利用率的总和,表示为:
UP=∑Uj,j∈P (1)
其中,Uj表示第一处理器核集合中的任一处理器核在当前周期内的利用率。
将存储***中的多个处理器核在当前周期内的平均利用率表示为Uave,则调度模块503根据UP与Uave重新确定用于执行当前阶段的请求的处理器核集合中的处理器核的数量。
作为示例而非限定,该根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,重新确定执行该当前阶段的请求的处理器核的数量,包括:根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,基于以下关系式重新确定执行该当前阶段的请求的处理器核的数量:
N=UP/Uave (2)
其中,N为重新确定的执行该当前阶段的请求的处理器核的数量,UP为该第一处理器核集合中的处理器核的利用率总和,Uave为该多个处理器核的平均利用率。
当负载均衡模块501在当前周期内重新确定出用于执行该当前阶段的请求的处理器核的数量N后,将确定的用于执行该当前阶段的请求的处理器核集合中的处理器核的数量提供给绑核关系计算模块502,由绑核关系计算模块502在下一周期的起始时刻为当前阶段的请求重新分配满足上述数量N的处理器核集合(例如,第二处理器核集合)。
例如,当前周期内用于执行当前阶段的请求的处理器核的数量为8,而当负载均衡模块501在当前周期对用于执行当前阶段的请求的处理器核的数量重新确定后,例如,负载均衡模块501在当前周期重新确定的用于执行当前阶段的请求的处理器核的数量为6,负载均衡模块501将为当前阶段的请求重新确定的处理器核的数量6提供给绑核关系计算模块502,则绑核关系计算模块502可以在下一周期的起始时刻将绑核关系中保存的用于执行当前阶段的请求的8个处理器核中删除两个处理器核,即生成新的绑核关系。
再例如,负载均衡模块501将为当前阶段的请求重新确定的处理器核的数量6提供给绑核关系计算模块502,此时绑核关系计算模块502不去从绑核关系中保存的用于执行当前阶段的请求的8个处理器核中删除两个处理器核,而是在存储***中为当前阶段的请求重新分配6个处理器核,并在下一周期的起始时刻将绑核关系中原来为当前阶段的请求分配的8个处理器核替换为重新分配的该6个处理器核,即生成新的绑核关系。
通过周期性地监控存储***中的处理器核的利用率,并根据为任一阶段的请求分配的处理器核的利用率的变化情况,为相应阶段的请求重新分配处理器核,从而能够根据处理器核的利用率的变化情况,周期性地调整为相应阶段的请求分配的处理器核,进而改善处理器核之间的负载不均衡的现象。
下面以绑核关系计算模块502在该存储***中为该当前阶段的请求分配满足该数量的处理器核的方法为例,对绑核关系计算模块502在该存储***中为该各个阶段的请求分配满足相应数量的处理器核的方法进行详细说明。
在存储***中,多个处理器核通常会共享不同层次的内存或缓存(cache),不同层次的内存或缓存可以包括L1cache、L2cache、L3cache以及本地内存,当处理器核共享不同层次的内存或cache时,处理器核间的拓扑距离也是不同的。
在非统一内存访问架构(non uniform memory access architecture,NUMA)中,每个处理器核可以访问远端节点中的本地内存(以下简称为“远端内存”),当采用超线程通信时,每个处理器核可以被抽象为多个逻辑核。例如,每个处理器核被抽象为两个逻辑核,该两个逻辑核分别为逻辑核0与逻辑核1,如图8所示。
图8示出了NUMA架构下共享不同层次的内存或cache的逻辑核之间的拓扑距离示意图,可以看出,在NUMA架构下,存在节点0与节点1,节点0中的逻辑核可以与节点1中的逻辑核共享节点1中的本地内存,节点1中的本地内存对节点0而言是远端内存。
从图8中可以看出,节点0中共享L1cache的两个逻辑核之间的拓扑距离为D1,共享L2cache的两个逻辑核之间的拓扑距离为D2,共享L3cache的两个逻辑核之间的拓扑距离为D3,共享本地内存的两个逻辑核之间的拓扑距离为D4,节点0中的逻辑核与节点1中的逻辑核共享节点1中的本地内存时,两个逻辑核之间的拓扑距离为D5。
根据Intel发布的各版本的CPU手册,可以获取到CPU访问各个层次的内存或cache的访问时延数据。以Xeon E5-2658v2型号的CPU为例,访问时延如表1所示。
表1
共享的内存或缓存 | 访问时延 |
L<sub>1</sub> cache | 1.3ns |
L<sub>2</sub> cache | 3.7ns |
L<sub>3</sub> cache | 12.8ns |
本地内存 | 56.5ns |
通过参考CPU访问不同层次的内存或cache的时延的比例关系,可以量化共享不同层次的内存或cache两个逻辑核之间的拓扑距离。假设共享L1cache的两个逻辑核之间的拓扑距离D1=1,则根据CPU访问各个层次的内存或cache的访问时延,可以得到共享不同层次的内存或cache的两个逻辑核之间的拓扑距离,如表2所示。
在NUMA架构中,访问本地内存和远端内存的访问时延比大约是8:12,因此,可以计算出节点之间共享远端内存的逻辑核之间的拓扑距离为64。
表2
共享的内存或缓存 | 两个逻辑核之间的拓扑距离 |
L<sub>1</sub> cache | 1 |
L<sub>2</sub> cache | 3 |
L<sub>3</sub> cache | 10 |
本地内存 | 43 |
远端内存 | 64 |
下面以存储***中的CPU满足图8所示的拓扑结构,以为当前阶段的请求分配满足相应数量的逻辑核为例,对本发明实施例的绑核关系计算模块502在存储***中为各个阶段的请求分配满足相应数量的处理器核的方法进行详细说明。其中,图8中的节点0与节点1在NUMA架构中,并且之间通过超线程通信。
作为示例而非限定,在多个处理器中为该当前阶段的请求分配满足该数量的第二处理器核集合,包括:生成多组分配结果,每组分配结果中包括为每一个阶段的请求分配的满足相应数量的处理器核集合;针对该多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,该路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行该相邻阶段的请求的处理器核间的平均拓扑距离,M为该业务请求的多个阶段的请求的数量;其中,通信量可以表示处理器核间的交互次数。
根据该多个路径长度中的最短路径长度对应的一组分配结果,为该当前阶段的请求分配满足该数量的处理器核。
具体地,在图8所示的CPU拓扑结构中,当采用超线程通信时,每个处理器核被抽象为逻辑核0与逻辑核1,16个处理器核被抽象为32个逻辑核。
假设该业务请求需要分为3个阶段的请求进行处理,该3个阶段的请求分别记为M0、M1与M2,例如,通过上述的确定用于执行当前阶段的请求的处理器核的数量的方法,在当前周期内分别确定用于执行M0、M1与M2的逻辑核的数量。其中,确定用于执行M0的逻辑核的数量为8,确定用于执行M1的逻辑核的数量为8,确定用于执行M2的逻辑核的数量为16。
绑核关系计算模块502根据为M0、M1与M2确定的逻辑核的数量,生成多组分配结果,每组分配结果中包括为每一阶段的请求分配的满足相应数量的逻辑核。
例如,分配结果1为:将节点0中的逻辑核0~7分配给M0,将节点0的逻辑核8~15分配给M1,将节点1的逻辑核0~15分配给M2;
分配结果2为:将节点0中的逻辑核0~3与节点1中的逻辑核0~3分配给M0,将节点0中的逻辑核4~7与节点1中的逻辑核4~7分配给M1,将节点0中的逻辑核8~15与节点1中的逻辑核8~15分配给M2。
针对分配结果1,使用式(3)计算路径长度,其中,将执行M0与M1的逻辑核之间的平均拓扑距离记为d0,1,将执行M1与M2时逻辑核之间的平均拓扑距离记为d1,2,则d0,1=D4,d1,2=D5,将执行M0与M1时逻辑核之间交互产生的通信量记为c0,1,将执行M1与M2时逻辑核之间交互产生的通信量记为c1,2,则分配结果1对应的路径长度L1满足:
L1=c0,1×D4+c1,2×D5 (4)
由表2得知,D3=10,D4=43,D5=64,则L1=c0,1×43+c1,2×64。
针对分配结果2,使用式(3)计算路径长度,其中,将执行M0与M1时逻辑核之间的平均拓扑距离记为d0,1,将执行M1与M2时逻辑核之间的平均拓扑距离记为d1,2,则d0,1=D3×0.5+D5×0.5,d1,2=D4×0.5+D5×0.5,将执行M0与M1时逻辑核之间交互产生的通信量记为c0,1,将执行M1与M2时逻辑核之间交互产生的通信量记为c1,2,则分配结果2对应的路径长度L2满足:
L2=c0,1×(D3×0.5+D5×0.5)+c0,2×(D4×0.5+D5×0.5) (5)
由表2得知,D3=10,D4=43,D5=64,则L2=c0,1×37+c1,2×53.5。
可以看出,相对于分配结果1,分配结果2对应的路径长度较短,因此,绑核关系计算模块502将将节点0中的逻辑核0~3与节点1中的逻辑核0~3分配给M0,将节点0中的逻辑核4~7与节点1中的逻辑核4~7分配给M1,将节点0中的逻辑核8~15与节点1中的逻辑核8~15分配给M2,并在下一周期的起始时刻将绑核关系中原来为该业务请求的各个阶段的请求分配的处理器核替换为重新分配的处理器核。
根据上面实施例生成的多组处理器核的分配结果,针对该多组分配结果确定多个路径长度,通过为业务模块分配处理器核时考虑处理器核间的拓扑距离,并将多个路径长度中的最短路径长度对应的分配结果确定为最终的处理器核分配结果,从而保证处理器核之间的负载均衡,为业务请求每个阶段的请求确定处理器核集合,在处理器集合范围内调度当前阶段的请求,相对于直接选择存储***中负载最轻的处理器核,考虑了各阶段的请求与影响处理器核处理各阶段的请求的时延的相关性,降低处理业务请求的时延。
需要说明的是,上述仅列举两种逻辑核的分配结果仅是为了说明问题所做的示例性说明,并不对本发明实施例构成任何限定,实际应用中可以随机生成多中分配结果,并按照该多组分配结果中与最短路径长度对应的分配结果为各个阶段的请求分配逻辑核。示例性的,本发明实施例中,还可以基于处理器之间的连接关系或总线类型等影响时延的因素,为每一个阶段的请求分配处理器核集合。本发明实施例对此不作限定。
下面对本发明实施例提供的处理业务请求的配置方法700进行详细说明。图9示出了处理业务请求的配置方法的示意性流程图。
701,为业务请求的第一阶段的请求配置第一处理器核集合,该第一处理器核集合用于执行该第一阶段的请求。
具体地,业务请求的处理分为多个阶段进行,多个阶段对应多个阶段的请求,例如,该多个阶段的请求包括第一阶段的请求,为该第一阶段的请求配置一个处理器核集合(例如,第一处理器核集合),通过该第一处理器核集合来处理第一阶段的请求。
702,配置第一规则,该第一规则指示向该第一处理器核集合中负载最轻的处理器核发送该第一阶段的请求。
具体地,可以配置第一规则,该第一规则可以指示为该第一阶段的请求配置的第一处理器核集合中的负载最轻的处理器核执行该第一阶段的请求。
可选地,该方法还包括:
703,为业务请求的第二阶段的请求配置第二处理器核集合,该第二处理器核集合用于执行该第二阶段的请求。
具体地,例如,该业务请求还包括第二阶段的请求,该第二阶段的请求可以是该第一阶段的请求之后的一个阶段的请求,为该第二阶段的请求配置一个处理器核集合(例如,第二处理器核集合),通过该第二处理器核集合来处理第二阶段内的请求。
704,配置第二规则,该第二规则指示向该第二处理器核集合中负载最轻的处理器核发送该第二阶段的请求。
具体地,可以配置第二规则,该第二规则可以指示为该第二阶段的请求配置的第二处理器核集合中的负载最轻的处理器核执行该第二阶段的请求。
关于如何为第一阶段的请求与第二阶段的请求配置相应的处理器核集合,请参考方法600中的相关描述,为了简洁,此处不再赘述。
通过为业务请求的每一阶段的请求分配一定数量的处理器核(例如,处理器核集合),并将每一阶段的请求均发送至为该阶段的请求分配的处理器核集合中的负载最轻的处理器核,相对于将业务请求发送至存储***中多个处理器核当中负载最轻的处理器核,本发明实施例的处理业务请求的配置方法能够使得处理业务请求时,保证处理器核之间的负载均衡,为业务请求每个阶段的请求确定处理器核集合,在处理器集合范围内调度当前阶段的请求,相对于直接选择存储***中负载最轻的处理器核,考虑了各阶段的请求与影响处理器核处理各阶段的请求的时延的相关性,降低处理业务请求的时延。
需要说明的是,上述仅以业务请求包括第一阶段的请求与第二阶段的请求为例进行说明,并不对本发明实施例构成特别限定,例如,该业务请求还可以包括其他阶段的请求。
进一步的,上述配置方法实施例中确定处理器核集合的方法可以参考前面本发明实施例相关部分的描述,在此不再赘述。
上文结合图6至图9,描述了本发明实施例提供的存储***中处理业务请求的方法与处理业务请求的配置方法,下面结合图10至图11描述本发明实施例提供的处理业务请求的装置与存储***。
图10为本发明实施例提供的处理业务请求的装置800的示意性框图,该装置800配置于存储***中,包括收发模块801与处理模块802。
收发模块801,用于接收业务请求的当前阶段的请求,该当前阶段的请求为该业务请求的多个阶段的请求中的一个阶段的请求。
处理模块802,用于确定执行该当前阶段的请求的第一处理器核集合,该第一处理器核集合为该多个处理器核的一个处理器核子集。
收发模块801,还用于向该第一处理器核集合负载最轻的处理器核发送该当前阶段的请求。
可选地,处理模块802,还用于查询绑核关系,确定用于执行该当前阶段的请求的该第一处理器核集合,该绑核关系用于指示该当前阶段的请求与该第一处理器核集合之间的关联关系。
可选地,该处理模块802,还用于根据该第一处理器核集合,重新确定执行该当前阶段的请求的处理器核的数量;根据该重新确定的执行该当前阶段的请求的处理器核的数量,在该多个处理器核中为该当前阶段的请求分配满足该数量的第二处理器核集合;根据该第二处理器核集合,生成新的绑核关系,该新的绑核关系用于指示该当前阶段的请求与该第二处理器核集合之间的关联关系。
可选地,该处理模块802,还用于确定该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率;根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,重新确定执行该当前阶段的请求的处理器核的数量。
可选地,该处理模块802,还用于根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,基于以下关系式重新确定执行该当前阶段的请求的处理器核的数量:
N=UP/Uave
其中,N为重新确定的执行该当前阶段的请求的处理器核的数量,UP为该第一处理器核集合中的处理器核的利用率总和,Uave为该多个处理器核的平均利用率。
可选地,该处理模块802,还用于生成多组分配结果,每组分配结果中包括为每一个阶段的请求重新分配的满足相应数量的处理器核集合;针对该多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,该路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行该相邻阶段的请求的处理器核间的平均拓扑距离,M为该业务请求的多个阶段的请求的数量;根据该多个路径长度中的最短路径长度对应的一组分配结果,为该当前阶段的请求分配满足该数量的第二处理器核集合。
可选地,该第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,该处理模块802,还用于根据滑动窗口长度w与滑动步长d,在该K个处理器核中为该当前阶段的请求确定调度子区域,该调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;
该收发模块801,还用于向该w个处理器核中负载最轻的处理器核发送该当前阶段的请求。
可选地,d与K互为质数。
根据本发明实施例的处理业务请求的装置800可对应于执行本发明实施例中描述的方法600或方法700,并且装置800中的各个模块的上述和其它操作和/或功能分别为了实现图6中的方法600或图9中的方法700的相应流程,相应的,图5所示的各个模块可以对应到图8所示的一个或多个模块。为了简洁,在此不再赘述。
进一步的,本发明实施例的处理业务请求的装置800具体实现可以是处理器,或者软件模块,或者处理器与软件模块的组合等,本发明实施例对此不作限定。
图11为本发明实施例提供的存储***900的示意性框图,该存储***包括处理器901与存储器902,处理器901包括多个处理器核;
存储器902,用于存储计算机指令;
该多个处理器核中的一个或多个处理器核用于执行该存储器902中存储的计算机指令,当该存储器902中的计算机指令被执行时,该一个或多个处理器核用于执行下列操作:接收业务请求的当前阶段的请求,该当前阶段的请求为该业务请求的多个阶段的请求中的一个阶段的请求;确定执行该当前阶段的请求的第一存储***核集合,该第一存储***核集合为该多个存储***核的一个存储***核子集;向该第一存储***核集合负载最轻的存储***核发送该当前阶段的请求。
可选地,该一个或多个处理器核,还用于查询绑核关系,确定用于执行该当前阶段的请求的该第一存储***核集合,该绑核关系用于指示该当前阶段的请求与该第一存储***核集合之间的关联关系。
可选地,该一个或多个处理器核,还用于根据该第一存储***核集合,重新确定执行该当前阶段的请求的存储***核的数量;根据该重新确定的执行该当前阶段的请求的存储***核的数量,在该多个存储***核中为该当前阶段的请求分配满足该数量的第二存储***核集合;根据该第二存储***核集合,生成新的绑核关系,该新的绑核关系用于指示该当前阶段的请求与该第二存储***核集合之间的关联关系。
可选地,该一个或多个处理器核,还用于确定该第一存储***核集合中的存储***核的利用率总和与该多个存储***核的平均利用率;根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,重新确定执行该当前阶段的请求的处理器核的数量。
可选地,该一个或多个处理器核,还用于根据该第一处理器核集合中的处理器核的利用率总和与该多个处理器核的平均利用率,基于以下关系式重新确定执行该当前阶段的请求的处理器核的数量:
N=UP/Uave
其中,N为重新确定的执行该当前阶段的请求的处理器核的数量,UP为该第一处理器核集合中的处理器核的利用率总和,Uave为该多个处理器核的平均利用率。
可选地,该一个或多个处理器核,还用于生成多组分配结果,每组分配结果中包括为每一个阶段的请求重新分配的满足相应数量的处理器核集合;针对该多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,该路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行该相邻阶段的请求的处理器核间的平均拓扑距离,M为该业务请求的多个阶段的请求的数量;根据该多个路径长度中的最短路径长度对应的一组分配结果,为该当前阶段的请求分配满足该数量的第二处理器核集合。
可选地,该第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,该一个或多个处理器核,还用于根据滑动窗口长度w与滑动步长d,在该K个处理器核中为该当前阶段的请求确定调度子区域,该调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;向该w个处理器核中负载最轻的处理器核发送该当前阶段的请求。
可选地,该d与该K互为质数。
本发明实施例图5所示的各模块可以为处理器核中的硬件逻辑,也可以是处理器核执行的计算机指令,或者硬件逻辑与计算机指令的组合等,本发明实施例对此不作限定。
根据本发明实施例的处理业务请求的装置800的各模块可以由处理器实现,也可以由处理器与存储器共同实现,也可以由软件模块实现。相应的,图5所示的各个模块可以对应到图8所示的一个或多个模块,图8所示的模块包含图5所示的模块相应功能。
本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行本发明实施例中的处理业务请求的方法或处理业务请求的配置方法。
本发明实施例提供了一种包含计算机指令的计算机程序产品,当该计算机指令在计算机上运行时,使得计算机执行本发明实施例中的处理业务请求的方法或处理业务请求的配置方法。
应理解,本发明实施例中提及的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本发明实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datarate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储计算机指令的介质。
以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以所述权利要求的保护范围为准。
Claims (24)
1.一种存储***中处理业务请求的方法,所述存储***包含多个处理器核,其特征在于,包括:
接收业务请求的当前阶段的请求,所述当前阶段的请求为所述业务请求的多个阶段的请求中的一个阶段的请求;
确定执行所述当前阶段的请求的第一处理器核集合,所述第一处理器核集合为所述多个处理器核的一个处理器核子集;
向所述第一处理器核集合负载最轻的处理器核发送所述当前阶段的请求。
2.根据权利要求1所述的方法,其特征在于,所述确定执行所述当前阶段的请求的第一处理器核集合,包括:
查询绑核关系,确定用于执行所述当前阶段的请求的所述第一处理器核集合,所述绑核关系用于指示所述当前阶段的请求与所述第一处理器核集合之间的关联关系。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述第一处理器核集合,重新确定执行所述当前阶段的请求的处理器核的数量;
根据所述重新确定的执行所述当前阶段的请求的处理器核的数量,在所述多个处理器核中为所述当前阶段的请求分配满足所述数量的第二处理器核集合;
根据所述第二处理器核集合,生成新的绑核关系,所述新的绑核关系用于指示所述当前阶段的请求与所述第二处理器核集合之间的关联关系。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一处理器核集合,重新确定执行所述当前阶段的请求的处理器核的数量,包括:
确定所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率;
根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,重新确定执行所述当前阶段的请求的处理器核的数量。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,重新确定执行所述当前阶段的请求的处理器核的数量,包括:
根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,基于以下关系式重新确定执行所述当前阶段的请求的处理器核的数量:
N=UP/Uave
其中,N为重新确定的执行所述当前阶段的请求的处理器核的数量,UP为所述第一处理器核集合中的处理器核的利用率总和,Uave为所述多个处理器核的平均利用率。
6.根据权利要求3至5中任一项所述的方法,其特征在于,所述在所述多个处理器核中为所述当前阶段的请求分配满足所述数量的第二处理器核集合,包括:
生成多组分配结果,每组分配结果中包括为每一个阶段的请求重新分配的满足相应数量的处理器核集合;
针对所述多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,所述路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行所述相邻阶段的请求的处理器核间的平均拓扑距离,M为所述业务请求的多个阶段的请求的数量;
根据所述多个路径长度中的最短路径长度对应的一组分配结果,为所述当前阶段的请求分配满足所述数量的第二处理器核集合。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,所述向所述第一处理器核集合中负载最轻的处理器核发送所述当前阶段的请求,包括:
根据滑动窗口长度w与滑动步长d,在所述K个处理器核中为所述当前阶段的请求确定调度子区域,所述调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;
向所述w个处理器核中负载最轻的处理器核发送所述当前阶段的请求。
8.根据权利要求7所述的方法,其特征在于,所述d与所述K互为质数。
9.一种处理业务请求的装置,其特征在于,所述装置配置于存储***中,包括:
收发模块,用于接收业务请求的当前阶段的请求,所述当前阶段的请求为所述业务请求的多个阶段的请求中的一个阶段的请求;
处理模块,用于确定执行所述当前阶段的请求的第一处理器核集合,所述第一处理器核集合为所述多个处理器核的一个处理器核子集;
所述收发模块,还用于向所述第一处理器核集合负载最轻的处理器核发送所述当前阶段的请求。
10.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于查询绑核关系,确定用于执行所述当前阶段的请求的所述第一处理器核集合,所述绑核关系用于指示所述当前阶段的请求与所述第一处理器核集合之间的关联关系。
11.根据权利要求10所述的装置,其特征在于,所述处理模块,还用于根据所述第一处理器核集合,重新确定执行所述当前阶段的请求的处理器核的数量;根据所述重新确定的执行所述当前阶段的请求的处理器核的数量,在所述多个处理器核中为所述当前阶段的请求分配满足所述数量的第二处理器核集合;根据所述第二处理器核集合,生成新的绑核关系,所述新的绑核关系用于指示所述当前阶段的请求与所述第二处理器核集合之间的关联关系。
12.根据权利要求11所述的装置,其特征在于,所述处理模块,还用于确定所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率;根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,重新确定执行所述当前阶段的请求的处理器核的数量。
13.根据权利要求12所述的装置,其特征在于,所述处理模块,还用于根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,基于以下关系式重新确定执行所述当前阶段的请求的处理器核的数量:
N=UP/Uave
其中,N为重新确定的执行所述当前阶段的请求的处理器核的数量,UP为所述第一处理器核集合中的处理器核的利用率总和,Uave为所述多个处理器核的平均利用率。
14.根据权利要求11至13中任一项所述的装置,其特征在于,所述处理模块,还用于
生成多组分配结果,每组分配结果中包括为每一个阶段的请求重新分配的满足相应数量的处理器核集合;针对所述多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,所述路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行所述相邻阶段的请求的处理器核间的平均拓扑距离,M为所述业务请求的多个阶段的请求的数量;根据所述多个路径长度中的最短路径长度对应的一组分配结果,为所述当前阶段的请求分配满足所述数量的第二处理器核集合。
15.根据权利要求9至14中任一项所述的装置,其特征在于,所述第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,所述处理模块,还用于根据滑动窗口长度w与滑动步长d,在所述K个处理器核中为所述当前阶段的请求确定调度子区域,所述调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;
所述收发模块,还用于向所述w个处理器核中负载最轻的处理器核发送所述当前阶段的请求。
16.根据权利要求15所述的装置,其特征在于,所述d与所述K互为质数。
17.一种存储***,其特征在于,所述存储***包括多个处理器核与存储器;
存储器,用于存储计算机指令;
所述多个处理器核中的一个或多个处理器核用于执行所述存储器中存储的计算机指令,当所述存储器中的计算机指令被执行时,所述一个或多个处理器核用于:
接收业务请求的当前阶段的请求,所述当前阶段的请求为所述业务请求的多个阶段的请求中的一个阶段的请求;确定执行所述当前阶段的请求的第一存储***核集合,所述第一存储***核集合为所述多个存储***核的一个存储***核子集;向所述第一存储***核集合负载最轻的存储***核发送所述当前阶段的请求。
18.根据权利要求17所述的存储***,其特征在于,所述一个或多个处理器核,还用于:
查询绑核关系,确定用于执行所述当前阶段的请求的所述第一存储***核集合,所述绑核关系用于指示所述当前阶段的请求与所述第一存储***核集合之间的关联关系。
19.根据权利要求18所述的存储***,其特征在于,所述一个或多个处理器核,还用于:
根据所述第一存储***核集合,重新确定执行所述当前阶段的请求的存储***核的数量;根据所述重新确定的执行所述当前阶段的请求的存储***核的数量,在所述多个存储***核中为所述当前阶段的请求分配满足所述数量的第二存储***核集合;根据所述第二存储***核集合,生成新的绑核关系,所述新的绑核关系用于指示所述当前阶段的请求与所述第二存储***核集合之间的关联关系。
20.根据权利要求19所述的存储***,其特征在于,所述一个或多个处理器核,还用于:
确定所述第一存储***核集合中的存储***核的利用率总和与所述多个存储***核的平均利用率;根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,重新确定执行所述当前阶段的请求的处理器核的数量。
21.根据权利要求20所述的存储***,其特征在于,所述一个或多个处理器核,还用于:
根据所述第一处理器核集合中的处理器核的利用率总和与所述多个处理器核的平均利用率,基于以下关系式重新确定执行所述当前阶段的请求的处理器核的数量:
N=UP/Uave
其中,N为重新确定的执行所述当前阶段的请求的处理器核的数量,UP为所述第一处理器核集合中的处理器核的利用率总和,Uave为所述多个处理器核的平均利用率。
22.根据权利要求19至21中任一项所述的存储***,其特征在于,所述一个或多个处理器核,还用于:
生成多组分配结果,每组分配结果中包括为每一个阶段的请求重新分配的满足相应数量的处理器核集合;针对所述多组分配结果确定多个路径长度,每一组分配结果对应一个路径长度,所述路径长度L满足:
其中,ci,i+1表示执行相邻阶段的请求的处理器核间交互产生的通信量,di,i+1表示执行所述相邻阶段的请求的处理器核间的平均拓扑距离,M为所述业务请求的多个阶段的请求的数量;根据所述多个路径长度中的最短路径长度对应的一组分配结果,为所述当前阶段的请求分配满足所述数量的第二处理器核集合。
23.根据权利要求17至22中任一项所述的存储***,其特征在于,所述第一处理器核集合中包括K个处理器核,K为大于或等于3的整数,所述一个或多个处理器核,还用于:
根据滑动窗口长度w与滑动步长d,在所述K个处理器核中为所述当前阶段的请求确定调度子区域,所述调度子区域中包括w个处理器核,w为大于或等于2且小于K的整数,d为大于或等于1且小于K的整数;向所述w个处理器核中负载最轻的处理器核发送所述当前阶段的请求。
24.根据权利要求23所述的存储***,其特征在于,所述d与所述K互为质数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/098277 WO2020024207A1 (zh) | 2018-08-02 | 2018-08-02 | 处理业务请求的方法、装置与存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110178119A true CN110178119A (zh) | 2019-08-27 |
CN110178119B CN110178119B (zh) | 2022-04-26 |
Family
ID=67689271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880005605.6A Active CN110178119B (zh) | 2018-08-02 | 2018-08-02 | 处理业务请求的方法、装置与存储*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110178119B (zh) |
WO (1) | WO2020024207A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231099A (zh) * | 2020-10-14 | 2021-01-15 | 北京中科网威信息技术有限公司 | 一种处理器的内存访问方法及装置 |
CN114924866A (zh) * | 2021-04-30 | 2022-08-19 | 华为技术有限公司 | 数据处理方法和相关设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069374B (zh) * | 2024-04-18 | 2024-06-18 | 清华大学 | 数据中心智能训练仿真事务加速方法、装置、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060070054A1 (en) * | 2004-09-29 | 2006-03-30 | Uday Naik | Updating instructions executed by a multi-core processor |
US20090064167A1 (en) * | 2007-08-28 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Performing Setup Operations for Receiving Different Amounts of Data While Processors are Performing Message Passing Interface Tasks |
CN102306139A (zh) * | 2011-08-23 | 2012-01-04 | 北京科技大学 | 用于ofdm无线通信***的异构多核数字信号处理器 |
CN102411510A (zh) * | 2011-09-16 | 2012-04-11 | 华为技术有限公司 | 在多核处理器的虚拟机上映射业务数据流的方法和装置 |
CN102681902A (zh) * | 2012-05-15 | 2012-09-19 | 浙江大学 | 一种基于多核***任务分配的负载均衡方法 |
CN102855218A (zh) * | 2012-05-14 | 2013-01-02 | 中兴通讯股份有限公司 | 数据处理***、方法及装置 |
CN103473120A (zh) * | 2012-12-25 | 2013-12-25 | 北京航空航天大学 | 一种基于加速因子的多核实时***任务划分方法 |
CN104391747A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种并行计算方法及装置 |
US20180139306A1 (en) * | 2016-11-11 | 2018-05-17 | Silexica GmbH | Software optimization for multicore systems |
-
2018
- 2018-08-02 WO PCT/CN2018/098277 patent/WO2020024207A1/zh active Application Filing
- 2018-08-02 CN CN201880005605.6A patent/CN110178119B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060070054A1 (en) * | 2004-09-29 | 2006-03-30 | Uday Naik | Updating instructions executed by a multi-core processor |
US20090064167A1 (en) * | 2007-08-28 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Performing Setup Operations for Receiving Different Amounts of Data While Processors are Performing Message Passing Interface Tasks |
CN102306139A (zh) * | 2011-08-23 | 2012-01-04 | 北京科技大学 | 用于ofdm无线通信***的异构多核数字信号处理器 |
CN102411510A (zh) * | 2011-09-16 | 2012-04-11 | 华为技术有限公司 | 在多核处理器的虚拟机上映射业务数据流的方法和装置 |
CN102855218A (zh) * | 2012-05-14 | 2013-01-02 | 中兴通讯股份有限公司 | 数据处理***、方法及装置 |
CN102681902A (zh) * | 2012-05-15 | 2012-09-19 | 浙江大学 | 一种基于多核***任务分配的负载均衡方法 |
CN103473120A (zh) * | 2012-12-25 | 2013-12-25 | 北京航空航天大学 | 一种基于加速因子的多核实时***任务划分方法 |
CN104391747A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种并行计算方法及装置 |
US20180139306A1 (en) * | 2016-11-11 | 2018-05-17 | Silexica GmbH | Software optimization for multicore systems |
Non-Patent Citations (2)
Title |
---|
JUNYA KAIDA等: "Task Mapping Techniques for embedded many-core SoCs", 《2012 INTERNATIONAL SOC DESIGN CONFERENCE (ISOCC)》 * |
金星等: "基于异构通信机制的任务映射算法", 《计算机工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231099A (zh) * | 2020-10-14 | 2021-01-15 | 北京中科网威信息技术有限公司 | 一种处理器的内存访问方法及装置 |
CN114924866A (zh) * | 2021-04-30 | 2022-08-19 | 华为技术有限公司 | 数据处理方法和相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110178119B (zh) | 2022-04-26 |
WO2020024207A1 (zh) | 2020-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200364608A1 (en) | Communicating in a federated learning environment | |
US8539078B2 (en) | Isolating resources between tenants in a software-as-a-service system using the estimated costs of service requests | |
CN102971724B (zh) | 与数据中心环境内的基于单元式虚拟资源的管理有关的方法和装置 | |
CN108845874B (zh) | 资源的动态分配方法及服务器 | |
EP3281359B1 (en) | Application driven and adaptive unified resource management for data centers with multi-resource schedulable unit (mrsu) | |
CN113055308B (zh) | 带宽调度方法、流量传输方法及相关产品 | |
WO2019091387A1 (en) | Method and system for provisioning resources in cloud computing | |
CN109062658A (zh) | 实现计算资源服务化的调度方法、装置、介质、设备及*** | |
CN104092756B (zh) | 一种基于dht机制的云存储***的资源动态分配方法 | |
Song et al. | An optimization-based scheme for efficient virtual machine placement | |
CN104301430B (zh) | 软件定义存储***、方法及其集中控制设备 | |
CN106233276A (zh) | 网络可访问块存储装置的协调准入控制 | |
US20110138396A1 (en) | Method and system for data distribution in high performance computing cluster | |
CN110365748A (zh) | 业务数据的处理方法和装置、存储介质及电子装置 | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及*** | |
CN110178119A (zh) | 处理业务请求的方法、装置与存储*** | |
CN112532669B (zh) | 一种网络边缘计算方法、装置及介质 | |
US9075832B2 (en) | Tenant placement in multitenant databases for profit maximization | |
CN112219191A (zh) | 数据中心中的服务和服务器的自配置 | |
CN116467082A (zh) | 一种基于大数据的资源分配方法及*** | |
CN107920129A (zh) | 一种数据存储的方法、装置、设备以及云存储*** | |
CN104750614B (zh) | 用于管理存储器的方法和装置 | |
Kim et al. | Virtual machines placement for network isolation in clouds | |
CN114866544B (zh) | 云边环境中面向cpu异构集群的容器化微服务负载均衡方法 | |
CN115913550A (zh) | 一种密码资源分配方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |