配置接口的方法和系统与流程

文档序号:12176607阅读:468来源:国知局
配置接口的方法和系统与流程

本发明实施例涉及计算机设备领域,并且更具体地,涉及配置接口的方法和系统。



背景技术:

虚拟机提出的输入输出(Input/Output,I/O)虚拟化要求最初完全使用软件来实现,但是,由于软件的限制,不能发挥出硬件I/O性能。外围设备高速互联(Peripheral Component Interconnect Express,PCIe)的单个根节点I/O虚拟化技术(Single Root I/O Virtualization,SRIOV)标准技术的出现,使得硬件支持了I/O虚拟化功能,提高了I/O虚拟化性能。

SRIOV标准基于PCIe标准,通过在物理功能(Physical Function,PF)上扩展出若干个虚拟功能(Virtual Function,VF)供上层系统图像(System Image,SI)使用,每个SI可以使用一个或多个VF。为了节省硬件资源,SR-IOV标准规定PF及其附属VF公共的配置空间只在PF中定义,即VF必须依附到某个PF才能工作。

某些项目可能需要一张I/O卡同时提供多种系统业务功能,例如以太网和存储磁盘阵列(Redundant Arrays of Independent Disks,RAID),并提供虚拟化。这就需要使用多个PF,同时每个PF提供若干个VF。现在的硬件芯片能够提供的PF数量,以及每个PF附属的VF数量是固定的,即不能调整PF附属的VF数量。这就对上层提出了限制,例如在某种应用场景下使用以太网功能的SI多一些,但是提供以太网功能的PF对应的VF数量有限,SI只能串行使用VF,影响系统性能。同时,RAID对应PF的VF都是空闲,造成资源浪费。



技术实现要素:

本发明实施例提供一种配置接口的方法和系统,能够在PF和VF总数量固定的情况下,调整PF附属的VF数量,从而提高系统性能,节约资源。

第一方面,提供了一种配置接口的方法,包括:从外围设备高速互联PCIe树中确定具有单个根节点输入/输出虚拟化SR-IOV能力的PCIe设备,该PCIe设备包括至少两个物理功能PF,每个PF附属至少一个虚拟功能VF;根据系统业务对VF个数的需求,通过该PCIe设备中的PCIe芯片提供的通道修改该至少两个PF分别附属的VF的分配比例。

结合第一方面,在第一方面的第一种可能的实现方式中,该根据系统业务对VF个数的需求,通过该PCIe设备中的PCIe芯片提供的通道修改该至少两个PF分别附属的VF的分配比例,包括:当该系统业务需求的VF总数小于该PCIe设备中的VF总数,该系统业务中的第一业务需求的VF个数大于所分配的VF个数时,通过该PCIe芯片提供的该通道修改该至少两个PF中该第一业务对应的PF附属的VF个数以及修改该至少两个PF中部分或全部其他PF分别附属的VF个数,使得在该PCIe设备中的VF总数不变的情况下保证该每个PF中的VF个数均满足对应的业务需求。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该通过该PCIe芯片提供的该通道修改该至少两个PF中该第一业务对应的PF附属的VF个数,包括:通过该通道修改该第一业务对应的PF中的初始VF值和总VF值,使得该初始VF值和总VF值对应的VF个数满足该第一业务。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该方法还包括:将修改后的初始VF值和总VF值存储在该PCIe芯片提供的非易失性存储器中。

结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该方法还包括:当系统再次上电时,从该非易失性存储器中读取该修改后的初始VF值和总VF值并根据该修改后的初始VF值和总VF值配置该分配比例。

结合第一方面或第一方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,该从外围设备高速互联PCIe树中确定具有单个根节点输入/输出虚拟化SR-IOV能力的PCIe设备,包括:扫描该PCIe树,在配置空间中查找到具有该SR-IOV能力的寄存器组的PCIe设备为该PCIe设备。

结合第一方面或第一方面的第一种至第五种可能的实现方式中的任一种 可能的实现方式,在第一方面的第六种可能的实现方式中,该方法还包括:根据该修改后的分配比例,进行合法性检查并将所附属VF个数发生变化的PF的VF参考值进行修改。

结合第一方面或第一方面的第一种至第六种可能的实现方式中的任一种可能的实现方式,在第一方面的第七种可能的实现方式中,该通道为PCIe带内通道或PCIe带外通道。

第二方面,提供了一种系统,包括处理器和外围设备高速互联PCIe设备,该PCIe设备包括PCIe芯片,其中,该处理器,用于从PCIe树中确定具有单个根节点输入/输出虚拟化SR-IOV能力的PCIe设备,该PCIe设备包括至少两个物理功能PF,每个PF附属至少一个虚拟功能VF;该处理器,用于根据该系统业务对VF个数的需求,通过该PCIe芯片提供的通道修改该至少两个PF分别附属的VF的分配比例。

结合第二方面,在第二方面的第一种可能的实现方式中,该处理器,具体用于当该系统业务需求的VF总数小于该PCIe设备中的VF总数,该系统业务中的第一业务需求的VF个数大于所分配的VF个数时,通过该PCIe芯片提供的该通道修改该至少两个PF中该第一业务对应的PF附属的VF个数以及修改该至少两个PF中部分或全部其他PF分别附属的VF个数,使得在该PCIe设备中的VF总数不变的情况下保证该每个PF中的VF个数均满足对应的业务需求。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该处理器,具体用于通过该通道修改该第一业务对应的PF中的初始VF值和总VF值,使得该初始VF值和总VF值对应的VF个数满足该第一业务。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该系统还包括非易失性存储器,其中,该PCIe芯片,用于将修改后的初始VF值和总VF值存储在该非易失性存储器中。

结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,该处理器,还用于当系统再次上电时,从该非易失性存储器中读取该修改后的初始VF值和总VF值并根据该修改后的初始VF值和总VF值配置该分配比例。

结合第二方面或第二方面的第一种至第四种可能的实现方式中的任一种 可能的实现方式,在第二方面的第五种可能的实现方式中,该处理器,具体用于扫描该PCIe树,在配置空间中查找到具有该SR-IOV能力的寄存器组的PCIe设备为该PCIe设备。

结合第二方面或第二方面的第一种至第五种可能的实现方式中的任一种可能的实现方式,在第二方面的第六种可能的实现方式中,该PCIe芯片,用于根据该修改后的分配比例,进行合法性检查并将所附属VF个数发生变化的PF的VF参考值进行修改。

结合第二方面或第二方面的第一种至第六种可能的实现方式中的任一种可能的实现方式,在第二方面的第七种可能的实现方式中,该通道为PCIe带内通道或PCIe带外通道。

本发明实施例中,通过PCIe芯片提供的通道修改了PF附属的VF个数,使得VF个数满足系统业务的需求。这样,每个PF的VF个数均满足业务需求,能够减少空闲VF,避免资源浪费,提高系统性能。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的配置接口的方法的示意性流程图。

图2是本发明一个实施例的系统的示意结构图。

图3是本发明一个实施例的配置接口的过程的示意性流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

图1是本发明一个实施例的配置接口的方法的示意性流程图。图1所示的方法可以由系统执行,该系统可以为计算机系统。图1所示的方法包括:

110,从外围设备高速互联PCIe树中确定具有单个根节点输入/输出虚拟 化SR-IOV能力的PCIe设备,PCIe设备包括至少两个物理功能PF,每个PF附属至少一个虚拟功能VF;

120,根据系统业务对VF个数的需求,通过PCIe设备中的PCIe芯片提供的通道修改至少两个PF分别附属的VF的分配比例。

本发明实施例中,通过PCIe芯片提供的通道修改了PF附属的VF个数,使得VF个数满足系统业务的需求。这样,每个PF的VF个数均满足业务需求,能够减少空闲VF,避免资源浪费,提高系统性能。

应理解,步骤110和步骤120可以由系统中的处理器执行。

SR-IOV标准规定PF及其附属VF公共的配置空间只在PF中定义,即VF必须附属到某个PF才能工作。原因是按照PCIe的协议规定,每个PF都必须拥有自己独立的4KB配置空间。但是,为了节省空间,每个PF实现了独立的4KB配置空间,而VF只实现了一小部分,所以VF必须附属到某个PF下。当系统访问VF的配置空间寄存器时,如果VF没有独立实现这个寄存器,那它必须要参考自己归属PF的寄存器值,并返回。

PCIe设备包括至少两个PF,系统业务的个数可以为对应的至少两个业务,即该PCIe设备可以提供对应的至少两个业务功能。每个业务功能对VF个数具有需求。目前的PCIe设备中的PF所附属的VF个数是固定的。例如,一张SR-IOV卡提供两个PF,每个PF附属的VF数量固定,都为64个。在以太网和存储业务同时并存的应用场景下,一个PF用作以太网,一个PF用作存储。当上层使用以太网功能的SI多于64时,以太网功能的SI只能串行使用VF,造成性能下降。

PCIe设备中包括的至少两个PF分别附属的VF的分配比例可以为每个PF所附属的VF个数的分配。修改分配比例,可以修改至少两个PF中的每个PF附属的VF个数,也可以修改至少两个PF中部分PF附属的VF个数。具体地,例如,系统中包括两个PF,每个PF附属8个VF。在进行修改后,一个PF分配12个VF,另一个PF分配4个VF。换句话说,当PCIe设备包括两个PF时,在满足PCIe总VF个数不变的情况下,必须同时修改两个PF的VF附属个数。又例如,系统中包括三个PF,每个PF附属8个VF。在进行修改后,一个PF可以附属12个,一个PF可以附属4个,一个PF可以附属8个。或者,一个PF可以附属12个,一个PF可以附属6个,一个PF可以附属6个。也就是说,在修改分配比例时,当PCIe设备包括至少三个PF 时,在满足PCIe总VF个数不变的情况下,可以同时修改至少三个PF的VF附属个数,也可以最少修改其中两个PF的VF附属个数。总之,修改后的PF所附属的VF个数满足相应的业务即可。

可选地,作为另一实施例,该PCIe芯片提供的通道可以为PCIe带内通道或PCIe带外通道。

可选地,作为另一实施例,在步骤110中,系统中的处理器可以扫描PCIe树,在配置空间中查找到具有SR-IOV能力的寄存器组的PCIe设备为PCIe设备。

具体地,在系统上电后扫描PCIe树,PCIe树中包括若干PCIe设备。读取每个PCIe设备的配置空间查找具有SR-IOV能力的寄存器组。若某个PCIe设备包括该具有SR-IOV能力的寄存器组,该PCIe设备也具有SR-IOV能力。

可选地,作为另一实施例,在步骤120中,系统中的处理器可以当系统业务需求的VF总数小于PCIe设备中的VF总数,系统业务中的第一业务需求的VF个数大于所分配的VF个数时,通过PCIe芯片提供的通道修改至少两个PF中第一业务对应的PF附属的VF个数以及修改至少两个PF中部分或全部其他PF分别附属的VF个数,使得在PCIe设备中的VF总数不变的情况下保证每个PF中的VF个数均满足对应的业务需求。

具体地,系统包括至少两个业务,该至少两个业务需要的VF总数要小于PCIe设备中的VF总数。这样,在进行修改后,可以在PCIe设备中的VF总数不变的情况下,使得每个PF附属的VF个数均满足对应的业务需求。

应理解,第一业务为系统业务中分配的VF个数不满足需求的业务。该第一业务为其中一个业务,对于其他分配的VF个数不满足业务需求时均可以采用本发明实施例的方法。

如上文中的举例可以得出,本发明实施例必须修改第一业务对应的PF附属的VF个数,使得第一业务分配的VF个数能够满足需求。并且,可以修改系统业务中除去第一业务的其他业务的部分或全部PF所附属的VF个数。当PCIe设备包括两个PF时,该两个PF中只有一个PF附属的VF个数小于对应的业务需求,而另一个PF附属的VF个数存在空闲情况。此时,两个PF附属的VF个数均需要修改。当PCIe设备包括至少三个PF时,该三个PF中至少有一个PF附属的VF个数小于对应的业务需求,而其他PF中至少有一个PF附属的个数存在空闲情况。在修改时,必须修改不满足业务需求的PF 附属的VF个数,并修改其他PF中的全部PF或部分PF的VF个数。

可选地,作为另一实施例,在修改第一业务对应的PF附属的VF个数时,处理器可以通过通道修改第一业务对应的PF中的初始VF值和总VF值,使得初始VF值和总VF值对应的VF个数满足第一业务。

应理解,系统中的处理器可以软件通过PCIe芯片提供的通道修改初始VF值(InitialVFs)和总VF值(TotalVFs)。具体地,InitialVFs和TotalVFs是寄存器的两个值。这两个值用来控制PF附属的VF个数。目前的技术中,InitialVFs和TotalVFs的属性是只读(Read Only,RO),软件无法更改这些值,即软件无法更改PF附属的VF个数。

例如,若系统中包括两个PF,每个PF附属8个VF。进行修改时,将一个PF的VF个数修改为12,即将该PF下的InitialVFs和TotalVFs的值修改为12。将另一个PF的VF个数修改为4,即将该PF下的InitialVFs和TotalVFs的值修改为4。

可选地,作为另一实施例,图1所示的方法还包括:

130,将修改后的初始VF值和总VF值存储在PCIe芯片提供的非易失性存储器中;

140,当系统再次上电时,读取修改后的初始VF值和总VF值并根据修改后的初始VF值和总VF值配置分配比例。

具体地,步骤130可以由系统中的芯片执行,步骤140可以由系统中的处理器执行。

非易失性存储器可以为电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)。

可选地,作为另一实施例,为了配合系统中的处理器的修改,PCIe芯片可以根据修改后的分配比例,进行合法性检查并将所附属VF个数发生变化的PF的VF参考值进行修改。

应理解,VF参考值用于指示PF中的VF个数,该VF参考值为现有PCIe设备已经存在的一个参数值。

图2是本发明一个实施例的系统的示意结构图。图2所示的系统包括处理器210和外围设备高速互联PCIe设备220,PCIe设备220包括PCIe芯片230,其中,

处理器210从PCIe树中确定具有单个根节点输入/输出虚拟化SR-IOV能 力的PCIe设备,PCIe设备包括至少两个物理功能PF,每个PF附属至少一个虚拟功能VF;

处理器210根据系统业务对VF个数的需求,通过PCIe芯片提供的通道修改至少两个PF分别附属的VF的分配比例。

本发明实施例中,通过PCIe芯片提供的通道修改了PF附属的VF个数,使得VF个数满足系统业务的需求。这样,每个PF的VF个数均满足业务需求,能够减少空闲VF,避免资源浪费,提高系统性能。

可选地,作为另一实施例,处理器210可以当系统业务需求的VF总数小于PCIe设备中的VF总数,系统业务中的第一业务需求的VF个数大于所分配的VF个数时,通过PCIe芯片提供的通道修改至少两个PF中第一业务对应的PF附属的VF个数以及修改至少两个PF中部分或全部其他PF分别附属的VF个数,使得在PCIe设备中的VF总数不变的情况下保证每个PF中的VF个数均满足对应的业务需求。

可选地,作为另一实施例,处理器210可以通过通道修改第一业务对应的PF中的初始VF值和总VF值,使得初始VF值和总VF值对应的VF个数满足第一业务。

可选地,作为另一实施例,图2所示的系统还可以包括非易失性存储器240,其中,PCIe芯片230可以将修改后的初始VF值和总VF值存储在非易失性存储器240中。

可选地,作为另一实施例,处理器210还可以当系统再次上电时,从非易失性存储器中读取修改后的初始VF值和总VF值并根据修改后的初始VF值和总VF值配置分配比例。

可选地,作为另一实施例,处理器210可以扫描PCIe树,在配置空间中查找到具有SR-IOV能力的寄存器组的PCIe设备为PCIe设备。

可选地,作为另一实施例,PCIe芯片230可以根据修改后的分配比例,进行合法性检查并将所附属VF个数发生变化的PF的VF参考值进行修改。

可选地,作为另一实施例,通道为PCIe带内通道或PCIe带外通道。

图3是本发明一个实施例的配置接口的过程的示意性流程图。该过程可以包括:

301,系统上电。

302,系统扫描PCIe树,确定具有SR-IOV能力的PCIe设备。

具体地,在系统上电后扫描PCIe树,PCIe树中包括若干PCIe设备。读取每个PCIe设备的配置空间查找具有SR-IOV能力的寄存器组。若某个PCIe设备包括该具有SR-IOV能力的寄存器组,该PCIe设备也具有SR-IOV能力。

303,判断PF与VF个数的分配关系是否满足系统需求。

具体地,处理器读取每个PF下的InitialVFs和TotalVFs值,判断此时在不同PF间的VF个数分配比例是否满足系统需求。例如,系统一共有两个PF,16个VF,现在每个PF下分配了8个VF。如果这种分配关系满足系统需求,跳转至步骤306。如果这种分配关系不满足系统需求,例如系统需要PF0下游12个VF,PF1下有4个PF,则跳转到步骤304。

304,处理器修改全部或部分PF下的初始VF值和总VF值。

具体地,若系统中包括两个PF,每个PF附属8个VF。进行修改时,将一个PF的VF个数修改为12,即将该PF下的InitialVFs和TotalVFs的值修改为12。将另一个PF的VF个数修改为4,即将该PF下的InitialVFs和TotalVFs的值修改为4。

同时,PCIe芯片根据修改后的InitialVFs和TotalVFs修改VF参考值。

PCIe芯片还可以将修改后的InitialVFs和TotalVFs保存在EEPROM中,以便于在下次上电时,先从EEPROM中读取,并存放到SR-IOV能力空间中,并根据读取的值配置PF和VF的分配比例。

305,系统判断PF的VF个数是否被正确修改。

具体地,系统重新枚举本PCIe设备,检查PF和VF的分配比例是否被正确修改,若否,则跳转至304。如果是,跳转至306。

306,系统正常工作。

本发明实施例中,通过PCIe芯片提供的通道修改了PF附属的VF个数,使得VF个数满足系统业务的需求。这样,每个PF的VF个数均满足业务需求,能够减少空闲VF,避免资源浪费,提高系统性能。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内 在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个 单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。此外。任何连接可以适当的成为计算机可读介质。

总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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