CN120216211A 多层级交换器动态组合内存资源分配的系统及方法_第1页
CN120216211A 多层级交换器动态组合内存资源分配的系统及方法_第2页
CN120216211A 多层级交换器动态组合内存资源分配的系统及方法_第3页
CN120216211A 多层级交换器动态组合内存资源分配的系统及方法_第4页
CN120216211A 多层级交换器动态组合内存资源分配的系统及方法_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(10)申请公布号CN120216211A(71)申请人苏州元脑智能科技有限公司地址215000江苏省苏州市吴中经济开发区综保区经一路1号8幢(72)发明人叶丰华孙秀强林楷智(74)专利代理机构北京清亦华知识产权代理事务所(普通合伙)11201专利代理师黄琼(54)发明名称多层级交换器动态组合内存资源分配的系统及方法本发明公开了一种多层级交换器动态组合内存资源分配的系统及方法,涉及计算机技术领域,包括:在服务器启动时动态获取并分析目标配置空间的类型数据,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,并在第一硬件资源包括多层级交换器时,识别多层级交换器连接的第二硬件资源,根据第二硬件资源的识别结果确定哪些设备需要进行资源预留,无需逐一检查每个可能的连接情况,并基于第二识别结果为多层级交换器及第二硬件资源分配第一内存资源,避免当外设互连链路存在过多的交换器时,导致在服务器启动时耗费过多的时间进行资源分配,以减少服务器启动时的时间消耗,多层级交换器动态组合内存资源分配的系统多层级交换器动态组合内存资源分配的系统至少一个处理电路至少一个外设互联21.一种多层级交换器动态组合内存资源分配的系统,其特征在于,包括:服务器的至少一个处理电路,所述至少一个处理电路与至少一个外设互连链路相连,所述至少一个处理电路用于:执行读取引擎,所述读取引擎在服务器启动时目标配置空间的类型数据;将所述类型数据传播到识别引擎,所述识别引擎根据所述类型数据识别当前外设互连链路连接的第一硬件资源,若所述第一硬件资源包括多层级交换器,则识别所述多层级交换器连接的第二硬件资源;将所述识别引擎的识别结果传播到分配引擎,所述分配引擎根据所述第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器时,根据所述第二硬件资源的第二识别结果,为所述多层级交换器及第二硬件资源分配第一内存资源。2.根据权利要求1所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述分配引擎用于:若当前层级交换器的下行端口连接有外设互连设备,则对所述当前层级交换器的上行端口、下行端口和外设互连设备分配第一内存资源;若当前层级交换器的下行端口空闲,则不对所述当前层级交换器的上行端口和下行端口分配内存资源。3.根据权利要求2所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:执行读取引擎,所述读取引擎读取所述外设互连设备的标识;所述分配引擎用于:根据所述外设互连设备的标识确定第一内存资源分配需求,若确定所述外设互连设备存在所述第一内存资源分配需求,则对所述当前层级交换器的上行端口、下行端口和外设互连设备分配第一内存资源。4.根据权利要求3所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述分配引擎用于:若确定所述外设互连设备不存在所述第一内存资源的分配需求,则对所述当前层级交换器的下行端口分配非内存资源。5.根据权利要求1所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述分配引擎用于:根据所述第一硬件资源的第一识别结果,确定当前外设互连链路连接有外设互连设备时,对所述外设互连设备分配第一内存资源。6.根据权利要求5所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述分配引擎用于:对所述外设互连设备分配第一内存资源之前,若所述外设互连设备为数据处理器,则根据所述数据处理器的资源大小分配第一内存资源。7.根据权利要求1所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述分配引擎用于:根据所述第一硬件资源的第一识别结果,确定当前外设互连链路连接有外设互连端口和交换器时,若所述外设互连端口为目标端口,则对所述外设互连端口和所述交换器分配第一内存资源。38.根据权利要求1-7任意一项所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:执行设置引擎,所述设置引擎为已经分配第一内存资源的硬件资源,所在的外设互连链路设置热插拔功能。9.根据权利要求1所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:在所述识别引擎轮询所有外设互连链路、所述第一硬件资源和所述第二硬件资源时,执行启动引擎,所述启动引擎启动所述服务器的操作系统。10.根据权利要求9所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:在所述服务器进入操作系统后,执行所述读取引擎,所述读取引擎读取所述服务器的内存分配函数;所述分配引擎,根据所述内存分配函数重新分配所述服务器第一内存资源。11.根据权利要求9所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:在根据内存分配函数重新分配所述服务器第一内存资源之前,执行所述读取引擎,所述读取引擎读取所述服务器的重新分配需求;所述分配引擎,根据所述重新分配需求和所述内存分配函数,重新分配所述服务器第一内存资源。12.根据权利要求10所述的多层级交换器动态组合内存资源分配的系统,其特征在于,若所述读取引擎未读取所述服务器的重新分配需求,所述分配引擎,删除所述内存分配函数,保留所述服务器启动阶段第一内存资源的分配参数。13.根据权利要求10所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:执行扫描引擎,所述扫描引擎扫描所述服务器的所有外设互连链路;将所述扫描引擎的扫描数据传播到识别引擎,所述识别引擎识别所述扫描数据,若识别到当前外设互连链路、所述当前外设互连链路连接的第一硬件资源、所述当前外设互连链路连接的交换器,开启热插拔功能,则保留所述当前外设互连链路在所述服务器启动阶段分配的第一内存资源。14.根据权利要求13所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述识别引擎用于:若识别到当前外设互连链路、所述当前外设互连链路连接的第一硬件资源、所述当前外设互连链路连接的交换器,关闭热插拔功能,所述分配引擎,根据所述内存分配函数重新分配所述服务器第一内存资源。15.根据权利要求13所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述识别引擎用于:若识别到当前外设互连链路空闲,或者,所述当前外设互连链路连接的交换器空闲,则停止分配所述服务器的第一内存资源。16.根据权利要求10-15任意一项所述的多层级交换器动态组合内存资源分配的系统,4其特征在于,所述至少一个处理电路用于:执行扫描引擎,所述扫描引擎扫描当前外设互连链路层级;将所述扫描引擎的扫描数据传播到识别引擎,所述识别引擎识别所述扫描数据,若当前外设互连链路层级为N,则第一内存资源的重新分配次数为N+1;所述分配引擎根据重新分配次数进行第一内存资源分配。17.根据权利要求16所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述至少一个处理电路用于:执行读取引擎,所述读取引擎读取所述服务器的第二内存资源;将所述第二内存资源的剩余资源传播到所述识别引擎,所述识别引擎识别所述剩余资源是否小于资源阈值;将所述识别引擎的识别结果传播到分配引擎,所述分配引擎在所述剩余资源小于资源阈值时,停止所述服务器的第一内存资源的分配、对不支持热插拔功能的硬件资源和外设互连链路已经分配的第一内存资源重新分配。18.根据权利要求17所述的多层级交换器动态组合内存资源分配的系统,其特征在于,所述分配引擎进一步用于:若多层级交换器的任意一个交换器不支持热插拔功能,则重新分配不支持热插拔功的交换器所在外设互连链路的第一内存资源;若所述多层级交换器的所有交换器支持热插拔功能,则保留所述服务器启动阶段第一内存资源的分配参数。19.一种服务器,其特征在于,包括:如权利要求1至18任一项所述的多层级交换器动态组合内存资源分配的系统。20.一种多层级交换器动态组合内存资源分配的方法,其特征在于,包括:使用至少一个外设互连链路相连的至少一个处理电路,其中,所述至少一个处理电路执行读取引擎,所述读取引擎在服务器启动时目标配置空间的类型数据;将所述类型数据传播到识别引擎,所述识别引擎根据所述类型数据识别当前外设互连链路连接的第一硬件资源,若所述第一硬件资源包括多层级交换器,则识别所述多层级交换器连接的第二硬件资源;将所述识别引擎的识别结果传播到分配引擎,所述分配引擎根据所述第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器时,根据所述第二硬件资源的第二识别结果,为所述多层级交换器及第二硬件资源分配内存资源。21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求20所述的多层级交换器动态组合内存资源分配的方法的步骤。22.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求20所述的多层级交换器动态组合内存资源分配的方法的步骤。5多层级交换器动态组合内存资源分配的系统及方法技术领域[0001]本发明涉及计算机技术领域,尤其涉及一种多层级交换器动态组合内存资源分配的系统及方法。背景技术[0002]智能网卡内部包含设备较多,如网口设备、虚拟网卡、存储设备等物理或者虚拟设备等,这些设备都需要使用内存资源且部分内存资源优先,如32位内存资源需要高度优先满足,但是部分DPU(DataProcessingUnit,数据处理器)设备内部也会包含Switch芯片,Switch芯片下面也会链接其他PCI设备,此时也需要分配内存资源。同时,在服务器中除了DPU设备包含Switch芯片外,服务器的主板或者PCI设备卡也会包含类似的Switch芯片,同样的Switch芯片及其下面的PCI设备也需要资源,但是32位的内存资源是有限的且最大为4GB,若超过4GB将导致部分设备无法使用,如显示功能(DPU显示接口或者板载VGA接口)的接口无法显示。[0003]相关技术通过在服务器启动时进行资源预留,但是Switch芯片可以包含多个层级且每个层级有的是需要进行内存资源预留,有的则不需要进行资源预留,是否进行资源预留取决于端口的用途及设备,此时,由于服务器可能涉及较多的Switch芯片且Switch芯片层级无法固定且无法预测具体哪个Switch芯片需要预留资源,从而导致服务器启动时间显著延长。发明内容[0004]本发明提供了一种内存资源分配方法、电子设备、存储介质及程序产品,以至少解决相关技术中内存资源分配的方式导致服务器启动时间较长的问题。[0005]本发明提供了一种多层级交换器动态组合内存资源分配的系统,包括:服务器的至少一个处理电路,至少一个处理电路与至少一个外设互连链路相连,至少一个处理电路用于:执行读取引擎,读取引擎在服务器启动时目标配置空间的类型数据;将类型数据传播到识别引擎,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,若第一硬件资源包括多层级交换器,则识别多层级交换器连接的第二硬件资源;将识别引擎的识别结果传播到分配引擎,分配引擎根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器时,根据第二硬件资源的第二识别结果,为多层级交换器及第二硬件资源分配第一内存资源。[0006]本发明还提供了一种服务器,包括上述的多层级交换器动态组合内存资源分配的系统。[0007]本发明还提供了一种多层级交换器动态组合内存资源分配的方法,使用至少一个外设互连链路相连的至少一个处理电路,其中,至少一个处理电路用于:执行读取引擎,读取引擎在服务器启动时目标配置空间的类型数据;将类型数据传播到识别引擎,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,若第一硬件资源包括多层级交6换器,则识别多层级交换器连接的第二硬件资源;将识别引擎的识别结果传播到分配引擎,分配引擎根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器时,根据第二硬件资源的第二识别结果,为多层级交换器及第二硬件资源分配内存资源。[0008]本发明还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被处理器执行时实现上述任一种多层级交换器动态组合内存资源分配的方法的步骤。[0009]本发明还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述任一种多层级交换器动态组合内存资源分配的方法的步骤。[0010]本发明通过在服务器启动时动态获取并分析目标配置空间的类型数据,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,并在第一硬件资源包括多层级交换器时,识别多层级交换器连接的第二硬件资源,根据第二硬件资源的第二识别结果确定哪些设备需要进行资源预留,无需逐一检查每个可能的连接情况,并基于第二识别结果为多层级交换器及第二硬件资源分配第一内存资源,避免当外设互连链路存在过多的交换器时,导致在服务器启动时耗费过多的时间进行资源分配,以减少服务器启动时的时间消耗,提高服务器的启动效率,进而保证了内存资源分配的固定性和稳定性。因此,可以解决相关技术中内存资源分配的方式导致服务器启动时间较长技术问题。附图说明[0011]为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0012]图1为本发明实施例提供的多层级交换器动态组合内存资源分配的系统示意图;图2为本发明一个实施例提供的Switch芯片的链路示意图;图3为本发明另一个实施例提供的多层级Switch芯片的链路示例图;图4为本发明一个实施例提供的服务器主板物理链接示意图;图5为本发明一个实施例提供的DPU设备的结构示意图;图6为根据本发明实施例提供的多层级交换器动态组合内存资源分配的方法的流图7为根据本发明实施例提供的服务器启动阶段时多层级交换器组合内存资源分配系统的组件执行连接关系图;图8为本发明一个实施例提供的服务器在启动阶段的内存资源分配示例图;图9为本发明另一个实施例提供的服务器在启动阶段的内存资源分配示例图;图10为根据本发明实施例提供的服务器进入操作系统阶段时多层级交换器组合内存资源分配系统的组件执行连接关系图;图11为本发明一个实施例提供的服务器进入操作系统的内存资源分配示例图。具体实施方式[0013]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本7发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设特定的顺序或先后次序。[0015]为了使本技术领域的技术人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。[0016]本发明实施例提供了一种层级交换器动态组合内存资源分配的系统。[0017]如图1所示,该层级交换器动态组合内存资源分配的系统10包括:服务器的至少一个处理电路11,至少一个处理电路11与至少一个外设互连链路相连,至少一个处理电路11用于:执行读取引擎,读取引擎在服务器启动时目标配置空间的类型数据;将类型数据传播到识别引擎,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,若第一硬件资源包括多层级交换器,则识别多层级交换器连接的第二硬件资源;将识别引擎的识别结果传播到分配引擎,分配引擎根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器时,根据第二硬件资源的第二识别结果,为多层级交换器及第二硬件资源分配第一内存资源。[0018]其中,目标配置空间可以为PCI配置空间,在服务器启动时,本发明实施例的BIOS(BasicInput/OutputSystem,基本输入输出系统)在DXE阶段的PCI(PeripheralComponentInterconnect,外设互连设备)枚举阶段通过读取PCI配置空间的类型及子类型。本发明实施例的外设互联链路可以为PCI链路;第一硬件资源可以包括外设互联设备连接交换器;多层交换器为一个交换器下连接着至少另外一个交换器,为层级结构;第二硬件资源可以包括PCI设备、外设互联端口(PCI端口)等,单层级交换器的链路连接如图2所示,多层级交换器的链路连接如图3所示。[0019]本发明实施例中,若是当前设备启动时设备过多将导致部分设备资源无法有效分配,即4G的32位资源无法满足设备总需求超过4G的限制,如此将导致部分设备无法使用。若当前服务器的PCI链路设备都是直接连接CPU(CentralProcessingUnit,中央处理器)的PCI端桥口则4G资源无需担心不足的问题,但是,若PCI链路经过多层级Switch芯片或者多个PCI根桥链接多个PCISwitch则会出现Switch资源预留不足的问题,将导致系统下设备无法正常工作,因此,本发明实施例首先需要根据PCI配置空间的类型及子类型确定当前PCI链路上的硬件资源数据,以方便后续为服务器的所有设备进行内存资源分配,资源分配既包括了资源预留分配,也包括了当前已识别的设备资源分配。服务器主板物理链接如图4所示,这些硬件资源都需要预留内存资源,因此在服务器启动时需要耗费过多的时间进行[0020]具体而言,本发明实施例可以读取引擎在服务器启动时PCI配置空间的类型数据,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,并判断当前PCI链路是否包含多层Switch芯片,当PCI链路存在过多的Switch芯片时,BIOS会因为过多的Switch8芯片而导致在服务器启动时BIOS耗费过多的时间进行资源分配,因此,为了优化服务器的启动时间及确保特定Switch芯片的资源分配固定,本发明实施例可以识别多层级交换器连接的第二硬件资源,根据第二硬件资源的第二识别结果确定哪些设备需要进行资源预留,无需逐一检查每个可能的连接情况,并为多层级交换器及第二硬件资源分配第一内存资源,以减少服务器启动时的时间消耗,提高服务器的启动效率。[0021]在本发明实施例中,分配引擎用于:根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有外设互连设备时,对外设互连设备分配第一内存资源。[0022]可以理解的是,本发明实施例可以在根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有外设互连设备时,分配引擎对外设互联设备分配第一内存资源,为外设互联设备正常分配32位资源。[0023]在本发明实施例中,分配引擎用于:对外设互连设备分配第一内存资源之前,若外设互连设备为数据处理器,则根据数据处理器的资源大小分配第一内存资源。[0024]由于DPU(DataProcessingUnit,数据处理器)通常有特定的内存资源需求,因此本发明实施例可以读取外设互联设备的标识,通过标识识别外设互联设备是否为DPU,以便为外设互连设备采用不同的内存分配策略,当外设互连设备不是DPU时,对其正常分配内存备能够正常运行。础设施虚拟化服务的专用处理器,基于ARM/X86等架构的CPU与ASIC(ApplicationSpecificIntegratedCircuit)/NP(NetworkProcessor)/FPGA(FieldProgrammableGateArray)等专用硬件加速引擎组成的计算架构,形成提供虚拟化功能的实体,需要足够品已被广泛应用于数据中心的各种架构服务器中(常以智能网卡的形式出现),包括但不限于X86架构和ARM架构等,但是无论何种架构服务器在应用智能网卡时都需要提前对智能网物理或者虚拟设备等,这些设备都需要使用内存资源且部分内存资源优先,如32位内存资源需要高度优先满足,因此需要提前对DPU进行资源预留,以确保各种设备能获得所需的[0026]其中,基于标识对是否为数据处理器进行判断,具体为可以识别外设互联设备的DID和VID,若DID和VID存在于预先设定的数据处理器的标识信息列表,则判断该外设互联设备为数据处理器,否则不是数据处理器。[0027]具体而言,服务器启动时,BIOS在DXE阶段的PCI枚举阶段通过读取PCI配置空间的类型及子类型判断当前PCI链路是否包含Switch芯片,若无则继续通过读取每个PCI设备的DID和VID确认当前设备是否为DPU设备,若不是则正常分配32位内存资源;若是DPU设备则物理链接的PCI链路的桥的PCI配置空间热插拔功能(hotplug功能)进行使能(开启)。[0028]举例而言,服务器的CPU存在多条PCI链路,其中,PCI链路A上连接了一个DPU设备,同时也连接了其他几个普通的PCI设备(包括PCI设备A、PCI设备B),PCI链路A上有一个PCI9的32位内存资源,比如PCI设备A需要30MB,PCI设备B需要15MB,则PCI链路A总共所需的32位内存资源就是200+30+15=245MB。[0029]在本发明实施例中,分配引擎用于:根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有外设互连端口和交换器时,若外设互连端口为目标端口,则对外设互连端口和交换器分配第一内存资源。[0030]可以理解的是,本发明BIOS在PCI枚举阶段通过读取PCI配置空间的类型及子类型确认当前PCI链路有Switch芯片及是否是特定PCI端口(目标端口),若是特定PCI端口则进行32位内存资源预留及设置Switch芯片的上下行端口及Switch芯片所在的PCI链路桥的再对Switch芯片的上下行端口进行Hotplug功能使能设置及PCI端口资源进行预留。由此,通过仅对特定PCI端口预留资源并启用hotplug功能,可以确保关键设备得到必要的支持,同时减少对非必要端口的资源分配。若不是特定PCI端口且存在PCISwitch芯片,则BIOS不再对Switch芯片的上下行端口进行Hotplug功能使能设置及PCI端口资源进行预留,从而避免不必要的资源占用,简化资源管理。[0031]在本发明实施例中,分配引擎用于:若当前层级交换器的下行端口连接有外设互连设备,则对当前层级交换器的上行端口、下行端口和外设互连设备分配第一内存资源;若当前层级交换器的下行端口空闲,则不对当前层级交换器的上行端口和下行端口分配内存资源。[0032]可以理解的是,当检测到某个Switch芯片的下行端口连接有PCI设备时,会为这些设备分配所需的内存资源,并确保相关的hotplug功能被启用。如果某一层级的下行端口没有连接任何设备(即空闲),则不为该端口分配内存资源,并且关闭hotplug功能以节省资[0033]具体而言,当Switch芯片下行端口继续存在Switch芯片时即PCI链路存在物理多层级Switch芯片时,需要将多层级Switch芯片的下行端口的PCI设备及整个PCI链路经过的Switch层级上下行端口进行资源预留且将所在的PCI链路的PCI配置空间设置hotplug功能,通过仅在实际需要的地方预留资源,可以避免不必要的资源浪费;若当多层级Switch芯片的终端PCI端口无PCI设备时则无需预留资源并将此整个PCI链路及各个层级的Switch芯片的上下行端口进行hotplug功能关闭,若上述两种情况出现交叉时则将以预留内存资源的Switch端口进行预留内存资源。[0034]在本发明实施例中,至少一个处理电路11用于:执行读取引擎,读取引擎读取外设互连设备的标识;分配引擎用于:根据外设互连设备的标识确定第一内存资源分配需求,若确定外设互连设备存在第一内存资源分配需求,则对当前层级交换器的上行端口、下行端口和外设互连设备分配第一内存资源。[0035]其中,标识用于标识外设互联设备的类型,标识可以为DID(DeviceID,设备ID)和VID(VendorID,厂商ID)。在实际执行过程中,本发明实施例B[0036]本发明实施例基于读取引擎获取到的标识信息,分配引擎会分析这些信息来确定是否需要为外设互连设备预留第一内存资源。如果根据设备的标识信息判断出该设备确实需要第一内存资源分配,则分配引擎会对当前层级交换器(Switch芯片)的上行端口、下行端口以及该外设互连设备本身分配所需的内存资源。[0037]在本发明实施例中,分配引擎用于:若确定外设互连设备不存在第一内存资源的分配需求,则对当前层级交换器的下行端口分配非内存资源。[0038]具体而言,本发明实施例BIOS将对多层级Switch芯片的PCI设备进行判断,通过所在的Switch链路及PCI桥链路的PCI配置空间进行资源预留及hotplug功能使能,若不是则将此PCI终端设备所在的Switch的下行端口进行非内存资源预留及关闭此下行端口的hotplug功能,对于此Switch上行口则需要判断当前Switch芯片下行端口是否存在其他设备,若无则将此上行口进行关闭并依此轮询直至此PCI链路桥的hotplug功能关闭,若存在其他下行端口且需要进行资源预留则此Switch芯片的上行口则不能进行hotplug功能关[0039]由此,本发明实施例对PCI设备Switch芯片的所有下行端口进行扫描,检查是否有其他设备连接,如果某个Switch芯片的下行端口中没有任何设备连接,则认为该Switch芯片当前没有承载实际的工作负载,可以将此上行端口进行关闭并依此轮询直至此PCI链路桥的hotplug功能关闭;如果当前Switch芯片的下行端口中存在其他设备,则该Switch芯片的上行端口必须保持启用状态,并且为这些设备需要预留内存资源,以及开启热插拔功能。由此,本发明实施例通过动态判断Switch芯片的下行端口连接状态,可以避免不必要的资源浪费。[0040]在本发明实施例中,至少一个处理电路11用于:执行设置引擎,设置引擎为已经分配第一内存资源的硬件资源,所在的外设互连链路设置热插拔功能。[0041]在上述实施例中,本发明实施例可以为已经分配了第一内存资源的硬件资源所在的外设互连链路(例如PCI链路)启用热插拔(Hotplug)功能。通过使能热插拔功能,以便在设备插入时自动为其分配所需的内存资源,在设备拔出时自动回收这些资源,实现资源的[0042]在本发明实施例中,至少一个处理电路11用于:在识别引擎轮询所有外设互连链路、第一硬件资源和第二硬件资源时,执行启动引擎,启动引擎启动服务器的操作系统。[0043]可以理解的是,本发明实施例在识别引擎轮询完所有的外设互连链路、第一硬件资源和第二硬件资源时,执行启动引擎,启动服务器的操作系统,进入内存资源分配的下一阶段,即服务器的操作系统阶段。[0044]综上,本发明实施例在服务器启动时,即启动阶段进行第一内存资源分配的过程如下。[0045](1)服务器启动时,BIOS在DXE阶段的PCI枚举阶段通过读取PCI配置空间的类型及子类型判断当前PCI链路是否包含Switch芯片,若无则继续通过读取每个PCI设备的DID和VID确认当前设备是否为DPU设备,若不是则正常分配32位内存资源;若是DPU设备则根据DPU的已知32位资源大小进行32位资源预留;同时,与当前DPU物理连接链接的PCI链路的桥的PCI配置空间热插拔功能即hotplug功能进行使能即开启;11(2)BIOS在PCI枚举阶段通过读取PCI配置空间的类型及子类型确认当前PCI链路有Switch芯片及是否是特定PCI端口,若是特定PCI端口则进行32位内存资源预留及设置Switch芯片的上下行端口及Switch芯片所在的PCI链路桥的PCI配置空间hotplug功能使能设置;若不是特定PCI端口且存在PCISwitch芯片,则BIOS不再对Switch芯片的上下行端口进行Hotplug功能使能设置及PCI端口资源进行预留;当Switch芯片下行端口继续存在Switch芯片时即PCI链路存在物理多层级Switch芯片时,需要将多层级Switch芯片的下行端口的PCI设备及整个PCI链路经过的Switch层级上下行端口进行资源预留且将所在的PCI链路的PCI配置空间设置hotplug功能,若当多层级Switch芯片的终端PCI端口无PCI设备时则无需预留资源并将此整个PCI链路及各个层级的Switch芯片的上下行端口进行hotplug功能关闭,若上述两种情况出现交叉时则将以预留内存资源的Switch端口进行预留内存资确认是需要预留内存资源的PCI设备时则BIOS将此终端PCI设备所在的Switch链路及PCI桥链路的PCI配置空间进行资源预留及hotplug功能使能,若不是则将此PCI终端设备所在的Switch的下行端口进行非内存资源预留及关闭此下行端口的hotplug功能,对于此Switch上行口则需要判断当前Switch芯片下行端口是否存在其他设备,若无则将此上行口进行关闭并依此轮询直至此PCI链路桥的hotplug功能关闭,若存在其他下行端口且需要进行资源预留则此Switch芯片的上行口则不能进行hotplug功能关闭;(3)按照步骤1和步骤2依次轮询所有的PCI链路桥及对应PCI链路桥下的Switch芯片及其设备,当轮询完所有的CPU的PCI链路及Switch芯片后则进行继续启动并进入操作系综上,本发明实施例可以灵活适配不同类型的外设互连设备、交换器、外设互连端口对内存资源的需求,避免对于设备的内存资源分配不足,而导致设备无法正常使用,同时提高了内存资源的利用率,避免内存资源的浪费,进而提升服务器的整体性能与稳定性。[0046]在本发明一个实施例中,至少一个处理电路用于:在服务器进入操作系统后,执行读取引擎,读取引擎读取服务器的内存分配函数;分配引擎,根据内存分配函数重新分配服务器第一内存资源。[0047]其中,内存分配函数用于确定是否需要重新进行资源分配,内存分配函数可以过操作系统的Grub参数中识别得到,为PCI=realloc。[0048]由于服务器在进入操作系统阶段,资源需求可能会发生变化,因此本发明实施例在服务器进入操作系统后,读取服务器的内存分配函数,以确定是否需要重新进行第一内存资源的分配。[0049]在本发明一个实施例中,至少一个处理电路用于:在根据内存分配函数重新分配服务器第一内存资源之前,执行读取引擎,读取引擎读取服务器的重新分配需求;分配引擎,根据重新分配需求和内存分配函数,重新分配服务器第一内存资源。[0050]可以理解的是,本发明实施例可以根据重新分配需求和内存分配函数,以确定是否需要重新分配服务器的第一内存资源。[0051]在本发明实施例中,若读取引擎未读取服务器的重新分配需求,分配引擎,删除内存分配函数,保留服务器启动阶段第一内存资源的分配参数。[0052]可以理解的是,本发明实施例在未读取到服务器的重新分配需求时,把内存分配函数删除,以在服务器进入操作系统不进行内存资源的重新分配,保留服务器启动阶段第一内存资源的分配参数。[0053]具体而言,在服务器进入操作系统时,操作系统的Grub界面默认将PCI=realloc参数添加至Grub参数内,若此时不需要系统下重新对BIOS分配的内存资源进行重新分配需求,则将PCI=realloc参数在Grub文件中进行移除;若此时需要在系统下重新对BIOS分配的内存资源进行重新分配需求,则将此PCI=realloc参数保留,此时操作系统会重新对服务器的所有的PCI资源进行分配,以保证内存资源的合理分配利用。[0054]在本发明实施例中,至少一个处理电路11用于:执行扫描引擎,扫描引擎扫描服务器的所有外设互连链路;将扫描引擎的扫描数据传播到识别引擎,识别引擎识别扫描数据,若识别到当前外设互连链路、当前外设互连链路连接的第一硬件资源、当前外设互连链路连接的交换器,开启热插拔功能,则保留当前外设互连链路在服务器启动阶段分配的第一内存资源。[0055]可以理解的是,本发明实施例可以执行扫描引擎,将扫描引擎的扫描数据传播到识别引擎,识别引擎识别扫描数据,在识别到当前外设互连链路、当前外设互连链路连接的第一硬件资源、当前外设互连链路连接的交换器,开启热插拔功能,表明设备可能会动态进行变化,则保留当前外设互连链路在服务器启动阶段分配的第一内存资源,以确保设备在接入或移除时能够正常工作,合理分配内存资源。[0056]在本发明实施例中,识别引擎用于:若识别到当前外设互连链路、当前外设互连链路连接的第一硬件资源、当前外设互连链路连接的交换器,关闭热插拔功能,分配引擎,根据内存分配函数重新分配服务器第一内存资源。[0057]可以理解的是,本发明实施例在识别到当前外设互联链路、当前外设互连链路连接的第一硬件资源、当前外设互连链路连接的交换器的热插拔功能关闭时,则重新分配服务器启动时已经分配的第一内存资源或无法分配第一内存资源的设备,以实现内存资源的灵活分配,以适应新的内存资源分配需求。[0058]在本发明实施例中,识别引擎用于:若识别到当前外设互连链路空闲,或者,当前外设互连链路连接的交换器空闲,则停止分配服务器的第一内存资源。[0059]可以理解的是,本发明实施例在当前外设互联链路空间,或者当前外设互联链路连接的交换器空闲时,则停止分配服务器的第一内存资源,将这些资源保留下来,用于其他更需要的任务或进程,提高内存资源的整体利用率,使服务器能够更高效地运行。[0060]在本发明实施例中,至少一个处理电路11用于:执行扫描引擎,扫描引擎扫描当前外设互连链路层级;将扫描引擎的扫描数据传播到识别引擎,识别引擎识别扫描数据,若当前外设互连链路层级为N,则第一内存资源的重新分配次数为N+1;分配引擎根据重新分配次数进行第一内存资源分配。[0061]由于服务器的外设互连链路可能会存在多层结构,因此本发明实施例可以对当前外设互连链路层级进行扫描,若在扫描过程中出现数据交换器物理连接时继续扫描,直至将所有层级的数据交换器扫描完毕后统计最终的层级数,若层级数为N,则将重新分配资源的次数统计为N+1,在扫描层级完成后对已扫描层级重新进行资源分配,通过统计层级数和重新分配次数可以为后续的资源重新分配提供依据,以确保资源重新分配的准确[0062]在本发明实施例中,至少一个处理电路用于:执行读取引擎,读取引擎读取服务器的第二内存资源;将第二内存资源的剩余资源传播到识别引擎,识别引擎识别剩余资源是否小于资源阈值;将识别引擎的识别结果传播到分配引擎,分配引擎在剩余资源小于资源阈值时,停止服务器的第一内存资源的分配、对不支持热插拔功能的硬件资源和外设互连链路已经分配的第一内存资源重新分配。[0064]可以理解的是,本发明实施例可以识别第二内存资源以优化第一内存资源的分配,在第二内存资源的剩余资源小于资源阈值时,表明当前内存资源不足,停止当前层级或者下一层级的硬件资源的第一内存资源的分配,以提高内存资源分配的合理性和有效性。[0065]在本发明实施例中,分配引擎进一步用于:若多层级交换器的任意一个交换器不支持热插拔功能,则重新分配不支持热插拔功交换器所在外设互连链路的第一内存资源;若多层级交换器的所有交换器支持热插拔功能,则保留服务器启动阶段第一内存资源的分配参数。[0066]可以理解的是,本发明实施例在多层级交换器的任意一个交换器不支持热插拔功能,则重新分配不支持热插拔功交换器所在外设互连链路的第一内存资源,使内存资源更好地适配不支持热插拔的链路,避免因热插拔相关的资源分配与实际硬件能力不匹配而导致的问题,且使内存资源分配更合理,将原本为热插拔功能预留的部分内存资源释放出来,用于其他更需要的地方,提高内存资源的整体使用效率;在多层级交换器的所有交换器支持热插拔功能时,则保留服务器启动阶段第一内存资源的分配参数,以更灵活的适应设备的动态变化,且可以避免因频繁调整内存分配而可能导致的系统性能波动或配置错误,维持服务器的整体性能和稳定性。[0067]具体而言,对当前PCI链路的层级进行扫描,若在扫描过程中出现switch物理连接时则继续扫描,直至将所有层级的Switch芯片扫描完毕后统计最终的层级数,若层级数为N,则将重新分配资源的次数统计为N+1;扫描层级完成后则由系统对已扫描层级重新进行资源分配。由此,本发明实施例可以根据每个层级的设备情况和热插拔功能状态进行细致的资源重新分配,提高资源分配的合理性和有效性,避免多个层级的设备出现资源冲突、分资源分配的目的是为连接的外设互连设备提供内存资源以支持其运行,因此若当前层级的外设互连链路下面无外设互连设备,对该外设互连链路分配内存资源是无意义的,会造成资源浪费,因此对当前层级的桥不进行资源分配,或者数据交换器的热插拔功能关闭,表明当前数据交换器不会有设备的插入或拔出操作,启动阶段预留的第一内存资源不会因为设备的接入或移除而使用,因此释放已预留的第一内存资源,以后续分配给其他若当前层级的外设互连链路下面存在外设互连设备,为了使这些设备正常运行,因此将外设互连设备进行资源分配,若数据交换器桥的热插拔功能开启,表明设备可能会存在接入或移除操作,因此不对外设互连设备进行资源分配,按照服务器的启动阶段设置的资源大小进行使用,避免重新分配资源而导致设备出现故障或数据丢失;若当前层级的外设互连链路下面存在外设互连设备和下一个层级的设备,则对外设互连设备进行资源分配,以保证设备正常运行,并判断下一个层级的外设互连链路是否若下一层级的外设互连链路没有连接外设互连设备,扫描到PCI桥的及PCI桥下的Switch芯片和Switch芯片的下行端口的PCI配置空间hotplug功能开启时,此时将此设备在BIOS启动时预留的资源进行保留,若PCI桥及PCI桥下的Switch芯片和Switch芯片的下行端口的PCI配置空间hotplug功能关闭时,操作系统会将层级重新进行资源分配,若第一个层级的桥下面无PCI终端设备则将此桥不进行资源分配下一级桥是否存在PCI终端设备,若下一级桥无终端设备且下一级桥的PCI配置空间的资源分配或者下级桥的Hotplug功能使能则无需系统对此Swit已无内存资源可以分配的情况下,则将在当前层级下的剩余PCI设备或者下一层级的个节点的Switch芯片不支持Hotplug功能则系统层将对此条PCI链路进行重新资源分配,若在PCI链路的多层级Switch芯片中,每一个Switch芯片层级均支持hotplug功能,则将按照服务器启动时的BIOS分配的资源大小进行资源预留且不进行资源重新分配。[0069]根据本发明实施例提出的多层级交换器动态组合内存资源分配系统,通过在服务器启动时动态获取并分析目标配置空间的类型数据,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,并在第一硬件资源包括多层级交换器时,识别多层级交换器连接的第二硬件资源,根据第二硬件资源的第二识别结果确定哪些设备需要进行资源预留,无需逐一检查每个可能的连接情况,并基于第二识别结果为多层级交换器及第二硬件资源分配第一内存资源,避免当外设互连链路存在过多的交换器时,导致在服务器启动时耗费过多的时间进行资源分配,以减少服务器启动时的时间消耗,提高服务器的启动效率,进而保证了内存资源分配的固定性和稳定性。因此,可以解决相关技术中内存资源分配的方式导致服务器启动时间较长技术问题。[0070]本发明的实施例还提供一种服务器,包括上述的多层级交换器组合内存资源分配的系统。[0071]本发明的实施例还提供一种多层级交换器动态组合内存资源分配的方法。[0072]如图6所示,该多层级交换器动态组合内存资源分配的方法,包括以下步骤:在步骤S101中,使用至少一个外设互连链路相连的至少一个处理电路,其中,至少一个处理电路用于:执行读取引擎,读取引擎在服务器启动时目标配置空间的类型数据。[0073]可以理解的是,本发明实施例可以使用至少一个外设互连链路相连的至少一个处理电路,至少一个处理电路用于执行读取引擎,读取引擎在服务器启动时读取服务器启动时目标配置空间的类型数据,目标配置空间可以为PCI配置空间,在服务器启动时,本发明实施例的BIOS在DXE阶段的PCI枚举阶段通过读取PCI配置空间的类型及子类型。[0074]在步骤S102中,将类型数据传播到识别引擎,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,若第一硬件资源包括多层级交换器,则识别多层级交换器连接的第二硬件资源。[0075]可以理解的是,本发明实施例可以将PCI配置空间的类型数据传播到识别引擎,识别引擎识别当前外设互连链路连接的第一硬件资源,以便后续进行内存资源分配。[0076]在步骤S103中,将识别引擎的识别结果传播到分配引擎,分配引擎根据第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器时,根据第二硬件资源的第二识别结果,为多层级交换器及第二硬件资源分配内存资源。[0077]需要说明的是,多层级交换器动态组合内存资源分配的方法所对应实施例中特征的说明可以参见多层级交换器动态组合内存资源分配的系统所对应实施例的相关说明,这里不再一一赘述。[0078]根据本发明实施例提出的多层级交换器动态组合内存资源分配的方法,通过在服务器启动时动态获取并分析目标配置空间的类型数据,识别引擎根据类型数据识别当前外设互连链路连接的第一硬件资源,并在第一硬件资源包括多层级交换器时,识别多层级交换器连接的第二硬件资源,根据第二硬件资源的第二识别结果确定哪些设备需要进行资源预留,无需逐一检查每个可能的连接情况,并基于第二识别结果为多层级交换器及第二硬件资源分配第一内存资源,避免当外设互连链路存在过多的交换器时,导致在服务器启动[0079]下面通过一个具体实施例来描述本发明实施例的多层级交换器动态组合内存资服务器启动阶段时多层级交换器动态组合内存资源分配系统的各个组件之间的等),在第一硬件资源包括多层级交换器,需要识别多层级交换器连接的第二硬件资源(包括外设互联端口、外设互联设备等),并生成识别结果,将识别结擎根据所述第一硬件资源的第一识别结果,确定当前外设互连链路连接有多层级交换器[0080]下面结合图7所示的启动阶段的各个组件之间的执[0081]1、在服务器启动时在DXE阶段通过读取PCI类型、子类型等对PCI链路是否存在口且需要预留内存资源且支持系统下热插拔功能,若无设备且不是需要预留资源口则不进行分配内存资源,若是存在设备且不是DPU或者是特定设备则按照正常的内存资Switch芯片及是否是特定PCI端口,若是特定PCI端口则进行32位内存资源预留及设置Switch芯片的上下行端口及Switch芯片所在的PCI链路桥的PCI配置空间hotplug功能使能行资源预留,则将此对应SwitchN的下行端口的hotplug功能使能,若存在N端口对应的[0086]服务器进入操作系统阶段多层级交换器动态组合内存资源分配系统的各个组件之间的执行连接关系如图10所示,服务器的操作系统控制处的内存资源重新分配需求读取结果,执行对内存分配函数的删除操作(即不重新分配内存[0087]下面结合图10所示的启动阶段的各个组件之间的执行连接关系图来描述服务器扫描到PCI桥的及PCI桥下的Switch芯片和Switch芯片的下行端口的PCI配置空间Hotplug功能开启时,此时将此设备在BIOS启动时预留的资源进行保留,若PCI桥及PCI桥下的Switch芯片和Switch芯片的下行端口的PCI配置空间Hotplug功能关闭时,操作系统会将路中出现任何一个节点的Hotplug功能未开启则将进行资源重新分配,若均开启则采用要将DPU所在的PCI链路的桥配置空间将hotplug功能开启及已经识别的PCI设备的P桥的PCI配置空间的hotplug功能使能、需要系统下需要支持热插拔功能的PCI桥的PCI配置芯片的上下行端口的PCI配置空间的hotplug功能开启且Switch芯片所在的PCI链路桥的PCI配置空间的hotplug功能进行开启;上述PCI链路存在与不存在Switch芯片的方案在Hotplug功能开启时告知操作系统此时无需再次对DPU、已侦测到的PCI设备或者需要支持32位内存资源进行预留,若PCI桥无hotplug功能且无设备则无需进行32位内存资源预留,备进行判断,尤其是对DPU或者特定的PCI设备进行主动识别,并对DPU及特定设备所在的式进行资源分配并将所在的PCI链路的Hotplug功能进行关闭,但对于PCI行端口进行判断是否是需要预留资源支持系统下热插拔功能且无PCI设备,或者是下行端则对应的上行端口也需要使能,N-1层级下行端口与N层级上行端口的hotplug功能需要使能,按照此方法直至所有Switch层级执行完毕,并将Switch层级所在的PCI链路桥的[0090]当服务器进入操作系统后,因为PCI=Realloc参数默认已经存在且操作系统会对系统下内存资源进行重新分配即使BIOS已经完成内存资源分配如32位内存资源分配已完设备的位置信息,按照参数的功能会因为后识别到的PCI设备因为内存资源已经分配完成重新分配方案且每个Switch芯片的上下行端口及Switch芯片所在的PCI链路的桥必须将设备均完成资源分配,若当出现32位内存资源不足时则将放弃后面层级的Switch芯片及功能开启、PCI链路Switch芯片上下行端口及PCI链路桥的Hotplug功能进行使能,避免系统再次重新分配导致DPU及特定PCI设备无法正常使用,若DPU及特定PCI设备所在的Hotplug功能关闭且DPU设备在32位内存资源已经耗尽的情况下将导致DPU及特定PCI设备的资源被释放无法满足正常使用时的内存资源请求,故出现DPU无法显示或者DPU或者特定PCI设备功能无法正常使用的问题,通过上述方案设置可保证DPU及特定PCI设备在任何时候都能正常使用,无需担心资源问题出现DPU无法使用的问题;若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论