一种队列调度方法及计算系统技术方案

技术编号:10599229 阅读:219 留言:0更新日期:2014-10-30 12:54
本申请提供一种队列调度方法及计算系统。该方法应用于基于SR-IOV的计算系统,计算系统包括通用处理器以及专用硬件芯片。通用处理器用于运行一个或多个虚拟机。专用硬件芯片用于基于SR-IOV协议实现PF以及一个或多个VF。每个虚拟机与至少一个VF对应。专用硬件芯片包括第一队列空闲链表,第一队列空闲链表包括多个按链表结构进行连接的空闲的第一队列,第一队列为位于专用硬件芯片中的队列。该方法包括:从第一队列空闲链表中分配一个或多个第一队列分别给与虚拟机对应的一个或多个VF,分配给每个VF的第一队列的数量与每个VF对应的虚拟机中的程序需要用到的第二队列的数量一致;获取虚拟机中的第二队列中的数据,将第二队列中的数据存放到第一队列中进行处理。

【技术实现步骤摘要】
一种队列调度方法及计算系统
本申请涉及通信
,尤其涉及一种队列调度方法及计算系统。
技术介绍
请参考图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具有不同的带宽、不同的业务和不同优先级的需求。请再参考图1所示,在现有技术中,采用等分法分配队列,即N个队列被平均分配到每个VF的每个优先级,所以N的取值为VF的数量m乘以优先级的数量再乘以每个优先级下的队列数目。假设队列的总数量N为1024,VF的数量为64,每个VF包含4个优先级,那么采用等分法,每个优先级会分配到4个队列,如图2所示,其中,PRI表示优先级。请再参考图3所示,为队列到VF和优先级PRI配置表。配置随机存取存储器(RandomAccessMemory;RAM)的地址为队列号0~1023,数据为VF号和优先级PRI。每一个队列属于哪个优先级,属于哪个VF都有设定,例如VF的个数为64,优先级有4个,则每个VF的每个优先级有4个队列,配置时每4个配置单位数据都是相同的,例如地址0~3的数据都是{0,0};地址1020~1023的数据都是{63,3}。因此,在等分法的队列配置方式中,必须为每个VF和PRI的组合分配平均的队列数。进一步,因为要平均分配,所以当VF有变化时,就必须重新为所有VF分配队列。
技术实现思路
本申请提供一种队列调度方法及计算系统,用以解决现有技术中的等分法的配置队列方式不够灵活的技术问题。本申请第一方面提供了一种队列调度方法,应用于基于单根输入输出虚拟化SR-IOV的计算系统,所述计算系统包括通用处理器以及专用硬件芯片,所述通用处理器用于运行一个或多个虚拟机,所述专用硬件芯片用于基于SR-IOV协议实现物理功能PF以及一个或多个虚拟功能VF,每个所述虚拟机与一个或多个VF对应,所述专用硬件芯片包括第一队列空闲链表,所述第一队列空闲链表包括多个按链表结构进行连接的空闲的第一队列,其中,所述第一队列为位于所述专用硬件芯片中的队列;所述方法由所述专用硬件芯片内的一个或多个功能模块执行,包括:从所述第一队列空闲链表中分配一个或多个第一队列分别给与虚拟机对应的一个或多个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的组合的本次调度的起始队列。结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,根据所述第一地址和所述队列序号在所述表X中确定出针对所述第一VF和所述第一PRI的组合的本次调度的起始队列,包括:将所述第一地址和所述队列序号相加,获得第二地址;当所述第二地址小于所述第一VF和所述第一PRI的组合的下一VF和PRI的组合的队列的首地址时,在所述表X中确定出所述第二地址对应的队列号,所述队列号对应的队列即为所述起始队列。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括:当所述第二地址等于所述下一VF和PRI的组合的队列的首地址时,在所述表X中确定出所述第一地址对应的队列号,所述队列号对应的队列即为所述起始队列。结合第一方面的第三种可能的实现方式至第一方面的第五种可能的实现方式中的任意一种,在第一方面的第六种可能的实现方式中,所述方法还包括:确定所述起始队列中是否有数据;当所述起始队列中有数据时,生成第一调度结果以及保存所述起始队列的队列序号,所述第一调度结果包括所述第一VF、所述第一PRI以及所述起始队列的队列号。结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述方法还包括:当所述起始队列中没有数据时,通过查询所述起始队列的数据结构表,确定所述下一队列;其中,所述数据结构表包括用于指示所述起始队列是否有数据的指示信息、数据的数量信息以及所述起始队列的下一队列的队列号;确定所述下一队列中是否有数据;当所述下一队列中有数据时,生成第二调度结果,所述第二调度结果包括所述第一VF、所述第一PRI以及所述下一队列的队列号;保存所述下一队列的队列序号。结合第一方面或第一方面的第一种可能的实现方式至第一方面的第七种可能的实现方式中的任意一种,在第一方面的第八种可能的实现方式中,在分配一个或多个第一队列分别给一个或多个VF之后,所述方法还包括:从所述每个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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1