一种64路服务器系统拓扑获得方法及装置与流程

文档序号:11949943阅读:383来源:国知局
一种64路服务器系统拓扑获得方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种64路服务器系统拓扑获得方法及装置。



背景技术:

64路服务器,多采用CC-NUMA(Cache-Coherent Non-Uniform Memory Architecture,高速缓存一致性非均匀存储访问)架构,该架构可以有效的扩展系统规模。

通过服务器系统拓扑,可以对系统资源的使用情况和系统运行情况进行有效地监控,并对系统故障进行及时处理。但是,在复杂的系统架构信息情况下,用户态获取服务器系统拓扑成为一个难点。



技术实现要素:

为解决上述技术问题,本发明提供一种64路服务器系统拓扑获得方法及装置。

一种64路服务器系统拓扑获得方法,包括:

通过遍历服务器系统的节点目录,获得所述服务器系统的节点信息,所述节点信息包括节点数量和节点编号;

针对所述服务器系统的每个节点,通过遍历该节点对应的节点子目录,获取该节点对应的CPU资源信息;

通过读取所述服务器系统的物理内存镜像文件,获得所述服务器系统的内存信息;

根据所述节点信息和所述内存信息的对应关系,确定每个节点对应的内存资源信息。

在本发明的一种具体实施方式中,所述CPU资源信息包括CPU节点编号、CPU处理器编号、CPU座编号、CPU核编号和CPU超线程编号。

在本发明的一种具体实施方式中,所述针对所述服务器系统的每个节点,通过遍历该节点对应的节点子目录,获取该节点对应的CPU资源信息,包括:

针对所述服务器系统的每个节点,将该节点的节点编号确定为CPU节点编号;

通过遍历该节点对应的节点子目录,获得该节点子目录下的处理器子目录,将每个处理器子目录的编号确定为CPU处理器编号;

在每个处理器子目录下,读取物理包标识文件和核标识文件,并根据读取到的物理包标识文件,确定CPU座编号,根据读取到的核标识文件,确定CPU核编号;

根据所述CPU节点编号、所述CPU座编号、所述CPU核编号,确定CPU超线程编号。

在本发明的一种具体实施方式中,所述通过读取所述服务器系统的物理内存镜像文件,获得所述服务器系统的内存信息,包括:

打开所述服务器系统的物理内存镜像文件的访问句柄,获得系统表文件;

在所述系统表文件中,根据预设关键字,查找所述服务器系统的内存信息的入口地址;

通过所述内存信息的入口地址对应的表数据,获得内存信息。

在本发明的一种具体实施方式中,所述根据所述节点信息和所述内存信息的对应关系,确定每个节点对应的内存资源信息,包括:

获得所述内存信息的地址句柄;

按照预设顺序排列所述节点信息中的所有的节点编号及所述内存信息中的所有的地址句柄;

根据节点编号和地址句柄的对应关系,确定每个节点对应的内存资源信息的内存座编号和内存节点编号;

根据所述内存信息中的内存设备参数值,确定每个节点对应的内存资源信息的控制器参数值和组件参数值。

一种64路服务器系统拓扑获得装置,包括:

节点信息获得模块,用于通过遍历服务器系统的节点目录,获得所述服务器系统的节点信息,所述节点信息包括节点数量和节点编号;

CPU资源信息获取模块,用于针对所述服务器系统的每个节点,通过遍历该节点对应的节点子目录,获取该节点对应的CPU资源信息;

内存信息获得模块,用于通过读取所述服务器系统的物理内存镜像文件,获得所述服务器系统的内存信息;

内存资源信息确定模块,用于根据所述节点信息和所述内存信息的对应关系,确定每个节点对应的内存资源信息。

在本发明的一种具体实施方式中,所述CPU资源信息包括CPU节点编号、CPU处理器编号、CPU座编号、CPU核编号和CPU超线程编号。

在本发明的一种具体实施方式中,所述CPU资源信息获取模块,具体用于:

针对所述服务器系统的每个节点,将该节点的节点编号确定为CPU节点编号;

通过遍历该节点对应的节点子目录,获得该节点子目录下的处理器子目录,将每个处理器子目录的编号确定为CPU处理器编号;

在每个处理器子目录下,读取物理包标识文件和核标识文件,并根据读取到的物理包标识文件,确定CPU座编号,根据读取到的核标识文件,确定CPU核编号;

根据所述CPU节点编号、所述CPU座编号、所述CPU核编号,确定CPU超线程编号。

在本发明的一种具体实施方式中,所述内存信息获得模块,具体用于:

打开所述服务器系统的物理内存镜像文件的访问句柄,获得系统表文件;

在所述系统表文件中,根据预设关键字,查找所述服务器系统的内存信息的入口地址;

通过所述内存信息的入口地址对应的表数据,获得内存信息。

在本发明的一种具体实施方式中,所述内存资源信息确定模块,具体用于:

获得所述内存信息的地址句柄;

按照预设顺序排列所述节点信息中的所有的节点编号及所述内存信息中的所有的地址句柄;

根据节点编号和地址句柄的对应关系,确定每个节点对应的内存资源信息的内存座编号和内存节点编号;

根据所述内存信息中的内存设备参数值,确定每个节点对应的内存资源信息的控制器参数值和组件参数值。

应用本发明实施例所提供的技术方案,通过遍历服务器系统的节点目录,可以获得服务器系统的节点信息,针对每个节点,通过遍历该节点对应的节点子目录,获得该节点对应的CPU资源信息,通过读取服务器系统的物理内存镜像文件,可以获得服务器系统的内存信息,并根据节点信息和内存信息的对应关系,确定每个节点对应的内存资源信息,从而获得用户态64路服务器系统拓扑。这样,通过获得的服务器系统拓扑,可以对系统资源的使用情况和系统运行情况进行有效地监控,并对系统故障进行及时处理。

附图说明

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

图1为本发明实施例中一种64路服务器系统拓扑获得方法的实施流程图;

图2为本发明实施例中一种64路服务器系统拓扑获得装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1所示,为本发明实施例所提供的一种64路服务器系统拓扑获得方法的实施流程图,该方法可以包括以下步骤:

S110:通过遍历服务器系统的节点目录,获得服务器系统的节点信息。

节点信息包括节点数量和节点编号。

通常,高端容错计算机的每一路可以称为NUMA的一个节点(node),在64路服务器中,一个节点包含了多个物理CPU,对同一个节点的多个物理CPU的内存控制器统一集中管理。

通过遍历服务器系统的节点目录,可以获得服务器系统的节点编号和节点数量。

在Linux系统中,节点目录为“/sys/devices/system/node”。在该节点目录下,存在多个节点子目录。可以使用关键字“node”,查找该节点目录下名字为“nodex”的节点子目录,x即为节点编号,根据查找到的所有的“nodex”,即可确定节点数量。

S120:针对服务器系统的每个节点,通过遍历该节点对应的节点子目录,获取该节点对应的CPU资源信息。

在节点目录下,存在多个节点子目录,每个节点子目录与一个节点相对应。针对服务器系统的每个节点,通过遍历该节点对应的节点子目录,可以获取该节点对应的CPU资源信息。

在本发明实施例中,CPU资源信息包括CPU节点(chassis)编号、CPU处理器(processor)编号、CPU座(socket)编号、CPU核(core)编号和CPU超线程(thread)编号。

CPU资源信息的数据结构如下所示:

在本发明的一种具体实施方式中,步骤S120可以包括以下步骤:

步骤一:针对服务器系统的每个节点,将该节点的节点编号确定为CPU节点编号;

步骤二:通过遍历该节点对应的节点子目录,获得该节点子目录下的处理器子目录,将每个处理器子目录的编号确定为CPU处理器编号;

步骤三:在每个处理器子目录下,读取物理包标识文件和核标识文件,并根据读取到的物理包标识文件,确定CPU座编号,根据读取到的核标识文件,确定CPU核编号;

步骤四:根据CPU节点编号、CPU座编号、CPU核编号,确定CPU超线程编号。

为便于描述,将上述四个步骤结合起来进行说明。

在步骤S110通过遍历服务器系统的节点目录,获得了服务器系统的节点编号,可以将每个节点编号分别确定为CPU节点编号,即CPU chassis编号。

例1:在“/sys/devices/system/node”节点目录下,通过关键字“node”查找到该节点目录下名字为node0和node1的节点子目录,节点编号为0和1,可以分别将这两个节点编号确定为CPU节点编号。

在每个节点子目录下,存在一个或多个处理器子目录。通过遍历每个节点子目录,可以获得每个节点子目录下的处理器子目录,将每个处理器子目录的编号确定为CPU处理器编号。

具体的,针对每个节点子目录“/sys/devices/system/node/nodex”,在该节点子目录下,使用关键字“cpu”,可以查找该节点子目录下名字为“cpuy”的处理器子目录,y为数字,并分别将y记录为CPU处理器编号,即CPU processor编号。

比如,在例1中,在“/sys/devices/system/node/node1”节点子目录下,使用关键字“cpu”,可以查找到该节点子目录下名称为cpu1、cpu2的处理器子目录,在“/sys/devices/system/node/node2”节点子目录下,使用关键字“cpu”,查找到该节点子目录下名称为cpu3、cpu4的处理器子目录。根据处理器子目录编号,确定的CPU处理器编号分别为:

CPU chassis编号为0,CPU processor编号为1;

CPU chassis编号为0,CPU processor编号为2;

CPU chassis编号为1,CPU processor编号为3;

CPU chassis编号为1,CPU processor编号为4。

在每个处理器子目录下,可以遍历该处理器子目录下的拓扑子目录,读取物理包标识文件和核标识文件,并根据物理包标识文件,确定CPU座编号,即CPU socket编号,根据核标识文件,确定CPU核编号,即CPU core编号。

针对每个处理器子目录,其拓扑子目录为:“/sys/devices/system/node/nodex/cpuy/topology/”。在该拓扑子目录下,可以读取“physical_package_id”物理包标识文件,并将从该文件中获取的参数记录为CPU座编号。在该拓扑子目录下,还可以读取“core_id”核标识文件,并将从该文件中获取的参数记录为CPU核编号。

比如,通过上述获取方法,得到的CPU座编号和CPU核编号分别为:

CPU chassis编号为0,CPU processor编号为1,CPU socket编号为A1,CPU core编号为B1;

CPU chassis编号为0,CPU processor编号为2,CPU socket编号为A2,CPU core编号为B2;

CPU chassis编号为1,CPU processor编号为3,CPU socket编号为A3,CPU core编号为B3;

CPU chassis编号为1,CPU processor编号为4,CPU socket编号为A4,CPU core编号为B4;

当CPU节点编号、CPU座编号和CPU核编号相同时,表明物理CPU的一个core含有多个超线程Hyper-threading。根据CPU节点编号、CPU座编号、CPU核编号,可以确定CPU超线程编号。具体的,可以将CPU节点编号、CPU座编号和CPU核编号相同的逻辑CPU,按照CPU处理器编号大小升序排列,CPU超线程编号从0开始,依次累加1,最小的CPU处理器编号对应的CPU超线程编号为0。

如上例中,A1与A2相同、B1与B2相同时,确定的CPU线程编号可以为:

CPU chassis编号为1,CPU processor编号为1,CPU socket编号为A1,CPU core编号为B1,CPU thread编号为0;

CPU chassis编号为1,CPU processor编号为2,CPU socket编号为A2,CPU core编号为B2,CPU thread编号为1。

S130:通过读取所述服务器系统的物理内存镜像文件,获得服务器系统的内存信息。

通过读取服务器系统的物理内存镜像文件,可以获得服务器系统的内存信息。

在本发明的一种具体实施方式中,步骤S130可以包括以下步骤:

第一个步骤:打开服务器系统的物理内存镜像文件的访问句柄,获得系统表文件;

第二个步骤:在系统表文件中,根据预设关键字,查找服务器系统的内存信息入口地址;

第三个步骤:通过内存信息的入口地址对应的表数据,获得内存信息。

为便于描述,将上述三个步骤结合起来进行说明。

服务器系统的物理内存镜像文件目录为:/dev/mem,打开“/dev/mem”访问句柄,可以获得“/sys/firmware/efi/systab”系统表文件,在系统表文件中可以获取SMBIOS(System Management BIOS,主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范)EPS(Entry Point Structure,入口结构)起始地址。在SMBIOS EPS起始地址匹配预设关键字,如“_DMI_”关键字。如果匹配不成功,则将该地址增加16位后,继续匹配“_DMI_”关键字,直到找到SMBIOS EPS入口地址,即内存信息的入口地址。

通过内存信息的入口地址对应的表数据,可以获得内存信息。

当读取数据库type等于16,将读取数据记录在“Physical Memory Array”中;当读取数据库type等于17,将读取数据记录在“Memory Device”中;当读取数据库type等于19,将读取数据记录在“Memory Array Mapped Address”中;当读取数据库type等于20,将读取数据记录在“Memory Device Mapped Address”中。

S140:根据节点信息和内存信息的对应关系,确定每个节点对应的内存资源信息。

在本发明实施例中,根据节点信息和内存信息的对应关系,可以确定每个节点对应的内存资源信息。内存资源信息的结构如下所示:

在本发明的一种具体实施方式中,步骤S140可以包括以下步骤:

步骤一:获得内存信息的地址句柄;

步骤二:按照预设顺序排列节点信息中的所有的节点编号及内存信息中的所有的地址句柄;

步骤三:根据节点编号和地址句柄的对应关系,确定每个节点对应的内存资源信息的内存座编号和内存节点编号;

步骤四:根据内存信息的内存设备参数值,确定每个节点对应的内存资源信息的控制器参数值和组件参数值。

为便于描述,将上述四个步骤结合起来进行说明。

在步骤S130,可以获得服务器系统的内存信息。进一步可以从内存信息的“Memory Array Mapped Address”中读取到内存信息的地址句柄,即Memory Array Mapped Address Handle。

在步骤S110,获得了所有的节点编号。按照预设顺序排列所有的节点编号及内存信息的所有的地址句柄,根据节点编号和地址句柄的对应关系,可以确定每个节点对应的内存资源信息的内存座编号和内存节点编号。

根据内存信息中的内存设备参数值,可以确定每个节点对应的内存资源信息的控制器参数值和组件参数值。具体的,可以将“Memory Device”中Bank Locator值赋值给控制器参数,即controller参数,将Locator值赋值给组件参数,即dimm参数。

至此,可以得到每个节点对应的CPU资源信息和内存资源信息,获得了64路服务器系统拓扑。

应用本发明实施例所提供的方法,通过遍历服务器系统的节点目录,可以获得服务器系统的节点信息,针对每个节点,通过遍历该节点对应的节点子目录,获得该节点对应的CPU资源信息,通过读取服务器系统的物理内存镜像文件,可以获得服务器系统的内存信息,并根据节点信息和内存信息的对应关系,确定每个节点对应的内存资源信息,从而获得用户态64路服务器系统拓扑。这样,通过获得的服务器系统拓扑,可以对系统资源的使用情况和系统运行情况进行有效地监控,并对系统故障进行及时处理。

相应于上面的方法实施例,本发明实施例还提供了一种64路服务器系统拓扑获得装置。

参见图2所示,该装置可以包括以下模块:

节点信息获得模块210,用于通过遍历服务器系统的节点目录,获得服务器系统的节点信息,节点信息包括节点数量和节点编号;

CPU资源信息获取模块220,用于针对服务器系统的每个节点,通过遍历该节点对应的节点子目录,获取该节点对应的CPU资源信息;

内存信息获得模块230,用于通过读取服务器系统的物理内存镜像文件,获得服务器系统的内存信息;

内存资源信息确定模块240,用于根据节点信息和内存信息的对应关系,确定每个节点对应的内存资源信息。

应用本发明实施例所提供的装置,通过遍历服务器系统的节点目录,可以获得服务器系统的节点信息,针对每个节点,通过遍历该节点对应的节点子目录,获得该节点对应的CPU资源信息,通过读取服务器系统的物理内存镜像文件,可以获得服务器系统的内存信息,并根据节点信息和内存信息的对应关系,确定每个节点对应的内存资源信息,从而获得用户态64路服务器系统拓扑。这样,通过获得的服务器系统拓扑,可以对系统资源的使用情况和系统运行情况进行有效地监控,并对系统故障进行及时处理。

在本发明的一种具体实施方式中,CPU资源信息包括CPU节点编号、CPU处理器编号、CPU座编号、CPU核编号和CPU超线程编号。

在本发明的一种具体实施方式中,CPU资源信息获取模块220,具体用于:

针对服务器系统的每个节点,将该节点的节点编号确定为CPU节点编号;

通过遍历该节点对应的节点子目录,获得该节点子目录下的处理器子目录,将每个处理器子目录的编号确定为CPU处理器编号;

在每个处理器子目录下,读取物理包标识文件和核标识文件,并根据读取到的物理包标识文件,确定CPU座编号,根据读取到的核标识文件,确定CPU核编号;

根据CPU节点编号、CPU座编号、CPU核编号,确定CPU超线程编号。

在本发明的一种具体实施方式中,内存信息获得模块230,具体用于:

打开服务器系统的物理内存镜像文件的访问句柄,获得系统表文件;

在系统表文件中,根据预设关键字,查找服务器系统的内存信息的入口地址;

通过内存信息的入口地址对应的表数据,获得内存信息。

在本发明的一种具体实施方式中,内存资源信息确定模块240,具体用于:

获得内存信息的地址句柄;

按照预设顺序排列节点信息中的所有的节点编号及内存信息中的所有的地址句柄;

根据节点编号和地址句柄的对应关系,确定每个节点对应的内存资源信息的内存座编号和内存节点编号;

根据内存信息中的内存设备参数值,确定每个节点对应的内存资源信息的控制器参数值和组件参数值。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种服务器系统拓扑信息获得方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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