发明内容
为了解决现有技术在NUMA架构中硬件发生变化后,OS不感知,导致硬件之间频繁出现跨节点访问,造成系统计算性能降低的问题,本发明实施例提供一种信息更新的方法,可以在硬件层面的NUMA架构发生变化后,及时更新软件层面的NUMA架构信息,从而使软件层面的NUMA架构信息与硬件层面的NUMA架构实时保持一致,从而避免出现跨节点访问,提高了系统的计算性能。本发明实施例还提供了相应的装置。
本发明第一方面提供一种信息更新的方法,所述方法应用于非一致性内存访问NUMA架构的计算机系统,所述计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息;所述方法包括:
当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;
根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。
结合第一方面,在第一种可能的实现方式中,所述NUMA架构在所述硬件层面按照预置划分规则将所述硬件资源划分到不同节点,每个节点中包含划分得到的硬件资源,所述软件层面的架构信息包含节点标识与硬件资源标识的对应关系;
所述当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息,包括:
当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息,包括:
删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系;
建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系。
结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系,每个内存区域都对应处理器核中的一个内存控制器;
所述当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识,包括:
当发生内存区域迁移时,获取发生迁移的内存区域的标识,所述发生迁移的内存区域迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系,包括:
删除所述发生迁移的内存区域的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系,包括:
建立所述发生迁移的内存区域的标识与所述迁移后所属节点的节点标识之间的对应关系。
结合第一方面第一种可能的实现方式,在第三种可能的实现方式中,所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系;
所述当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识,包括:
当发生处理器核迁移时,获取发生迁移的处理器核的标识,所述发生迁移的处理器核迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系,包括:
删除所述发生迁移的处理器核的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系,包括:
建立所述发生迁移的处理器核的标识与所述迁移后所属节点的节点标识之间的对应关系。
结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,所述方法还包括:
确定发生内存迁移时正在进行的业务,所述业务由所述迁移前所属节点中的一个处理器核进行处理;
将所述业务迁移到所述迁移后所属节点的一个处理器核上,或者,将所述业务的业务数据转移到所述迁移前所属节点的另外一个内存区域中。
结合第一方面第三种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:
确定发生处理器核迁移时正在进行的业务,所述业务由所述发生迁移的处理器核进行处理;
将所述业务的业务数据转移到所述迁移后所属节点的一个内存区域中,或者,将所述业务迁移到所述迁移前所属节点的另外一个处理器核中。
本发明第二方面提供一种信息更新的装置,所述装置应用于非一致性内存访问NUMA架构的计算机系统,所述计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息;所述装置包括:
获取单元,用于当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;
更新单元,用于根据所述获取单元获取的所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。
结合第二方面,在第一种可能的实现方式中,
所述获取单元,具体用于在所述NUMA架构在所述硬件层面按照预置划分规则将所述硬件资源划分到不同节点,每个节点中包含划分得到的硬件资源,所述软件层面的架构信息包含节点标识与硬件资源标识的对应关系时,当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述更新单元,包括:
删除子单元,用于删除所述获取单元获取的所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系;
建立子单元,用于建立所述获取单元获取的所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系。
结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,
所述获取单元,具体用于在所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系,每个内存区域都对应处理器核中的一个内存控制器时,当发生内存区域迁移时,获取发生迁移的内存区域的标识,所述发生迁移的内存区域迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除子单元,具体用于删除所述发生迁移的内存区域的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立子单元,具体用于建立所述发生迁移的内存区域的标识与所述迁移后所属节点的节点标识之间的对应关系。
结合第二方面第一种可能的实现方式,在第三种可能的实现方式中,
所述获取单元,具体用于在所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系时,当发生处理器核迁移时,获取发生迁移的处理器核的标识,所述发生迁移的处理器核迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除子单元,具体用于删除所述发生迁移的处理器核的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立子单元,具体用于建立所述发生迁移的处理器核的标识与所述迁移后所属节点的节点标识之间的对应关系。
结合第二方面第二种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:
第一确定单元,用于在所述获取单元获取到发生内存迁移时,确定发生内存迁移时正在进行的业务,所述业务由所述迁移前所属节点中的一个处理器核进行处理;
第一迁移单元,用于将所述第一确定单元确定的所述业务迁移到所述迁移后所属节点的一个处理器核上,或者,将所述业务的业务数据转移到所述迁移前所属节点的另外一个内存区域中。
结合第二方面第三种可能的实现方式,在第五种可能的实现方式中,所述装置还包括:
第二确定单元,用于在所述获取单元获取到发生处理器核迁移时,确定发生处理器核迁移时正在进行的业务,所述业务由所述发生迁移的处理器核进行处理;
第二迁移单元,用于将所述第二确定单元确定的所述业务的业务数据转移到所述迁移后所属节点的一个内存区域中,或者,将所述业务迁移到所述迁移前所属节点的另外一个处理器核中。
本发明实施例采用的信息更新的方法,所述方法应用于非一致性内存访问NUMA架构的计算机系统,所述计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息;所述方法包括:当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。与现有技术中在硬件层面的NUMA架构发生变化后,软件层面不感知,也不随之变化,导致硬件之间频繁出现跨节点访问,造成系统计算性能降低相比,本发明实施例提供一种信息更新的方法,可以在硬件层面的NUMA架构发生变化后,及时更新软件层面的NUMA架构信息,从而使软件层面的NUMA架构信息与硬件层面的NUMA架构实时保持一致,从而避免出现跨节点访问,提高了系统的计算性能。
具体实施方式
本发明实施例提供本发明实施例提供一种信息更新的方法,可以在硬件层面的NUMA架构发生变化后,及时更新软件层面的NUMA架构信息,从而使软件层面的NUMA架构信息与硬件层面的NUMA架构实时保持一致,从而避免出现跨节点访问,提高了系统的计算性能。本发明实施例还提供了相应的装置。以下分别进行详细说明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
参阅图1,本发明实施例提供的计算机系统架构可以包括:硬件资源层、基本输入输出系统(Basic Input Output System,BOIS)、操作系统(OperationSystem,OS)和用户应用层,所述硬件资源层可以包括处理器、内存、输入输出系统等硬件资源,用户应用层可以包括各种业务应用,本发明实施例中的操作系统可以为Linux系统。
非一致性内存访问(Non Uniform Memory Access Architecture,NUMA)架构的计算机一般由多个节点(Node)组成,每个Node下包含中央处理器(Central Processing Unit,CPU)、内存、输入输出(Input/Output,IO)设备等,各node间通过总线连接形成一个大的计算机系统,本发明实施例中的CPU可以理解为单核CPU,对于NUMA架构可以将多核的CPU按照核进行划分。
图2为NUMA架构示意图,图2所示的NUMA架构计算机系统中包含3个节点,分别为Node1、Node2和Node3,Node1中包含内存区域直接内存存取((DirectMemory Access,DMA)内存区域、DMA32内存区域、Normal1内存区域,内存区域的划分由内存物理地址决定,0-16M为DMA,16M-4G为DMA32,大于4G的都为NORMAL,对内存区域的管理可以通过ZONE链表(zonelist)的形式进行管理。
Node2包含的内存区域为Normal2,Node3包含的内存区域为Normal3。Node1、Node2和Node3都分别包含CPU1、CPU2和CPU3,同时三个节点还分别包含其他硬件资源。
参阅图3,本发明实施例提供的信息更新的方法的一实施例包括:
101、非一致性内存访问NUMA架构的计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息,当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息。
在硬件层面NUMA架构包含节点,各节点中包含硬件资源,在软件层面系统在初始化高级配置和电源管理接口(Advanced Configuration and PowerManagement Interface,ACPI)时会建立一个与硬件层面NUMA架构相同的NUMA架构信息。
102、根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。
本发明实施例采用的信息更新的方法,所述方法应用于非一致性内存访问NUMA架构的计算机系统,所述计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息;所述方法包括:当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。与现有技术中在硬件层面的NUMA架构发生变化后,软件层面不感知,也不随之变化,导致硬件之间频繁出现跨节点访问,造成系统计算性能降低相比,本发明实施例提供一种信息更新的方法,可以在硬件层面的NUMA架构发生变化后,及时更新软件层面的NUMA架构信息,从而使软件层面的NUMA架构信息与硬件层面的NUMA架构实时保持一致,从而避免出现跨节点访问,提高了系统的计算性能。
可选地,在上述图3对应的实施例的基础上,本发明实施例提供的信息更新的方法的第一个可选实施例中,所述NUMA架构在所述硬件层面按照预置划分规则将所述硬件资源划分到不同节点,每个节点中包含划分得到的硬件资源,所述软件层面的架构信息包含节点标识与硬件资源标识的对应关系;
所述当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息,可以包括:
当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息,可以包括:
删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系;
建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系。
本发明实施例中,在系统初始化时,在软件层面会建立与硬件层面NUMA架构相同NUMA架构信息,如图2所示的NUMA架构硬件层面划分方式,在软件层面就会有如下节点标识与硬件资源标识的对应关系,如表1所示:
表1:节点标识与硬件资源标识的对应关系
当然,针对其他硬件资源也可以有节点标识与硬件资源标识的对应关系,本发明实施例中以内存区域和CPU为例做重点说明,其他硬件资源不做一一介绍,但可以参阅内存区域和CPU的说明进行相应理解。
图2所示的内存区域划分方式为现有技术已有的方式,考虑到硬件进行内存迁移的最小粒度一般是MC级别,所以本发明实施例对ZONE在原有物理地址基础上进一步按MC级别细分,如图4所示,在计算机系统启动时由BIOS上报CPU里内存控制器上挂载的内存的物理地址范围;OS在对ZONE做初始化时,加入上述信息,形成ZONE_MC0/1/..式样的新ZONE;如图4所示,假设每个CPU下有两个内存控制器,对ZONE按内存控制器物理地址改造后NODE1下有4个ZONE,NODE2和NODE3下各有2个ZONE。
这样,针对图4所示的内存区域ZONE,在软件层面就会有如下节点标识与硬件资源标识的对应关系:如表2所示:
表2:节点标识与硬件资源标识的对应关系
当硬件层面的NUMA架构发生硬件资源迁移,可以为内存区域迁移,也可以为CPU迁移,也可以是其他硬件资源迁移,在硬件资源发生迁移后,更新软件层面的架构信息,实际上就是更新表1或表2中的节点标识与硬件资源标识的对应关系。
可选地,在上述第一个可选实施例的基础上,本发明实施例提供的信息更新的方法的第二个可选实施例中,所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系,每个内存区域都对应处理器核中的一个内存控制器;
所述当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识,可以包括:
当发生内存区域迁移时,获取发生迁移的内存区域的标识,所述发生迁移的内存区域迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系,可以包括:
删除所述发生迁移的内存区域的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系,可以包括:
建立所述发生迁移的内存区域的标识与所述迁移后所属节点的节点标识之间的对应关系。
本发明实施例中,以内存区域迁移为例进行说明,在硬件层面上当Node2下的内存区域Normal2-MC1迁移到Node3,则表2中的Node2--Normal2-MC1对应关系则需要删除,另外还需要建立Node3--Normal2-MC1这个对应关系,最终表2更新为表3,表3为:
表3:内存迁移后节点标识与硬件资源标识的对应关系
可选地,在上述第一个可选实施例的基础上,本发明实施例提供的信息更新的方法的第三个可选实施例中,所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系;
所述当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识,可以包括:
当发生处理器核迁移时,获取发生迁移的处理器核的标识,所述发生迁移的处理器核迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系,可以包括:
删除所述发生迁移的处理器核的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系,可以包括:
建立所述发生迁移的处理器核的标识与所述迁移后所属节点的节点标识之间的对应关系。
本发明实施例中,以CPU迁移为例进行说明,在硬件层面上当Node2下的内存区域CPU2迁移到Node3,则表2中的Node2--CPU2对应关系则需要删除,另外还需要建立Node3--CPU2这个对应关系,最终表2更新为表4,表4为:
表4:CPU迁移后节点标识与硬件资源标识的对应关系
可选地,在上述第二个可选实施例的基础上,本发明实施例提供的信息更新的方法的第四个可选实施例中,所述方法还可以包括:
确定发生内存迁移时正在进行的业务,所述业务由所述迁移前所属节点中的一个处理器核进行处理;
将所述业务迁移到所述迁移后所属节点的一个处理器核上,或者,将所述业务的业务数据转移到所述迁移前所属节点的另外一个内存区域中。
本发明实施例中,针对内存迁移的情况,还可以参阅图5的内存迁移示意图进行理解:
如图5所示,为一个4个节点的NUMA架构服务器,每个节点下有一个CPU,每个CPU下有两个内存控制器(Memory Controller,MC),MC下挂有内存。CPU4的内存控制器1下的内存mem4-1为空闲备份,系统正常运行时这块内存对OS不可见也不可用(即软件层面没有NORMAL_4-1),在BIOS做内存迁移时,这块内存作为目的内存使用。
内存迁移之前,假设业务A跑在node2上,经过内核原有的CPU、MEM分配机制使用的CPU为cpu2,内存为mem2-1(即NORMAL_2-1这个ZONE)。之后因外界因素触发了内存迁移特性,由BIOS把mem2-1上的数据都迁移到了mem4-1上。内存迁移完之后,业务A访问自己的内存(即NORMAL_2-1)最终在物理层面已经跳转到了mem4-1上,而不是原先的mem2-1。但OS层面看不到NORMAL_4-1,仍然只能看到NORMAL_2-1,即软件层面的NORMAL_2-1实际上已经和硬件层面的mem4-1对应了,而不是原先的mem2-1。
因此我们需要把NORMAL_2-1区域划入node4,这才能使得软件层面的NUMA架构和硬件层面的NUMA架构保持一致,并且把业务A所在的CPU(cpu2)和内存(mem4-1)迁移到同一个node下,比如:OS进程迁移后使用cpu4来处理该业务A,或者OS内存迁移后使用mem2-0来存储业务数据。如果不做这一操作的话,业务A在接下来的运行时会频繁访问远端内存(cpu2跨节点访问mem4-1),这在性能上会有巨大损失,比如内存访问延迟可能会增加一个数量级。
内存迁移前的节点标识与内存区域标识的对应关系为:node2的zonelist为:NORMAL_2-0、NORMAL_2-1,node4的zonelist为:NORMAL_4-0、其他节点的ZONE。
内存迁移后的节点标识与内存区域标识的对应关系为:node2的zonelist为:NORMAL_2-0,nnode4的zonelist为:NORMAL_4-0、NORMAL_2-1、其他节点的ZONE。
内存迁移前如果有进程使用mem2-1内存,需要对这些进程进行OS层面的进程迁移或者内存迁移,使进程使用的CPU和内存都位于同一个节点。内存迁移之后如果有新进程出现,假设内核给它分配了cpu2,但因node2下的本地ZONE只有NORMAL_2-0,因此会使用mem2-1这一物理内存,这样一来CPU和内存就都属于节点了。如果没有调整则很有可能使用NORMAL_2-1(即mem4-1),这样就会出现跨节点远端访问,造成性能下降。
可选地,在上述第三个可选实施例的基础上,本发明实施例提供的信息更新的方法的第五个可选实施例中,所述方法还可以包括:
确定发生处理器核迁移时正在进行的业务,所述业务由所述发生迁移的处理器核进行处理;
将所述业务的业务数据转移到所述迁移后所属节点的一个内存区域中,或者,将所述业务迁移到所述迁移前所属节点的另外一个处理器核中。
本发明实施例中,针对内存迁移的情况,还可以参阅图6的CPU迁移示意图进行理解:
如图6所示,为一个4个节点的NUMA架构服务器,每个节点下有两个CPU,每个CPU下有一个MC,MC下挂有内存。cpu8为空闲备份;系统正常运行时cpu8对OS不可见也不可用,在BIOS做CPU迁移时,这个CPU作为目的CPU使用。
CPU迁移之前,假设业务A跑在node2上,经过内核原有的CPU、MEM分配机制使用的CPU为cpu4,内存为mem4。之后因外界因素触发了CPU迁移特性,由BIOS把cpu4上的寄存器值和状态都迁移到了cpu8上。CPU迁移完之后,业务A访问自己的CPU(即cpu4)最终在物理层面已经跳转到了cpu8上,而不是原先的cpu4。但OS层面看不到cpu8,仍然只能看到cpu4,即软件层面的cpu4实际上已经和硬件层面的cpu8对应了,而不是原先硬件层面的cpu4。
因此我们需要把软件层面的cpu4划入node4这个节点,这才能使得软件层面的NUMA架构和硬件层面的NUMA架构保持一致,并且把业务A所在的CPU(cpu8)和内存(mem4)迁移到同一个node下(比如业务A的OS进程迁移后使用cpu3,或者OS内存迁移后使用mem7)。如果不做这一操作的话,业务A在接下来的运行时会频繁访问远端内存(cpu8跨节点访问mem4),这在性能上会有巨大损失,比如内存访问延迟可能会增加一个数量级。
CPU迁移前的节点标识与CPU标识的对应关系为:node2的cpu_to_node_map位图:包含cpu3、cpu4;node4的cpu_to_node_map位图:包含cpu7;
CPU迁移后的节点标识与CPU标识的对应关系为:node2的cpu_to_node_map位图:包含cpu3;node4的cpu_to_node_map位图:包含cpu7、cpu4;
CPU迁移前如果有进程使用cpu4的话,需要对这些进程进行OS层面的进程迁移或者内存迁移,使进程使用的CPU和内存都位于同一个节点里。CPU迁移之后如果有新进程出现,假设内核给它分配了cpu4,实际上已经在物理层面跳转到了cpu8,且已变为属于node4的节点,而不是原先的node2的节点,因此会优先使用mem7,这样一来CPU和内存就都属于同一节点了。如果没有调整则很有可能使用mem4,这样就会出现跨节点远端访问,造成性能下降。
同一个节点也可以称为一个亲和域,也叫NUMA域,指CPU、内存、IO和node的对应关系;如果CPU、内存、IO在同一个node下,则他们属于同一个亲和域,一个node下的CPU和另一个node下的内存则属于不同的亲和域。
如图7所示,本发明实施例提供的信息更新的装置20的一实施例包括:
所述装置20应用于非一致性内存访问NUMA架构的计算机系统,所述计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息;所述装置20包括:
获取单元201,用于当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;
更新单元202,用于根据所述获取单元201获取的所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。
本发明实施例中,非一致性内存访问NUMA架构的计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息;所述装置20包括:获取单元201当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;更新单元202根据所述获取单元201获取的所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。与现有技术中在硬件层面的NUMA架构发生变化后,软件层面不感知,也不随之变化,导致硬件之间频繁出现跨节点访问,造成系统计算性能降低相比,本发明实施例提供一种信息更新的装置,可以在硬件层面的NUMA架构发生变化后,及时更新软件层面的NUMA架构信息,从而使软件层面的NUMA架构信息与硬件层面的NUMA架构实时保持一致,从而避免出现跨节点访问,提高了系统的计算性能。
可选地,在上述图7对应的实施例的基础上,参阅图8,本发明实施例提供的信息更新的装置的另一实施例中,
所述获取单元201,具体用于在所述NUMA架构在所述硬件层面按照预置划分规则将所述硬件资源划分到不同节点,每个节点中包含划分得到的硬件资源,所述软件层面的架构信息包含节点标识与硬件资源标识的对应关系时,当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述更新单元202,包括:
删除子单元2021,用于删除所述获取单元201获取的所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系;
建立子单元2022,用于建立所述获取单元201获取的所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系。
可选地,在上述图8对应的实施例的基础上,本发明实施例提供的信息更新的装置的另一实施例中,
所述获取单元201,具体用于在所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系,每个内存区域都对应处理器核中的一个内存控制器时,当发生内存区域迁移时,获取发生迁移的内存区域的标识,所述发生迁移的内存区域迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除子单元2021,具体用于删除所述发生迁移的内存区域的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立子单元2022,具体用于建立所述发生迁移的内存区域的标识与所述迁移后所属节点的节点标识之间的对应关系。
可选地,在上述图8对应的实施例的基础上,本发明实施例提供的信息更新的装置的另一实施例中,
所述获取单元201,具体用于在所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系时,当发生处理器核迁移时,获取发生迁移的处理器核的标识,所述发生迁移的处理器核迁移前所属节点的节点标识和迁移后所属节点的节点标识;
所述删除子单元2021,具体用于删除所述发生迁移的处理器核的标识与所述迁移前所属节点的节点标识之间的对应关系;
所述建立子单元2022,具体用于建立所述发生迁移的处理器核的标识与所述迁移后所属节点的节点标识之间的对应关系。
可选地,在上述图8对应的实施例的基础上,参阅图9,本发明实施例提供的信息更新的装置的另一实施例中,所述装置20还包括:
第一确定单元203,用于在所述获取单元201获取到发生内存迁移时,确定发生内存迁移时正在进行的业务,所述业务由所述迁移前所属节点中的一个处理器核进行处理;
第一迁移单元204,用于将所述第一确定单元203确定的所述业务迁移到所述迁移后所属节点的一个处理器核上,或者,将所述业务的业务数据转移到所述迁移前所属节点的另外一个内存区域中。
可选地,在上述图8对应的实施例的基础上,参阅图10,本发明实施例提供的信息更新的装置的另一实施例中,所述装置20还包括:
第二确定单元205,用于在所述获取单元201获取到发生处理器核迁移时,确定发生处理器核迁移时正在进行的业务,所述业务由所述发生迁移的处理器核进行处理;
第二迁移单元206,用于将所述第二确定单元205确定的所述业务的业务数据转移到所述迁移后所属节点的一个内存区域中,或者,将所述业务迁移到所述迁移前所属节点的另外一个处理器核中。
图11是本发明实施例信息更新的设备20的结构示意图。信息更新的设备20可包括输入/输出设备210、处理器230和存储器240。
存储器240可以包括只读存储器和随机存取存储器,并向处理器230提供指令和数据。存储器240的一部分还可以包括非易失性随机存取存储器(NVRAM)。
存储器240存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
本发明实施例提供的信息更新的方法,应用于非一致性内存访问NUMA架构的计算机系统,所述计算机系统包括硬件资源、基本输入输出系统BOIS和操作系统OS,所述硬件资源在硬件层面按照NUMA架构进行划分,所述OS初始化时,所述BOIS向所述OS提供所述硬件层面的NUMA架构划分信息,所述OS生成与所述硬件层面相同的软件层面的NUMA架构信息。
在本发明实施例中,处理器230通过调用存储器240存储的操作指令(该操作指令可存储在操作系统中),执行如下操作:
当所述硬件层面的NUMA架构发生变化时,获取变化后的所述硬件层面的NUMA架构划分信息;
根据所述变化后的所述硬件层面的NUMA架构划分信息,更新所述软件层面的NUMA架构信息。
本发明实施例中,信息更新的设备20可以在硬件层面的NUMA架构发生变化后,及时更新软件层面的NUMA架构信息,从而使软件层面的NUMA架构信息与硬件层面的NUMA架构实时保持一致,从而避免出现跨节点访问,提高了系统的计算性能。
处理器230控制信息更新的设备20的操作,处理器230还可以称为CPU(Central Processing Unit,中央处理单元)。存储器240可以包括只读存储器和随机存取存储器,并向处理器230提供指令和数据。存储器240的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,信息更新的设备20的各个组件通过总线系统250耦合在一起,其中总线系统250除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统250。
上述本发明实施例揭示的方法可以应用于处理器230中,或者由处理器230实现。处理器230可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器230中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器230可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器240,处理器230读取存储器240中的信息,结合其硬件完成上述方法的步骤。
可选地,所述处理器230还用于在所述NUMA架构在所述硬件层面按照预置划分规则将所述硬件资源划分到不同节点,每个节点中包含划分得到的硬件资源,所述软件层面的架构信息包含节点标识与硬件资源标识的对应关系时,当所述硬件层面的NUMA架构发生硬件资源迁移时,获取发生迁移的硬件资源的标识,所述发生迁移的硬件资源迁移前所属节点的节点标识和迁移后所属节点的节点标识;删除所述发生迁移的硬件资源的标识与所述迁移前所属节点的节点标识之间的对应关系;建立所述发生迁移的硬件资源的标识与所述迁移后所属节点的节点标识之间的对应关系。
可选地,所述处理器230具体用于在所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系,每个内存区域都对应处理器核中的一个内存控制器时,当发生内存区域迁移时,获取发生迁移的内存区域的标识,所述发生迁移的内存区域迁移前所属节点的节点标识和迁移后所属节点的节点标识;删除所述发生迁移的内存区域的标识与所述迁移前所属节点的节点标识之间的对应关系;建立所述发生迁移的内存区域的标识与所述迁移后所属节点的节点标识之间的对应关系。
可选地,所述处理器230具体用于在所述每个节点中包含划分得到的至少一个处理器核,以及至少一个内存区域,所述节点标识与硬件资源标识的对应关系为节点标识与处理器核的对应关系,以及节点标识与内存区域标识的对应关系,当发生处理器核迁移时,获取发生迁移的处理器核的标识,所述发生迁移的处理器核迁移前所属节点的节点标识和迁移后所属节点的节点标识;删除所述发生迁移的处理器核的标识与所述迁移前所属节点的节点标识之间的对应关系;建立所述发生迁移的处理器核的标识与所述迁移后所属节点的节点标识之间的对应关系。
可选地,所述处理器230还用于确定发生内存迁移时正在进行的业务,所述业务由所述迁移前所属节点中的一个处理器核进行处理;将所述业务迁移到所述迁移后所属节点的一个处理器核上,或者,将所述业务的业务数据转移到所述迁移前所属节点的另外一个内存区域中。
可选地,所述处理器230还用于确定发生处理器核迁移时正在进行的业务,所述业务由所述发生迁移的处理器核进行处理;将所述业务的业务数据转移到所述迁移后所属节点的一个内存区域中,或者,将所述业务迁移到所述迁移前所属节点的另外一个处理器核中。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件(例如处理器)来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的信息更新的方法以及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。