CN107102898B - 一种基于numa架构的内存管理、构建数据结构的方法及装置 - Google Patents
一种基于numa架构的内存管理、构建数据结构的方法及装置 Download PDFInfo
- Publication number
- CN107102898B CN107102898B CN201610099456.7A CN201610099456A CN107102898B CN 107102898 B CN107102898 B CN 107102898B CN 201610099456 A CN201610099456 A CN 201610099456A CN 107102898 B CN107102898 B CN 107102898B
- Authority
- CN
- China
- Prior art keywords
- data structure
- central processing
- processing unit
- node
- constructing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请公开了一种中央处理器构建数据结构的方法、装置及电子设备、一种基于NUMA架构的内存管理方法、装置及电子设备以及一种基于NUMA架构的内存管理系统。其中,所述中央处理器构建数据结构的方法,包括:接收主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构;根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。采用上述技术方案解决了在所有中央处理器上数据结构的不同导致在不同的中央处理器上执行时得到不同的结果而出错的问题,使各个中央处理器上的数据保持一致。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种中央处理器构建数据结构的方法、一种基于NUMA架构的内存管理方法以及一种基于NUMA架构的内存管理系统;本申请同时涉及一种中央处理器构建数据结构的装置、电子设备、一种基于NUMA架构的内存管理装置及电子设备。
背景技术
非一致内存访问结构(Non-Uniform Memory Access,NUMA)既保持了对称多处理器架构(Symmetric Multi-Processor)模式单一操作系统拷贝、简便的应用程序编程模式以及易于管理的特点,又继承了大规模并行处理计算机(Massive Parallel Processing)模式的可扩充性,可以有效地扩充系统的规模。在NUMA架构中,中央处理器和内存以节点的形式组织起来,处于该节点中的内存被称为本地内存(local memory),处于其它节点中的内存对于该节点而言被称为远程内存(foreign memory)。对于单个中央处理器而言,它既可以访问本节点的本地内存,也可以访问其他节点的远程内存。
在目前NUMA架构下,访问本地内存和远程内存的速度差别很大。因此,一般情况下,数据结构都会复制到多个中央处理器上,本地中央处理器访问本地的数据结构。在应用某个数据结构时,都会在每个中央处理器的内存上执行相同的操作,以保证数据在每个中央处理器上都存在。但这种实现方式具有如下问题:不同中央处理器的数据有可能存在不一致的情况,导致在不同的中央处理器上执行时得到不同的结果而出错,且验证数据的一致性也比较困难。
由此可见,在现有方案下,数据结构的操作在每个中央处理器上是独立进行的,不能保证数据结构在所有中央处理器上是一致的,而且出现不一致时,难以验证。
发明内容
本申请提供一种中央处理器构建数据结构的方法、一种基于NUMA架构的内存管理方法以及一种基于NUMA架构的内存管理系统,以解决现有技术中的上述问题;本申请同时涉及一种中央处理器构建数据结构的装置、电子设备、一种基于NUMA架构的内存管理装置及电子设备。
本申请提供了一种中央处理器构建数据结构的方法,所述中央处理器是NUMA架构中的从属中央处理器,所述中央处理器构建数据结构的方法,包括:
接收主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构;
根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
可选的,所述根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构,包括:
从接收的构建数据结构的所述空闲节点的位置信息中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值;
在所述本地内存中查找距起始点相同偏移值处的节点;
在所述节点上构建与所述空闲节点上相同的数据结构。
可选的,在所述节点上构建与所述空闲节点上相同的数据结构的步骤之前,包括:
判断在所述本地内存中的所述节点是否被占用;
若是,则返回异常信息;
若否,则执行所述在所述节点上构建与所述空闲节点上相同的数据结构的步骤。
可选的,在执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构的步骤时,还包括:
判断在该中央处理器中执行的构建数据结构的操作是否执行出错;
若是,则执行回滚操作。
相应的,本申请还提供了一种中央处理器构建数据结构的装置,所述中央处理器是NUMA架构中的从属中央处理器,所述中央处理器构建数据结构的装置,包括:
数据结构接收单元,用于接收主中央处理器发送的构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;
数据结构构建单元,用于根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
可选的,所述数据结构构建单元,包括:
偏移值获取子单元,用于从接收的构建数据结构的所述空闲节点的位置信息中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值;
节点查找子单元,用于在所述本地内存中查找距起始点相同偏移值处的节点;
数据结构构建子单元,用于在所述节点上构建与所述空闲节点上相同的数据结构。
可选的,所述数据结构构建单元,还包括:
占用判断子单元,用于在所述节点上构建与所述空闲节点上相同的数据结构之前,判断在所述本地内存中的所述节点是否被占用;
异常信息返回子单元,用于接收所述占用判断子单元的判断结果,若是,则返回异常信息;
数据结构构建触发子单元,用于接收所述占用判断子单元的判断结果,若否,则触发所述数据结构构建子单元。
可选的,还包括:
执行出错判断单元,用于在执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构时,判断在该中央处理器中执行的构建数据结构的操作是否执行出错;
回滚操作执行单元,用于接收所述执行出错判断单元的判断结果,若是,则执行回滚操作。
此外,本申请还提供了一种电子设备,包括:
显示器;
处理器;
存储器,用于存储数据结构构建程序,所述程序在被所述处理器读取执行时,执行如下操作:接收主中央处理器发送的构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
此外,本申请还提供了一种基于NUMA架构的内存管理方法,所述基于NUMA架构的内存管理方法,包括:
在主中央处理器的本地内存中获取空闲节点;
在所述空闲节点上构建数据结构;
向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
所述空闲节点的位置信息,包括:所述空闲节点在本地内存中的偏移值。
可选的,所述从属中央处理器的性能参数与所述主中央处理器的性能参数相同。
可选的,在所述空闲节点上构建数据结构为静态分配的数据结构。
可选的,所述NUMA架构中包括至少一个从属中央处理器。
可选的,在所述在主中央处理器的本地内存中获取空闲节点的步骤之前,包括:
从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器;
将运行在所述NUMA架构中的其他中央处理器作为从属中央处理器。
可选的,若在所述向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构的步骤中,所述NUMA架构中从属中央处理器的数量大于一,则执行如下步骤:
向每一从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
可选的,在执行所述在所述空闲节点上构建数据结构的步骤时,包括:
判断在主中央处理器中执行的构建数据结构的操作是否执行出错;
若是,则执行回滚操作。
相应的,本申请还提供了一种基于NUMA架构的内存管理装置,所述基于NUMA架构的内存管理装置,包括:
空闲节点获取单元,用于在主中央处理器的本地内存中获取空闲节点;
数据结构构建单元,用于在所述空闲节点上构建数据结构;
数据结构同步单元,用于向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
可选的,所述数据结构同步单元,具体用于向从属中央处理器发送构建数据结构的所述空闲节点在本地内存中的偏移值以及构建的所述数据结构。
可选的,所述数据结构构建单元,具体用于在所述空闲节点上构建数据结构为静态分配的数据结构。
可选的,所述数据结构同步单元,用于向至少一个从属中央处理器发送构建数据结构的所述空闲节点的位置以及构建的所述数据结构。
可选的,还包括:
主处理器选择单元,用于在主中央处理器的本地内存中获取空闲节点之前,从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器;
从属处理器选择单元,用于将运行在所述NUMA架构中的其他中央处理器作为从属中央处理器。
可选的,若所述NUMA架构中从属中央处理器的数量大于一,则所述数据结构同步单元,用于向每一从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
可选的,还包括:
判断单元,用于在执行所述在所述空闲节点上构建数据结构时,判断在主中央处理器中执行的构建数据结构的操作是否执行出错;
回滚操作执行单元,用于接收所述判断单元的判断结果,若是,则执行回滚操作。
此外,本申请还提供了一种电子设备,包括:
显示器;
处理器;
存储器,用于存储内存管理程序,所述程序在被所述处理器读取执行时,执行如下操作:在主中央处理器的本地内存中获取空闲节点;在所述空闲节点上构建数据结构;向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
此外,本申请还提供了一种基于NUMA架构的内存管理系统,所述基于NUMA架构的内存管理系统,包括:
上述任一项所述的中央处理器构建数据结构的装置;以及
上述任一项所述的基于NUMA架构的内存管理装置。
与现有技术相比,本申请具有以下优点:
本申请提供的一种中央处理器构建数据结构的方法、装置及电子设备,通过接收主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构;根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。所述技术方案解决了在所有中央处理器上数据结构的不同导致在不同的中央处理器上执行时得到不同的结果而出错的问题,使各个中央处理器上的数据保持一致。
本申请提供的一种基于NUMA架构的内存管理方法、装置及电子设备,通过在主中央处理器的本地内存中获取空闲节点;在所述空闲节点上构建数据结构;向从属中央处理器发送构建数据结构的所述空闲节点的位置以及构建的所述数据结构。所述技术方案通过在主中央处理器中计算创建数据结构的节点后,将计算出的节点的位置信息发送给从属中央处理器,从属中央处理器不在进行创建数据结构的节点的计算,减少了相同的操作在不同中央处理器上的重复执行,提高了效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的中央处理器构建数据结构的方法的流程图;
图2示出了根据本申请的实施例提供的根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构的流程图;
图3示出了根据本申请的实施例提供的对从属中央处理器的本地内存进行一致性判断的流程图;
图4示出了根据本申请的实施例提供的中央处理器构建数据结构的装置的示意图;
图5示出了根据本申请的实施例提供的电子设备的示意图;
图6示出了根据本申请的实施例提供的基于NUMA架构的内存管理方法的流程图;
图7示出了根据本申请的实施例提供的确定主从关系的流程图;
图8示出了根据本申请的实施例提供的基于NUMA架构的内存管理装置的示意图;
图9示出了根据本申请的实施例提供的电子设备的示意图;
图10示出了根据本申请的实施例提供的基于NUMA架构的内存管理系统的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种中央处理器构建数据结构的方法、一种基于NUMA架构的内存管理方法以及一种基于NUMA架构的内存管理系统;本申请同时涉及一种中央处理器构建数据结构的装置、电子设备、一种基于NUMA架构的内存管理装置及电子设备。在下面的实施例中逐一进行详细说明。
在目前NUMA架构下,访问本地内存和远程内存的速度差别很大。因此,一般情况下,数据结构都会复制到多个中央处理器上,本地中央处理器访问本地的数据结构。在应用某个数据结构时,都会在每个中央处理器的内存上执行相同的操作,以保证数据在每个中央处理器上都存在。但这种实现方式具有如下问题:不同中央处理器的数据有可能存在不一致的情况,导致在不同的中央处理器上执行时得到不同的结果而出错,且验证数据的一致性也比较困难;重复的操作导致数据结构管理性能下降。由此可见,在现有方案下,数据结构的操作在每个中央处理器上是独立进行的,不能保证数据结构在所有中央处理器上是一致的,而且出现不一致时,难以验证;相同的操作在不同中央处理器上重复执行,浪费处理器,响了效率。针对这一问题,本申请的技术方案通过在主中央处理器中设置管理结构,限定从属中央处理器构建数据结构的位置,从而实现了在所有中央处理器中保持数据一致性的功能。
在详细描述本实施例的具体步骤之前,先对本技术方案涉及的NUMA架构作简要说明。
中央处理器(CPU,Central Processing Unit)是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
非一致内存访问(NUMA)是一种具有多CPU的系统架构,利用NUMA技术,可以把几十个CPU(甚至上百个CPU)组合在一个服务器内。NUMA架构的基本特征是具有多个CPU模块,每个CPU模块由多个CPU(如4个)组成,并且具有独立的本地内存、I/O槽口等。NUMA架构中,CPU被划分成多个节点,每个节点分配有本地内存。由于其节点之间可以通过互联模块进行连接和信息交互,因此每个CPU可以访问NUMA系统的全部的物理内存。内存访问时间取决于CPU的内存位置,CPU访问本地内存的速度将远远高于访问远地内存(系统内其它节点的内存)的速度,这也是非一致存储访问NUMA的由来。由于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同CPU模块之间的信息交互。例如:NUMA架构中总内存空间为256GB,以节点1、2、3和4的顺序,节点1的内存地址范围为0至64GB,节点2的内存地址范围为64GB至128GB,节点3的内存地址范围为128GB至192GB,节点4的内存地址范围为192GB至256GB。即节点1、2、3和4的内存地址是连续的。
本申请的实施例提供了一种中央处理器构建数据结构的方法,本实施例中的所述中央处理器是NUMA架构中的从属中央处理器,所述从属中央处理器通过接收主中央处理器中管理结构发送的构建指令,完成在本地内存中构建数据结构的过程。所述中央处理器构建数据结构的方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的中央处理器构建数据结构的方法的流程图。
所述中央处理器构建数据结构的方法包括:
步骤S101,接收主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构。
在本实施例中,所述接收主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构,可以采用如下方式实现:从属中央处理器通过互联通道与所述主中央处理器进行连接和信息交互,所述从属中央处理器接收所述主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构。可以理解的,所述构建数据结构的空闲节点是:在所述主中央处理器的本地内存中构建了数据结构的节点。
需要说明的是,所述从属中央处理器是slave CPU,所述主中央处理器是masterCPU,所述从属中央处理器与所述主中央处理器通过互联通道进行连接和信息交互,所述互联通道可以是inter-connect通道。在NUMA系统中,每个CPU(master CPU或slave CPU)可以访问两种内存:本地内存(Local Memory)和远端内存(Remote Memory)。和CPU在同一个节点的内存称为本地内存,访问延迟非常低。和CPU在不同节点上的内存叫做远端内存,进行远程CPU访问时,其访问速度小于本地CPU访问的速度,访问延迟要比访问本地内存长。
在本实施例中,构建的所述数据结构包括:数据的逻辑结构、数据的存储结构、数据的运算;构建数据结构的空闲节点的位置信息包括:构建该数据结构的空闲节点在主中央处理器的本地内存中的偏移值。
需要说明的是,所述数据结构中,对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。其中,数据的逻辑结构包括:集合结构、线性结构、树形结构、图状结构;集合结构:除了同属于一种类型外,别无其它关系线性结构;线性结构存在一对一关系的类型有:数组,链表,队列,栈,它们之间在操作上有所区别,例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入和删除操作;树形结构:元素之间存在一对多关系,常见类型有:二叉树、平衡二叉树、查找树等;图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意。所述构建该数据结构的空闲节点在主中央处理器的本地内存中的偏移值是该空闲节点的地址与主中央处理器的本地内存的起始点的差值。
步骤S103,根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
在本实施例中,所述根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构,可以采用如下方式实现:根据所述空闲节点的位置信息,在从属中央处理器的本地内存中查询位置信息与所述空闲节点的位置信息相同的节点,并在该节点上构建与接收到的在所述空闲节点上构建的所述数据结构相同的数据结构。
需要说明的是,所述在本地内存中对应所述空闲节点的节点,可以是一个物理的计算节点,也可以为逻辑上的多个物理计算节点,所述本地内存可以是从属中央处理器内的任意内存存储单元,例如内存管理区、内存条、内存控制器对应的内存单元等。
在本实施例中,所述根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构,具体包括步骤S103-1、S103-3以及S103-5,下面结合附图2作进一步说明。
请参考图2,其示出了根据本申请的实施例提供的根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构的流程图。
步骤S103-1,从接收的构建数据结构的所述空闲节点的位置信息中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值。
在本实施例中,所述从接收的构建数据结构的所述空闲节点的位置中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值,可以采用如下方式实现:对接收到的构建数据结构的所述空闲节点的位置信息进行解析,获取构建数据结构的所述空闲节点的偏移值。
需要说明的是,所述构建该数据结构的空闲节点在主中央处理器的本地内存中的偏移值是该空闲节点的地址与主中央处理器的本地内存的起始点的差值。可以通过偏移值描述在内存中节点的位置,通过偏移值区分在内存中的不同位置处的节点。
步骤S103-3,在所述本地内存中查找距起始点相同偏移值处的节点。
在本实施例中,所述在所述本地内存中查找距起始点相同偏移值处的节点,可以采用如下方式实现:在所述本地内存的起始点处通过偏移值向后推算在本地内存中对应所述空闲节点的节点的位置。
可以理解的,为了实现在所有中央处理器中保持数据的一致性,所以需要在不同中央处理器中将数据结构构建在相同位置的节点上,为了确保节点的相同,在本实施例中,NUMA架构中具有的多个中央处理器(包括主中央处理器和全部从属中央处理器)的性能参数都是相同的,即:主中央处理器和从属中央处理器完全一致。
步骤S103-5,在所述节点上构建与所述空闲节点上相同的数据结构。
在本实施例中,所述在所述节点上构建与所述空闲节点上相同的数据结构,可以采用如下方式实现:从属中央处理器在起始点处通过偏移值向后推算出的在本地内存中对应所述空闲节点的节点上,构建与主中央处理器的所述空闲节点上相同的数据结构。
为了实现在所有中央处理器中保持数据的一致性,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在所述节点上构建与所述空闲节点上相同的数据结构的步骤之前,需要对从属中央处理器的本地内存进行一致性判断,即:为了保证能够在与所述空闲节点对应的所述节点上构建相同的数据结构,所述节点的状态应为未被占用或空闲状态,具体包括步骤S103-4-1至S103-4-3,下面结合附图3作进一步说明。
请参考图3,其示出了根据本申请的实施例提供的对从属中央处理器的本地内存进行一致性判断的流程图。
步骤S103-4-1,判断在所述本地内存中的所述节点是否被占用。
在本实施例中,所述判断在所述本地内存中的所述节点是否被占用,可以采用如下方式实现:读取从属中央处理器在起始点处通过偏移值向后推算出的在本地内存中对应所述空闲节点的节点,判断所述节点上是否已构建数据结构;或者获取所述节点的内存使用状态信息,判断所述节点的内存使用状态信息是否为非空闲状态。
步骤S103-4-2,若是,则返回异常信息。
在本实施例中,接收步骤S103-4-1中的判断结果,所述返回异常信息,可以采用如下方式实现:从属中央处理器通过互联通道向所述主中央处理器返回异常信息。例如:所述异常信息,包括:从属中央处理器通过互联通道向所述主中央处理器中的管理结构返回内容为“数据结构的创建有问题,出现严重bug”的异常信息。
步骤S103-4-3,若否,则执行所述在所述节点上构建与所述空闲节点上相同的数据结构的步骤。
在本实施例中,接收步骤S103-4-1中的判断结果,若所述本地内存中的所述节点未被占用,则说明在所述节点上构建与所述空闲节点上相同的数据结构后,可以实现从属中央处理器与主中央处理器数据的一致,则在所述从属中央处理器中执行步骤S103-5在所述节点上构建与所述空闲节点上相同的数据结构。
为了实现在所有中央处理器中保持数据的一致性,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构的步骤时,还包括如下步骤:
判断在该中央处理器中执行的构建数据结构的操作是否执行出错;
若是,则执行回滚操作。
需要说明的是,所述回滚操作(ROLLBACK)是在该从属中央处理器中执行的构建数据结构的操作发生故障时,使从属中央处理器的本地内存中的数据返回到以前的状态,在进行回滚时并抛出该条记录执行错误的信息。在执行回滚操作之后是否重新执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构的步骤,需要取决于上层应用的逻辑。例如:如果上层应用的逻辑出错,则重新执行有可能继续失败。
通过本申请实施例提供的一种中央处理器构建数据结构的方法,通过接收主中央处理器发送的构建数据结构的所述空闲节点的位置以及构建的所述数据结构;使得从属中央处理器根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构,与主中央存储器在相同位置构建相同的数据结构,使得从属中央处理器与主中央处理器上的数据保持一致,且使从属中央处理器在构建数据结构时省去了计算空闲节点的过程,减少了相同的操作在不同中央处理器上的重复执行,提高了效率。
在上述的实施例中,提供了一种中央处理器构建数据结构的方法,与上述中央处理器构建数据结构的方法相对应的,本申请还提供了一种中央处理器构建数据结构的装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述中央处理器构建数据结构的装置实施例如下:
请参考图4,其示出了根据本申请的实施例提供的中央处理器构建数据结构的装置的示意图。
所述中央处理器构建数据结构的装置,包括:数据结构接收单元401以及数据结构构建单元403;
所述数据结构接收单元401,用于接收主中央处理器发送的构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;
所述数据结构构建单元403,用于根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
可选的,所述数据结构构建单元403,包括:偏移值获取子单元、节点查找子单元以及数据结构构建子单元;
所述偏移值获取子单元,用于从接收的构建数据结构的所述空闲节点的位置中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值;
所述节点查找子单元,用于在所述本地内存中查找距起始点相同偏移值处的节点;
所述数据结构构建子单元,用于在所述节点上构建与所述空闲节点上相同的数据结构。
可选的,所述数据结构构建单元403,还包括:占用判断子单元、异常信息返回子单元以及数据结构构建触发子单元;
所述占用判断子单元,用于在所述节点上构建与所述空闲节点上相同的数据结构之前,判断在所述本地内存中的所述节点是否被占用;
所述异常信息返回子单元,用于接收所述占用判断子单元的判断结果,若是,则返回异常信息;
所述数据结构构建触发子单元,用于接收所述占用判断子单元的判断结果,若否,则触发所述数据结构构建子单元。
可选的,所述中央处理器构建数据结构的装置,还包括:执行出错判断单元以及回滚操作执行单元;
所述执行出错判断单元,用于在执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构时,判断在该中央处理器中执行的构建数据结构的操作是否执行出错;
所述回滚操作执行单元,用于接收所述执行出错判断单元的判断结果,若是,则执行回滚操作。
在上述的实施例中,提供了一种中央处理器构建数据结构的方法以及一种中央处理器构建数据结构的装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图5,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器501;处理器503;存储器505;
所述存储器505,用于存储数据结构构建程序,所述程序在被所述处理器读取执行时,执行如下操作:接收主中央处理器发送的构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
在上述的实施例中,提供了一种中央处理器构建数据结构的方法、一种中央处理器构建数据结构的装置以及一种电子设备,此外,本申请还提供了一种基于NUMA架构的内存管理方法,所述方法可以应用于一管理结构中,该管理结构可以位于NUMA构架的主中央处理器上;也可以单独作为一个独立的物理结构。所述基于NUMA架构的内存管理方法实施例如下:
请参考图6,其示出了根据本申请的实施例提供的基于NUMA架构的内存管理方法的流程图。
所述基于NUMA架构的内存管理方法包括:
步骤S601,在主中央处理器的本地内存中获取空闲节点。
当系统发起构建数据结构的请求时,首先根据主中央处理器的本地内存中各节点的内存使用状况,选择相应的节点,即在主中央处理器的本地内存中选择未被占用的空闲节点,然后在所选择的空闲节点上构建数据结构。
在本实施例中,所述在主中央处理器的本地内存中获取空闲节点,可以采用如下方式实现:获取所述主中央处理器的本地内存中各个节点的内存使用状态信息,并根据各节点的所述内存使用状态信息,筛选出内存使用状态信息为空闲状态的空闲节点。所述内存使用状态信息包括内存使用比例和空闲状态。
为了确定所述空闲节点的位置,在所述在主中央处理器的本地内存中获取空闲节点后,获取该空闲节点在主中央处理器的本地内存中的偏移值。
需要说明的是,所述空闲节点在主中央处理器的本地内存中的偏移值是该空闲节点的地址与主中央处理器的本地内存的起始点的差值。可以通过偏移值描述在内存中节点的位置,通过偏移值区分在内存中的不同位置处的节点。
为了使在主中央处理器的本地内存中获取的空闲节点符合将要构建的数据结构,避免节点空间的浪费,本实施例的技术方案提供了一种优选实施方式,在优选方式下,根据将要构建的数据结构的内存需求和空闲节点的属性信息,在主中央处理器的本地内存中获取符合将要构建的数据结构的内存需求的空闲节点。
需要说明的是,所述在主中央处理器的本地内存中获取的空闲节点,可以是一个物理的计算节点,也可以为逻辑上的多个物理计算节点,所述本地内存可以是主中央处理器内的任意内存存储单元,例如内存管理区、内存条、内存控制器对应的内存单元等。
具体的,在NUMA架构中,主中央处理器执行时需要申请本地内存以缓存程序代码,所述主中央处理器根据自身需求向本地内存请求用于构建数据结构的节点,该请求中包含所述主中央处理器申请的内存需求信息,该内存需求信息中可以包括:内存大小。例如:主中央处理器发送的请求中包括的需求信息为:500KB,则表示所述主中央处理器请求分配大小为500KB的内存区域。
以上述例子为例,所述主中央处理器请求500KB的内存,在所述主中央处理器的本地内存中获取等于500KB的空闲节点,或者获取大于且最接近500KB的空闲节点。
下面针对所述基于NUMA架构的内存管理方法,本申请提供了一个具体例子以便对所述基于NUMA架构的内存管理方法进行说明:以哈希表为例,在分配哈希表时,会在所述主中央处理器的本地内存中分配哈希表往哈希表里添加一条记录的过程如下:(以伪代码进行说明)
hash_add(entry)
hash_index=hash_func(entry)//master CPU
for I<hash_bucket_length
if hash_bucket is free
在添加记录(entry)时,先需要在主中央处理器(master CPU)中计算哈希索引(hash_index),在计算索引之后,遍历哈希桶(hash_bucket)查找空闲节点,在判断哈希桶的长度满足需求后(for I<hash_bucket_length),判断该哈希桶是否为空闲状态,若是则获取该空闲哈希桶。
在本实施例中的NUMA结构中,具有主中央处理器和从属中央处理器,NUMA架构对中央处理器的总数量没有限制,在常见的NUMA架构中中央处理器的数目通常为2,4,8,16,32等,其中主中央处理器只有一个,其余的中央处理器均为从属中央处理器,根据NUMA架构中中央处理器的数目的不同,在该NUMA架构中包括至少一个从属中央处理器,例如:若NUMA架构中中央处理器的数目为2,则具有一个主中央处理器和一个从属中央处理器;若NUMA架构中中央处理器的数目为4,则具有一个主中央处理器和三个从属中央处理器,根据架构中的中央处理器的数目的增加,从属中央处理器的数目也相应的增长。
需要说明的是,为了实现在所有中央处理器中保持数据的一致性,从属中央处理器创建的数据结构是与主中央处理器中创建的数据结构相对应的,所以需要在不同中央处理器中将数据结构构建在相同位置的节点上,为了确保节点的相同,在本实施例中,NUMA架构中具有的多个中央处理器(包括主中央处理器和全部从属中央处理器)的性能参数都是相同的,即:主中央处理器和从属中央处理器完全一致。
为了确定在NUMA架构中中央处理器的主从关系,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在步骤601在主中央处理器的本地内存中获取空闲节点之前,具体包括步骤S600-1至S600-2,下面结合附图7作进一步说明。
请参考图7,其示出了根据本申请的实施例提供的确定主从关系的流程图。
步骤S600-1,从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器。
在本实施例中,所述从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器,可以采用如下方式实现:从运行在所述NUMA架构中的中央处理器中随机选择一个中央处理器作为主中央处理器。
可以理解的,NUMA架构中具有的多个中央处理器的性能参数都是相同的,所以任意一个中央处理器均可作为主中央处理器。
步骤S600-2,将运行在所述NUMA架构中的其他中央处理器作为从属中央处理器。
例如:若NUMA架构中中央处理器的数目为2,则在所述NUMA架构中有1个中央处理器被作为从属中央处理器;若NUMA架构中中央处理器的数目为4,则在所述NUMA架构中有3个中央处理器被作为从属中央处理器。
步骤S603,在所述空闲节点上构建数据结构。
在本实施例中,所述在所述空闲节点上构建数据结构,可以采用如下方式实现:根据系统发起的构建数据结构的请求中,获取将要构建的数据结构的需求,在步骤S601中获取的所述空闲节点上构建数据结构。
需要说明的是,系统发起的构建数据结构的请求,是构建静态分配的数据结构的请求,所述构建静态分配的数据结构也叫信息结构,常用的整型、浮点型等类型的数据,都属于静态数据,他们的存储空间在程序执行过程中不能加以改变,因此被称为静态分配的数据结构。所以静态数据结构的特点是由系统分配固定大小的存储空间,以后在程序运行的过程中,存储空间的位置和容量都不会再改变。
在本实施例中,构建的所述数据结构包括:数据的逻辑结构、数据的存储结构、数据的运算。所述数据结构中,对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。其中,数据的逻辑结构包括:集合结构、线性结构、树形结构、图状结构;集合结构:除了同属于一种类型外,别无其它关系线性结构;线性结构存在一对一关系的类型有:数组,链表,队列,栈,它们之间在操作上有所区别,例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入和删除操作;树形结构:元素之间存在一对多关系,常见类型有:二叉树、平衡二叉树、查找树等;图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意。
下面仍沿用上述基于NUMA架构的内存管理方法的具体例子,对本步骤的处理过程作进一步说明:在主中央处理器中添加记录的过程如下:(以伪代码进行说明)
if hash_bucket is free
add entry on master CPU
在上述步骤判断该哈希桶是否为空闲状态,若是则获取该空闲哈希桶之后,在主中央处理器(master CPU)上添加记录(entry)。
为了实现在所有中央处理器中保持数据的一致性,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在执行所述在所述空闲节点上构建数据结构的步骤,还包括如下步骤:
判断在主中央处理器中执行的构建数据结构的操作是否执行出错;
若是,则执行回滚操作。
需要说明的是,所述回滚操作(ROLLBACK)是在主中央处理器中执行的构建数据结构的操作发生故障时,使主中央处理器的本地内存中的数据返回到以前的状态,在进行回滚时并抛出该条记录执行错误的信息。在执行回滚操作之后是否重新执行所述在所述空闲节点上构建数据结构的步骤,需要取决于上层应用的逻辑。例如:如果上层应用的逻辑出错,则重新执行有可能继续失败。
步骤S605,向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
在本实施例中,所述向从属中央处理器发送构建数据结构的所述空闲节点的位置以及构建的所述数据结构,可以采用如下方式实现:所述主中央处理器通过互联通道与从属中央处理器进行连接和信息交互,所述主中央处理器向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。所述空闲节点的位置,包括:所述空闲节点在本地内存中的偏移值。
需要说明的是,所述从属中央处理器是slave CPU,所述主中央处理器是masterCPU,所述从属中央处理器与所述主中央处理器通过互联通道进行连接和信息交互,所述互联通道可以是inter-connect通道。
具体的,所述向从属中央处理器发送的构建数据结构的所述空闲节点的位置信息是:构建数据结构的所述空闲节点在主中央处理器的本地内存中的偏移值;所述向从属中央处理器发送的在所述空闲节点上构建的数据结构是:根据系统发起的构建数据结构的请求而构建出的数据结构。
可以理解的,由于在本实施例中的NUMA结构对中央处理器的总数量没有限制,若从属中央处理器的数目大于1,相应的,在执行步骤605向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构时,则向每一从属中央处理器发送构建数据结构的所述空闲节点的位置以及构建的所述数据结构。
通过本申请实施例提供的一种基于NUMA架构的内存管理方法,通过在主中央处理器中计算创建数据结构的节点后,向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构,使从属中央处理器在构建数据结构时不在进行创建数据结构的节点的计算,省去了计算空闲节点的过程,减少了相同的操作在不同中央处理器上的重复执行,提高了效率。
在上述的实施例中,提供了一种基于NUMA架构的内存管理方法,与上述基于NUMA架构的内存管理方法相对应的,本申请还提供了一种基于NUMA架构的内存管理装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述基于NUMA架构的内存管理装置实施例如下:
请参考图8,其示出了根据本申请的实施例提供的基于NUMA架构的内存管理装置的示意图。
所述基于NUMA架构的内存管理装置,包括:空闲节点获取单元801、数据结构构建单元803以及数据结构同步单元805;
所述空闲节点获取单元801,用于在主中央处理器的本地内存中获取空闲节点;
所述数据结构构建单元803,用于在所述空闲节点上构建数据结构;
所述数据结构同步单元805,用于向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
可选的,所述数据结构同步单元805,具体用于向从属中央处理器发送构建数据结构的所述空闲节点在本地内存中的偏移值以及构建的所述数据结构。
可选的,所述数据结构构建单元803,具体用于在所述空闲节点上构建数据结构为静态分配的数据结构。
可选的,所述数据结构同步单元805,用于向至少一个从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
可选的,所述基于NUMA架构的内存管理装置,还包括:主处理器选择单元以及从属处理器选择单元;
所述主处理器选择单元,用于在主中央处理器的本地内存中获取空闲节点之前,从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器;
所述从属处理器选择单元,用于将运行在所述NUMA架构中的其他中央处理器作为从属中央处理器。
可选的,若所述NUMA架构中从属中央处理器的数量大于一,则所述数据结构同步单元805,用于向每一从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
可选的,所述基于NUMA架构的内存管理装置,还包括:判断单元以及回滚操作执行单元;
所述判断单元,用于在执行所述在所述空闲节点上构建数据结构时,判断在主中央处理器中执行的构建数据结构的操作是否执行出错;
所述回滚操作执行单元,用于接收所述判断单元的判断结果,若是,则执行回滚操作。
在上述的实施例中,提供了一种中央处理器构建数据结构的方法、一种中央处理器构建数据结构的装置、一种电子设备、一种基于NUMA架构的内存管理方法以及一种基于NUMA架构的内存管理装置,此外,本申请还提供了另一种电子设备;所述电子设备实施例如下:
请参考图9,其示出了根据本申请的实施例提供的另一种电子设备的示意图。
所述电子设备,包括:显示器901;处理器903;存储器905;
所述存储器905,用于存储内存管理程序,所述程序在被所述处理器读取执行时,执行如下操作:在主中央处理器的本地内存中获取空闲节点;在所述空闲节点上构建数据结构;向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
在上述的实施例中,提供了一种中央处理器构建数据结构的方法、一种中央处理器构建数据结构的装置、一种电子设备、一种基于NUMA架构的内存管理方法、一种基于NUMA架构的内存管理装置以及另一种电子设备,此外,本申请还提供了一种基于NUMA架构的内存管理系统;所述基于NUMA架构的内存管理系统实施例如下:
请参考图10,其示出了根据本申请的实施例提供的基于NUMA架构的内存管理系统的示意图。
所述基于NUMA架构的内存管理系统,包括:中央处理器构建数据结构的装置1001以及基于NUMA架构的内存管理装置1003;
所述中央处理器构建数据结构的装置1001,用于接收主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的所述数据结构,并根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构;
所述基于NUMA架构的内存管理装置1003,用于在主中央处理器的本地内存中获取空闲节点,并在所述空闲节点上构建数据结构,在数据结构构建完毕后向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
所述中央处理器构建数据结构的装置1001和所述基于NUMA架构的内存管理装置703,可以布置于计算机上,但并不局限于这种设备,可以是能够实现上述中央处理器构建数据结构的方法和基于NUMA架构的内存管理方法的任何设备。
在一个典型的配置中,计算设备包括一个或多个处理器(中央处理器)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (26)
1.一种中央处理器构建数据结构的方法,所述中央处理器是NUMA架构中的从属中央处理器,在其特征在于,包括:
接收主中央处理器中管理结构发送的构建指令;
根据所述构建指令,获得主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的数据结构,所述构建数据结构的空闲节点包括,在所述主中央处理器的本地内存中构建了数据结构的节点,所述构建的数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算;
根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
2.根据权利要求1所述的中央处理器构建数据结构的方法,其特征在于,所述根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构,包括:
从接收的构建数据结构的所述空闲节点的位置信息中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值;
在所述本地内存中查找距起始点相同偏移值处的节点;
在所述节点上构建与所述空闲节点上相同的数据结构。
3.根据权利要求2所述的中央处理器构建数据结构的方法,其特征在于,在所述节点上构建与所述空闲节点上相同的数据结构的步骤之前,包括:
判断在所述本地内存中的所述节点是否被占用;
若是,则返回异常信息;
若否,则执行所述在所述节点上构建与所述空闲节点上相同的数据结构的步骤。
4.根据权利要求1所述的中央处理器构建数据结构的方法,其特征在于,在执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构的步骤时,还包括:
判断在该中央处理器中执行的构建数据结构的操作是否执行出错;
若是,则执行回滚操作。
5.一种中央处理器构建数据结构的装置,所述中央处理器是NUMA架构中的从属中央处理器,其特征在于,包括:
数据结构接收单元,用于接收主中央处理器中管理结构发送的构建指令;根据所述构建指令,获得主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的数据结构,所述构建数据结构的空闲节点包括,在所述主中央处理器的本地内存中构建了数据结构的节点,所述构建的数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算;
数据结构构建单元,用于根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
6.根据权利要求5所述的中央处理器构建数据结构的装置,其特征在于,所述数据结构构建单元,包括:
偏移值获取子单元,用于从接收的构建数据结构的所述空闲节点的位置信息中获取所述空闲节点在所述主中央处理器的本地内存中的偏移值;
节点查找子单元,用于在所述本地内存中查找距起始点相同偏移值处的节点;
数据结构构建子单元,用于在所述节点上构建与所述空闲节点上相同的数据结构。
7.根据权利要求6所述的中央处理器构建数据结构的装置,其特征在于,所述数据结构构建单元,还包括:
占用判断子单元,用于在所述节点上构建与所述空闲节点上相同的数据结构之前,判断在所述本地内存中的所述节点是否被占用;
异常信息返回子单元,用于接收所述占用判断子单元的判断结果,若是,则返回异常信息;
数据结构构建触发子单元,用于接收所述占用判断子单元的判断结果,若否,则触发所述数据结构构建子单元。
8.根据权利要求5所述的中央处理器构建数据结构的装置,其特征在于,还包括:
执行出错判断单元,用于在执行所述在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构时,判断在该中央处理器中执行的构建数据结构的操作是否执行出错;
回滚操作执行单元,用于接收所述执行出错判断单元的判断结果,若是,则执行回滚操作。
9.一种电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储数据结构构建程序,所述程序在被所述处理器读取执行时,执行如下操作:接收主中央处理器中管理结构发送的构建指令;根据所述构建指令,获得主中央处理器发送的构建数据结构的空闲节点的位置信息以及构建的数据结构,所述构建数据结构的空闲节点包括,在所述主中央处理器的本地内存中构建了数据结构的节点,所述构建的数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算;根据所述空闲节点的位置信息,在本地内存中对应所述空闲节点的节点上构建与所述空闲节点上相同的数据结构。
10.一种基于NUMA架构的内存管理方法,其特征在于,包括:
在主中央处理器的本地内存中获取空闲节点;
在所述空闲节点上构建数据结构;
向从属中央处理器发送构建指令,所述构建指令中包括构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;
其中,所述构建数据结构的空闲节点包括,在所述主中央处理器的本地内存中构建了数据结构的节点,所述构建的数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算。
11.根据权利要求10所述的基于NUMA架构的内存管理方法,其特征在于,所述空闲节点的位置信息,包括:所述空闲节点在本地内存中的偏移值。
12.根据权利要求10所述的基于NUMA架构的内存管理方法,其特征在于,所述从属中央处理器的性能参数与所述主中央处理器的性能参数相同。
13.根据权利要求12所述的基于NUMA架构的内存管理方法,其特征在于,在所述空闲节点上构建数据结构为静态分配的数据结构。
14.根据权利要求13所述的基于NUMA架构的内存管理方法,其特征在于,所述NUMA架构中包括至少一个从属中央处理器。
15.根据权利要求14所述的基于NUMA架构的内存管理方法,其特征在于,在所述在主中央处理器的本地内存中获取空闲节点的步骤之前,包括:
从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器;
将运行在所述NUMA架构中的其他中央处理器作为从属中央处理器。
16.根据权利要求14所述的基于NUMA架构的内存管理方法,其特征在于,若在所述向从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构的步骤中,所述NUMA架构中从属中央处理器的数量大于一,则执行如下步骤:
向每一从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
17.根据权利要求10所述的基于NUMA架构的内存管理方法,其特征在于,在执行所述在所述空闲节点上构建数据结构的步骤时,包括:
判断在主中央处理器中执行的构建数据结构的操作是否执行出错;
若是,则执行回滚操作。
18.一种基于NUMA架构的内存管理装置,其特征在于,包括:
空闲节点获取单元,用于在主中央处理器的本地内存中获取空闲节点;
数据结构构建单元,用于在所述空闲节点上构建数据结构;
数据结构同步单元,用于向从属中央处理器发送构建指令,所述构建指令中包括构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;
其中,所述构建数据结构的空闲节点包括,在所述主中央处理器的本地内存中构建了数据结构的节点,所述构建的数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算。
19.根据权利要求18所述的基于NUMA架构的内存管理装置,其特征在于,所述数据结构同步单元,具体用于向从属中央处理器发送构建数据结构的所述空闲节点在本地内存中的偏移值以及构建的所述数据结构。
20.根据权利要求18所述的基于NUMA架构的内存管理装置,其特征在于,所述数据结构构建单元,具体用于在所述空闲节点上构建数据结构为静态分配的数据结构。
21.根据权利要求20所述的基于NUMA架构的内存管理装置,其特征在于,所述数据结构同步单元,用于向至少一个从属中央处理器发送构建数据结构的所述空闲节点的位置以及构建的所述数据结构。
22.根据权利要求21所述的基于NUMA架构的内存管理装置,其特征在于,还包括:
主处理器选择单元,用于在主中央处理器的本地内存中获取空闲节点之前,从运行在所述NUMA架构中的中央处理器中选择一个中央处理器作为主中央处理器;
从属处理器选择单元,用于将运行在所述NUMA架构中的其他中央处理器作为从属中央处理器。
23.根据权利要求21所述的基于NUMA架构的内存管理装置,其特征在于,若所述NUMA架构中从属中央处理器的数量大于一,则所述数据结构同步单元,用于向每一从属中央处理器发送构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构。
24.根据权利要求18所述的基于NUMA架构的内存管理装置,其特征在于,还包括:
判断单元,用于在执行所述在所述空闲节点上构建数据结构时,判断在主中央处理器中执行的构建数据结构的操作是否执行出错;
回滚操作执行单元,用于接收所述判断单元的判断结果,若是,则执行回滚操作。
25.一种电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储内存管理程序,所述程序在被所述处理器读取执行时,执行如下操作:在主中央处理器的本地内存中获取空闲节点;在所述空闲节点上构建数据结构;向从属中央处理器发送构建指令,所述构建指令中包括构建数据结构的所述空闲节点的位置信息以及构建的所述数据结构;
其中,所述构建数据结构的空闲节点包括,在所述主中央处理器的本地内存中构建了数据结构的节点,所述构建的数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算。
26.一种基于NUMA架构的内存管理系统,其特征在于,包括:
根据上述权利要求5至8中任一项所述的中央处理器构建数据结构的装置;以及
根据权利要求18至24中任一项所述的基于NUMA架构的内存管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610099456.7A CN107102898B (zh) | 2016-02-23 | 2016-02-23 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610099456.7A CN107102898B (zh) | 2016-02-23 | 2016-02-23 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107102898A CN107102898A (zh) | 2017-08-29 |
CN107102898B true CN107102898B (zh) | 2021-04-30 |
Family
ID=59658797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610099456.7A Active CN107102898B (zh) | 2016-02-23 | 2016-02-23 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107102898B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113050874A (zh) * | 2019-12-26 | 2021-06-29 | 华为技术有限公司 | 一种内存设置方法以及装置 |
WO2023136376A1 (ko) * | 2022-01-13 | 2023-07-20 | 엘지전자 주식회사 | 차량용 디스플레이 장치 |
CN115729849B (zh) * | 2022-11-04 | 2024-02-20 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025756A (zh) * | 2009-09-09 | 2011-04-20 | 中兴通讯股份有限公司 | 分布式系统及其数据同步方法 |
CN104917784A (zh) * | 2014-03-10 | 2015-09-16 | 华为技术有限公司 | 一种数据迁移方法、装置及计算机系统 |
CN105159841A (zh) * | 2014-06-13 | 2015-12-16 | 华为技术有限公司 | 一种内存迁移方法及装置 |
-
2016
- 2016-02-23 CN CN201610099456.7A patent/CN107102898B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025756A (zh) * | 2009-09-09 | 2011-04-20 | 中兴通讯股份有限公司 | 分布式系统及其数据同步方法 |
CN104917784A (zh) * | 2014-03-10 | 2015-09-16 | 华为技术有限公司 | 一种数据迁移方法、装置及计算机系统 |
CN105159841A (zh) * | 2014-06-13 | 2015-12-16 | 华为技术有限公司 | 一种内存迁移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107102898A (zh) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5932043B2 (ja) | 不揮発性記憶装置セットの揮発メモリ表現 | |
JP6338208B2 (ja) | 仮想マシンのデータへアクセスするための方法および装置 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
WO2023231345A1 (zh) | 对多个交易进行分组的方法和区块链节点 | |
CN111309245B (zh) | 一种分层存储写入方法和装置、读取方法和装置及系统 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN107102898B (zh) | 一种基于numa架构的内存管理、构建数据结构的方法及装置 | |
CN114385089B (zh) | 一种基于交叉编址的动态bank存储方法、装置及电子设备 | |
CN114297196B (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
US20240220334A1 (en) | Data processing method in distributed system, and related system | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN107943412B (zh) | 一种分区分裂、删除分区中数据文件的方法、装置及系统 | |
CN113434470B (zh) | 数据分布方法、装置及电子设备 | |
EP3264254A1 (en) | System and method for a simulation of a block storage system on an object storage system | |
US11200210B2 (en) | Method of efficient backup of distributed file system files with transparent data access | |
CN111221814B (zh) | 二级索引的构建方法、装置及设备 | |
CN109508140B (zh) | 存储资源管理方法、装置、电子设备及电子设备、系统 | |
Prasad et al. | Improving the performance of processing for small files in Hadoop: A case study of weather data analytics | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
US20170364454A1 (en) | Method, apparatus, and computer program stored in computer readable medium for reading block in database system | |
US12067249B2 (en) | Data shaping to reduce memory wear in a multi-tenant database | |
CN113849482A (zh) | 一种数据迁移方法、装置及电子设备 | |
CN111782634A (zh) | 数据分布式存储方法、装置、电子设备及存储介质 | |
CN117215499B (zh) | 精简卷的数据访问方法、装置、产品及多控存储系统 | |
US9251100B2 (en) | Bitmap locking using a nodal lock |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |