【技术实现步骤摘要】
一种队列调度方法及计算系统
本申请涉及通信
,尤其涉及一种队列调度方法及计算系统。
技术介绍
请参考图1所示,为一种基于支持单根输入输出虚拟化(SingleRootIOVirtrualiztion,SR-IOV)技术的计算系统结构图。如图1所示,该系统包括:通用处理器,例如:中央处理器(CentralProcessingUnit,CPU),例如为X86结构的CPU,用于运行通用的操作系统、虚拟机软件等。该系统还包括专用硬件芯片,例如:专用集成电路(英文:ApplicationSpecificIntegratedCircuit;简称:ASIC)、现场可编程门阵列(英文:FieldProgrammableGateArray;简称:FPGA)、复杂可编程逻辑器件(英文:ComplexProgrammableLogicDevice;简称:CPLD)等。专用硬件芯片与通用处理器通过接口连接,例如:通过快速周边元件扩展接口(PeripheralComponentInterconnectExpress,PCIe)连接。通用处理器上运行有m个虚拟机(VirtualManufacturing,VM),m为正整数,如图1中所示的VM0、VM1…VMm。每个VM都对应一个或多个虚拟功能(VirtualFunction,VF),在图1中,每个VM对应一个VF,如VF0至VFm,虚拟机通过驱动来访问对应的VF。专用硬件芯片包括N个队列,N为大于等于m的正整数。N个队列与m个VF之间具有一种动态的配置关系,这种配置关系满足SR-IOV下不同VF具有不同的带宽、不同的业务和不同优 ...
【技术保护点】
一种队列调度方法,应用于基于单根输入输出虚拟化SR‑IOV的计算系统,所述计算系统包括通用处理器以及专用硬件芯片,所述通用处理器用于运行一个或多个虚拟机,所述专用硬件芯片用于基于SR‑IOV协议实现物理功能PF以及一个或多个虚拟功能VF,每个所述虚拟机与一个或多个VF对应,其特征在于:所述专用硬件芯片包括第一队列空闲链表,所述第一队列空闲链表包括多个按链表结构进行连接的空闲的第一队列,其中,所述第一队列为位于所述专用硬件芯片中的队列;所述方法由所述专用硬件芯片内的一个或多个功能模块执行,包括:从所述第一队列空闲链表中分配一个或多个第一队列分别给与虚拟机对应的一个或多个VF,其中,分配给每个VF的所述第一队列的数量与每个VF对应的虚拟机中的程序需要用到的第二队列的数量一致;获取所述虚拟机中的所述第二队列中的数据,将所述第二队列中的数据存放到所述第一队列中进行处理。
【技术特征摘要】
1.一种队列调度方法,应用于基于单根输入输出虚拟化SR-IOV的计算系统,所述计算系统包括通用处理器以及专用硬件芯片,所述通用处理器用于运行一个或多个虚拟机,所述专用硬件芯片用于基于SR-IOV协议实现物理功能PF以及一个或多个虚拟功能VF,每个所述虚拟机与一个或多个VF对应,其特征在于:所述专用硬件芯片包括第一队列空闲链表,所述第一队列空闲链表包括多个按链表结构进行连接的空闲的第一队列,其中,所述第一队列为位于所述专用硬件芯片中的队列;所述方法由所述专用硬件芯片内的一个或多个功能模块执行,包括:从所述第一队列空闲链表中分配一个或多个第一队列分别给与虚拟机对应的一个或多个VF,其中,分配给每个VF的所述第一队列的数量与每个VF对应的虚拟机中的程序需要用到的第二队列的数量一致,且分配给每个VF的所述第一队列的数量随着所述第二队列的数量的变化而进行同样的变化;获取所述虚拟机中的所述第二队列中的数据,将所述第二队列中的数据存放到所述第一队列中进行处理;其中,单个VF支持一个或多个优先级PRI,所述处理为调度处理,所述调度处理包括:获得需要调度的第一VF和第一PRI的组合;在表Y中确定出与所述第一VF和所述第一PRI的组合对应的队列链的首队列在表X中的第一地址;其中,所述表X存储有个数为所有队列数的第一表项,所述第一表项包括每个VF和每个PRI的组合对应的队列的队列号;所述表Y存储有多个第二表项,每个所述第二表项包括所述每个VF和所述每个PRI的组合,以及所述每个VF和所述每个PRI的组合对应的队列的首队列在表X中的地址;所述第二表项的个数为VF的个数乘以单个VF支持的最大PRI个数的值;获取上次调度的终止队列的队列序号;所述队列序号表征所述终止队列在所述第一VF和所述第一PRI的组合对应的队列中的排序;根据所述第一地址和所述队列序号在所述表X中确定出针对所述第一VF和所述第一PRI的组合的本次调度的起始队列。2.如权利要求1所述的方法,其特征在于,当分配给所述每个VF的第一队列的数量为多个时,所述每个VF的多个第一队列按链表结构进行连接。3.如权利要求1或2所述的方法,其特征在于,根据所述第一地址和所述队列序号在所述表X中确定出针对所述第一VF和所述第一PRI的组合的本次调度的起始队列,包括:将所述第一地址和所述队列序号相加,获得第二地址;当所述第二地址小于所述第一VF和所述第一PRI的组合的下一VF和PRI的组合的队列的首地址时,在所述表X中确定出所述第二地址对应的队列号,所述队列号对应的队列即为所述起始队列。4.如权利要求3所述的方法,其特征在于,所述方法还包括:当所述第二地址等于所述下一VF和PRI的组合的队列的首地址时,在所述表X中确定出所述第一地址对应的队列号,所述队列号对应的队列即为所述起始队列。5.如权利要求1或2所述的方法,其特征在于,所述方法还包括:确定所述起始队列中是否有数据;当所述起始队列中有数据时,生成第一调度结果以及保存所述起始队列的队列序号,所述第一调度结果包括所述第一VF、所述第一PRI以及所述起始队列的队列号。6.如权利要求5所述的方法,其特征在于,所述方法还包括:当所述起始队列中没有数据时,通过查询所述起始队列的数据结构表,确定下一队列;其中,所述数据结构表包括用于指示所述起始队列是否有数据的指示信息、数据的数量信息以及所述起始队列的下一队列的队列号;确定所述下一队列中是否有数据;当所述下一队列中有数据时,生成第二调度结果,所述第二调度结果包括所述第一VF、所述第一PRI以及所述下一队列的队列号;保存所述下一队列的队列序号。7.如权利要求1或2所述的方法,其特征在于,在分配一个或多个第一队列分别给一个或多个VF之后,所述方法还包括:从所述每个VF的一个或多个第一队列中删除队列;将删除的队列加入所述第一队列空闲链表中。8.如权利要求1或2所述的方法,其特征在于,所述方法还包括:接收一外部数据;确定所述外部数据对应的VF、PRI和队列序号;其中,所述队列序号表征将要存储所述外部数据的队列在所述VF和所述PRI的组合对应的队列中的排序;在表Y中确定出与所述VF和所述PRI的组合对应的队列的首队列在表X中的第一地址;其中,所述表X存储有个数为所有队列数的第一表项,所述第一表项包括每个VF和每个PRI的组合对应的队列的队列号;所述表Y存储有多个第二表项,每个所述第二表项包括所述每个VF和所述每个PRI的组合,以及所述每个VF和所述每个PRI的组合对应的队列的首队列在表X中的地址;所述第二表项的个数为VF的个数乘以单个VF支持的最大PRI个数的值;根据所述第一地址和所述队列序号,获得将要存储所述外部数据的队列在所述表X中的第二地址;根据所述第二地址在所述表X中确定出将要存储所述外部数据的队列的队列号;将所述外部数据存储在...
【专利技术属性】
技术研发人员:雷春,仪长,黄雪峰,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。