Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MEMORY ACCESS METHOD, DEVICE AND SYSTEM
Document Type and Number:
WIPO Patent Application WO/2014/206078
Kind Code:
A1
Abstract:
Provided are a memory access method, device and system. The memory access method comprises: a node controller receiving monitoring information sent by an operating system, wherein the monitoring information carries information about a monitored memory in a first node to which the node controller belongs, the monitored memory is a memory resource occupied by a target process on the first node, and the target process is a process which operates on a central processing unit (CPU) of the first node and accesses a memory of an accessed node other than the first node in a server system; if it is monitored that the frequency of access to the memory of the accessed node by the target process occupying the monitored memory is greater than or equal to a threshold value, then sending information about the accessed node to the operating system, so as to migrate the target process to the accessed node according to the information about the accessed node; and converting the remote memory access into local memory access or adjacent memory access, so that the time it takes for the target process to access the memory can be reduced, thereby effectively improving the performance of the server system.

Inventors:
CHU LIXING (CN)
Application Number:
PCT/CN2014/071252
Publication Date:
December 31, 2014
Filing Date:
January 23, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F9/50
Foreign References:
CN103365717A2013-10-23
CN102984762A2013-03-20
CN102369511A2012-03-07
US6269390B12001-07-31
CN103036959A2013-04-10
Download PDF:
Claims:
权 利 要 求

1、 一种内存访问方法, 其特征在于, 包括:

节点控制器接收操作系统发送的监控信息,所述监控信息中携带有所述 节点控制器所属第一节点中被监控内存的信息,所述被监控内存是目标进程 在所述第一节点上占用的内存资源,所述操作系统运行在由包括所述第一节 点在内的至少两个节点组成的服务器系统中的每个节点上,所述目标进程是 在所述第一节点的中央处理器 CPU上运行、且对所述服务器系统中所述第一 节点之外的被访问节点的内存进行访问的进程;

所述节点控制器若监控到占用所述被监控内存的所述目标进程对所述 被访问节点的内存进行访问的频度大于或等于阔值,则将所述被访问节点的 信息发送给所述操作系统,以使所述操作系统根据所述被访问节点的信息将 所述目标进程迁移至所述被访问节点。

2、 根据权利要求 1所述的内存访问方法, 其特征在于, 所述阔值为在 预设时间内所述第一节点中全部 CPU上运行的进程中,对其他节点的内存进 行访问的次数与所述第一节点中 CPU总数的比值。

3、 根据权利要求 1或 2所述的内存访问方法, 其特征在于, 所述节点 控制器为节点控制器 NC芯片;

相应地, 所述节点控制器接收操作系统发送的监控信息包括: 所述节点控制器 NC芯片通过所述第一节点的主板管理控制单元, 接收 所述操作系统发送的所述监控信息;

相应地,所述节点控制器若监控到占用所述被监控内存的所述目标进程 对所述被访问节点的内存进行访问的频度大于或等于阔值,则将所述被访问 节点的信息发送给所述操作系统包括:

所述节点控制器 NC芯片, 若监控到占用所述被监控内存的所述目标进 程对所述被访问节点的内存进行访问的频度大于或等于所述阔值,则将所述 被访问节点中被访问内存的信息,通过所述主板管理控制单元发送给所述操 作系统。 4、 一种节点控制器, 其特征在于, 包括:

接收单元, 用于接收操作系统发送的监控信息, 所述监控信息中携带有 所述节点控制器所属第一节点中被监控内存的信息,所述被监控内存是目标 进程在所述第一节点上占用的内存资源,所述操作系统运行在由包括所述第 一节点在内的至少两个节点组成的服务器系统中的每个节点上,所述目标进 程是在所述第一节点的中央处理器 CPU上运行、且对所述服务器系统中所述 第一节点之外的被访问节点的内存进行访问的进程;

监控单元,用于在监控到所述被监控内存的所述目标进程对所述被访问 节点的内存进行访问的频度大于或等于阔值,则将所述被访问节点的信息发 送给所述操作系统,以使所述操作系统根据所述被访问节点的信息将所述目 标进程迁移至所述被访问节点。

5、 根据权利要求 4所述的节点控制器, 其特征在于, 所述阔值是在预 设时间内所述第一节点中全部 CPU上运行的进程中,对其他节点的内存进行 访问的次数与所述第一节点中 CPU总数的比值。

6、 根据权利要求 4或 5所述的节点控制器, 其特征在于, 所述接收单 元具体用于:

通过所述第一节点的主板管理控制单元,接收所述操作系统发送的所述 监控信息;

所述监控单元具体用于:

在监控到占用所述被监控内存的所述目标进程对被访问节点的内存进 行访问的频度大于或等于所述阔值时,将所述被访问节点中被访问内存的信 息, 通过所述主板管理控制单元发送给所述操作系统。

7、 一种服务器系统, 其特征在于, 包括至少两个包括如权利要求 4-6 中任一所述的节点控制器的节点; 所述服务器系统中运行有操作系统; 所述操作系统若判断出存在目标进程,则向所述目标进程运行所在的第 一节点发送监控信息,所述监控信息中携带有所述节点控制器所属的所述第 一节点中被监控内存的信息,所述被监控内存是所述目标进程在所述第一节 点上占用的内存资源,所述目标进程是在所述第一节点的中央处理器 CPU上 运行、且对所述服务器系统中所述第一节点之外的被访问节点的内存进行访 问的进程;

所述操作系统接收到所述第一节点发送的被所述目标进程访问的被访 问节点的信息之后, 将所述目标进程迁移至所述被访问节点。

8、 根据权利要求 7所述的服务器系统, 其特征在于, 所述操作系统若 判断出所述被访问节点中被访问内存所属的 CPU , 其内存资源具有运行所述 目标进程的能力, 则将所述目标进程迁移至所述被访问内存所属的 CPU ; 若 判断出所述被访问内存所属的 CPU , 其内存资源不具有运行所述目标进程的 能力,且所述被访问节点中的其他 CPU的内存资源具有运行所述目标进程的 能力, 则将所述目标进程迁移至所述被访问节点的其他 CPU。

Description:
内存访问方法、 装置及系统

技术领域 本发明实施例涉及计算机技术, 尤其涉及一种内存访问方法、 装置及 系统。 背景技术 随着计算机技术的发展, 服务器系统可以由一台或多台服务器组成, 每 台月良务器作为一个节点, 形成非一致性内存访问 (Non-Uniform Memory Access, NUMA ) 架构。

在 N醫 A架构的服务器系统中,每个节点中可以包括 个或多个中央处理 单元 (Central Processing Unit, CPU) , 每个 CPU可以预先被配置一定的 内存资源。 CPU上运行的进程可以釆用如下三种方法对服务 器系统中的内存 资源进行访问, 分另 1 J为本地 ( local ) 内存访问、 4近( buddy ) 内存访问和 远端 ( remote ) 内存访问。

CPU上运行的进程对该 CPU 自身的内存资源进行访问的方法, 即本地内 存访问; CPU上运行的进程对该 CPU所属节点内其他 CPU的内存资源进行访 问的方法, 即邻近内存访问; CPU上运行的进程对该 CPU所属节点以外的、 其他节点内的 CPU的内存资源进行访问的方法, 即远端内存访问。

在这三种内存访问方法中, CPU上运行的进程进行远端内存访问所需的 时间较长, 可能为进行本地内存访问所需时间的 3-20倍, 因此, 现有服务器 系统中的 CPU上运行的进程在釆用远端内存访问的方法访 问内存资源时, 会 导致系统的整体性能降低。 发明内容 本发明实施例提供一种内存访问方法、 装置及系统, 用于提高服务器系 统整体的性能。 本发明实施例的第一个方面是提供一种内存访 问方法, 包括: 节点控制器接收操作系统发送的监控信息, 所述监控信息中携带有所述 节点控制器所属第一节点中被监控内存的信息 , 所述被监控内存是目标进程 在所述第一节点上占用的内存资源, 所述操作系统运行在由包括所述第一节 点在内的至少两个节点组成的服务器系统中的 每个节点上, 所述目标进程是 在所述第一节点的中央处理器 CPU上运行、 且对所述服务器系统中所述第一 节点之外的被访问节点的内存进行访问的进程 ;

所述节点控制器若监控到占用所述被监控内存 的所述目标进程对所述被 访问节点的内存进行访问的频度大于或等于阔 值, 则将所述被访问节点的信 息发送给所述操作系统, 以使所述操作系统根据所述被访问节点的信息 将所 述目标进程迁移至所述被访问节点。

结合第一个方面提供的内存访问方法, 在第一种可能的实现方式中, 所 述阔值为在预设时间内所述第一节点中全部 CPU上运行的进程中, 对其他节 点的内存进行访问的次数与所述第一节点中 CPU总数的比值。

结合第一个方面或第一种可能的实现方式,在 第二种可能的实现方式中, 所述节点控制器为节点控制器 NC芯片;

相应地, 所述节点控制器接收操作系统发送的监控信息 包括:

所述节点控制器 NC芯片通过所述第一节点的主板管理控制单元 接收所 述操作系统发送的所述监控信息;

相应地, 所述节点控制器若监控到占用所述被监控内存 的所述目标进程 对所述被访问节点的内存进行访问的频度大于 或等于阔值, 则将所述被访问 节点的信息发送给所述操作系统包括:

所述节点控制器 NC芯片,若监控到占用所述被监控内存的所述 标进程 对所述被访问节点的内存进行访问的频度大于 或等于所述阔值, 则将所述被 访问节点中被访问内存的信息, 通过所述主板管理控制单元发送给所述操作 系统。

本发明实施例的第二个方面是提供一种节点控 制器, 包括: 接收单元, 用于接收操作系统发送的监控信息, 所述监控信息中携带有 所述节点控制器所属第一节点中被监控内存的 信息, 所述被监控内存是目标 进程在所述第一节点上占用的内存资源, 所述操作系统运行在由包括所述第 一节点在内的至少两个节点组成的服务器系统 中的每个节点上, 所述目标进 程是在所述第一节点的中央处理器 CPU上运行、 且对所述服务器系统中所述 第一节点之外的被访问节点的内存进行访问的 进程;

监控单元, 用于在监控到所述被监控内存的所述目标进程 对所述被访问 节点的内存进行访问的频度大于或等于阔值, 则将所述被访问节点的信息发 送给所述操作系统, 以使所述操作系统根据所述被访问节点的信息 将所述目 标进程迁移至所述被访问节点。

结合第二个方面提供的节点控制器, 在第一种可能的实现方式中, 所述 阔值是在预设时间内所述第一节点中全部 CPU上运行的进程中, 对其他节点 的内存进行访问的次数与所述第一节点中 CPU总数的比值。

结合第二个方面或第一种可能的实现方式,在 第二种可能的实现方式中, 所述接收单元具体用于:

通过所述第一节点的主板管理控制单元, 接收所述操作系统发送的所述 监控信息;

所述监控单元具体用于:

在监控到占用所述被监控内存的所述目标进程 对被访问节点的内存进行 访问的频度大于或等于所述阔值时,将所述被 访问节点中被访问内存的信息, 通过所述主板管理控制单元发送给所述操作系 统。

本发明实施例的第三个方面是提供一种服务器 系统, 包括至少两个包括 节点控制器的节点; 所述服务器系统中运行有操作系统;

所述操作系统若判断出存在目标进程, 则向所述目标进程运行所在的第 一节点发送监控信息, 所述监控信息中携带有所述节点控制器所属的 所述第 一节点中被监控内存的信息, 所述被监控内存是所述目标进程在所述第一节 点上占用的内存资源, 所述目标进程是在所述第一节点的中央处理器 CPU上 运行、 且对所述服务器系统中所述第一节点之外的被 访问节点的内存进行访 问的进程;

所述操作系统接收到所述第一节点发送的被所 述目标进程访问的被访问 节点的信息之后, 将所述目标进程迁移至所述被访问节点。

结合第三个方面提供的服务器系统, 在第一种可能的实现方式中, 所述 操作系统若判断出所述被访问节点中被访问内 存所属的 CPU , 其内存资源具 有运行所述目标进程的能力, 则将所述目标进程迁移至所述被访问内存所属 的 CPU ; 若判断出所述被访问内存所属的 CPU , 其内存资源不具有运行所述目 标进程的能力, 且所述被访问节点中的其他 CPU的内存资源具有运行所述目 标进程的能力, 则将所述目标进程迁移至所述被访问节点的其 他 CPU。

本发明实施例提供的内存访问方法、 装置及系统, 节点控制器在接收到 操作系统发送的监控信息之后, 若监控到占用被监控内存的进程对被访问节 点的内存进行远端访问的频度大于或等于阔值 , 则将被访问节点的信息发送 给操作系统, 以使操作系统将目标进程迁移至所述被访问节 点; 将远端内存 访问转换为本地内存访问或邻近内存访问, 从而能够减小目标进程访问内存 的时间, 有效地提高了服务器系统的性能。 附图说明 图 1为本发明实施例提供的内存访问方法的流程 ;

图 2为本发明实施例提供的另一内存访问方法的 程图;

图 3为本发明实施例提供的节点控制器的结构示 图;

图 4为本发明实施例提供的另一节点控制器的结 示意图;

图 5为本发明实施例提供的服务器系统的结构示 图。 具体实施方式 本发明各实施例为了提高进程在釆用远端内存 访问的方式时, 服务器系 统的性能, 釆用了对满足一定条件的进程进行迁移的内存 访问方法, 将远端 内存访问的方式转换为本地内存访问或邻近内 存访问的方式。

本发明各实施例可以应用在由至少两个节点组 成的多服务器系统中, 各 节点中包括本发明各实施例所述的节点控制器 。每个节点可以为一台服务器, 每台服务器上可以包括一个或多个 CPU , 每个 CPU可以对应地被分配有部分 内存资源。 操作系统( Opera t i ng Sys t em, OS )可以运行在该服务器系统中。

图 1为本发明实施例提供的内存访问方法的流程 , 如图 1所示, 该方 法包括:

1 01、 节点控制器接收操作系统发送的监控信息。

其中, 所述监控信息中携带有所述节点控制器所属第 一节点中被监控内 存的信息, 所述被监控内存是目标进程在所述第一节点上 占用的内存资源, 所述操作系统运行在由包括所述第一节点在内 的至少两个节点组成的服务器 系统中的每个节点上, 所述目标进程是在所述第一节点的中央处理器 CPU上 运行、 且对所述服务器系统中所述第一节点之外的被 访问节点的内存进行访 问的进程。

具体的, 操作系统运行在服务器系统的各个节点上, 每个节点的 CPU上 均可能运行着一个或多个进程, 这些进程可以釆用本地内存访问、 邻近内存 访问或远端内存访问进行内存访问。

本发明各实施例主要针对进行远端内存访问的 进程, 因此本发明各实施 例中所述的 "目标进程" 即指代进行远端内存访问的进程。 也就是说, 目标 进程对其所运行于的 CPU所属的节点以外的、 其他节点中的内存资源进行访 问。 本发明各实施例中所述的 "第一节点" 即作为执行主体的节点控制器所 属的节点, 这样命名是为了与其他节点进行区分, 以避免混淆。

操作系统能够从全局的角度对各节点以及各节 点中运行的进程进行管 理, 因此操作系统能够获知各节点中的进程的运行 情况。 例如, 节点中有哪 些进程在运行, 这些进程运行在哪个 CPU上, 占用的是哪个 CPU的哪部分内 存。 操作系统能够获知各进程对于内存进行访问的 情况, 包括进程访问的是 哪个节点的哪个 CPU上的哪部分内存资源。 因此, 当进程进行远端内存访问 时, 操作系统能够获知这一情况。

操作系统在获知服务器系统所运行的进程中, 存在目标进程时, 向运行 该目标进程的第一节点上的节点控制器发送监 控信息。 其中, 监控信息中包 括该目标进程在该第一节点上占用的内存资源 的信息, 本发明各实施例中将 该部分内存资源称为 "被监控内存" 。

1 02、节点控制器在监控到占用所述被监控内存 所述目标进程对被访问 节点的内存进行访问的频度大于或等于阔值时 , 将所述被访问节点的信息发 送给所述操作系统。 执行步骤 1 02是为了使所述操作系统根据所述被访问节 点的信息, 将所述目标进程迁移至所述被访问节点。

具体的, 节点控制器在接收到监控信息之后, 对监控信息中所指示的被 监控内存进行监控。 第一节点能够获知其上所运行的进程访问内存 的情况。 节点控制器可以不直接对进程进行监控, 由于运行在第一节点上的进程将在 本地占用所运行于的 CPU上的部分内存, 因此节点控制器可以对这部分内存 进行监控。

并且, 当该第一节点上的进程对其他节点上的内存进 行访问时, 节点控 制器也能够获知其他节点上被访问的内存的信 息, 本发明各实施例中将目标 进程远端访问的内存所属的节点, 称为 "被访问节点" ; 将位于其他节点上 的、 被目标进程访问的内存资源, 称为 "被访问内存" 。

节点控制器对被监控内存中所运行的进程, 对其他节点的内存进行访问 的情况进行监控。 具体可以为监控目标进程对其他节点的内存进 行访问的频 度。

节点控制器中可以预设统计周期和阔值。 节点控制器监控每个统计周期 内, 目标节点对被访问节点的内存进行访问的次数 , 获得频度值。 节点控制 器若判断出该频度值大于或等于该阔值, 则说明该目标进程当前主要釆用远 端内存访问的方式。 为了提高服务器系统的性能, 在这样的情况下, 节点控 制器将被访问节点的信息发送给操作系统。 其中, 被访问节点的信息中可以 包括, 被访问节点中被目标进程访问的被访问内存的 信息。 但是, 由于操作 系统能够获知目标进程进行远端访问时所访问 的内存资源是哪些, 因此在被 访问节点的信息中携带被访问内存的信息并不 是必须的。

操作系统接收到该被访问节点的信息之后, 可以将目标进程迁移到该被 访问节点, 从而使得迁移之后, 目标进程能够釆用本地访问或邻近访问的方 式, 对被访问节点的内存进行访问, 从而能够有效地提高系统性能。

进一步地, 操作系统也可以不直接对目标进程进行迁移, 在对被访问节 点中的内存资源的剩余情况进行判断之后, 当剩余的内存资源足够运行该目 标进程时, 再对该目标进程进行迁移, 以更好地提高系统性能。

其中, 操作系统对进程进行迁移的方法, 可以釆用与现有技术中类似的 实现方式, 此次不再赘述。

本发明实施例提供的内存访问方法, 节点控制器在接收到操作系统发送 的监控信息之后, 若监控到占用被监控内存的目标进程对被访问 节点的内存 进行远端访问的频度大于或等于阔值, 则将被访问节点的信息发送给操作系 统, 以使操作系统将目标进程迁移至所述被访问节 点; 将远端内存访问转换 为本地内存访问或邻近内存访问, 从而能够减小目标进程访问内存的时间, 有效地提高了服务器系统的性能。

图 2为本发明实施例提供的另一内存访问方法的 程图, 如图 2所示, 该方法包括:

201、 第一节点中的节点控制器 NC芯片通过主板管理控制单元, 接收操 作系统发送的监控信息。

具体的, 在步骤 1 01中所述实现方式的基础上, NC芯片与操作系统之间 的通信, 是通过在第一节点上所设置的主板管理控制单 元实现的。

202、 第一节点中的 NC芯片在监控到占用所述被监控内存的所述目 进 程对所述被访问节点的内存进行访问的频度大 于或等于所述阔值时, 将所述 被访问节点中被访问内存的信息, 通过所述主板管理控制单元发送给所述操 作系统。

具体的, 可以参见步骤 1 02中所述的实现方式。 进一步地, 在 NUMA架构的服务器系统中, 当节点的数量较多时, 如果釆 用直接互连的方式对节点进行连接, 则节点之间的连接关系将受限于节点上 的接口数量或互连通信协议, 因此可以釆用节点控制器 (Node Controller, NC)芯片将各个节点进行互连。 每个节点上设置有一个 NC芯片, 节点之间分 别通过各自的 NC芯片能够通信连接,分别属于两个节点上的 CPU之间可以通 过 NC芯片实现高速互连,并且节点之间的连接不 要再受限于节点上的接口 数量。 NC芯片具有緩存 (Cache) —致性检查和报文转发等功能。

操作系统可以通过节点上的主板管理控制单元 (Baseboard Management Controller, BMC ) , 对节点上的 NC芯片上的寄存器进行读写操作。 BMC支 持行业标准的智能平台管理接口 ( Intelligent Platform Management

Interface, IPMI )规范。 该规范描述了已经内置到主板上的管理功能, 包括 本地和远程诊断、 控制台支持、 配置管理、 硬件管理和故障排除等。 IPMI是 一项应用于服务器管理系统设计的开放的免费 标准。 I P M I提供多种系统接 口, 键盘控制器方式 (Keyboard Controller Style, KCS ) 是目前使用最广 泛的 IPMI系统接口。 操作系统可以通过 KCS与 BMC进行通信。 BMC可以通过 集成电路总线 ( Inter- Integrated Circuit, IIC )访问 NC芯片的寄存器, 进行读写操作, 从而实现对 NC芯片状态的监控或控制。

第一节点上的 NC芯片对被监控内存进行监控,并且对被监控 存上所运 行的目标进程对其他节点的内存进行访问的情 况, 进行监控。

进一步地, 所述阔值为在预设时间内所述第一节点中全部 CPU上运行的 进程中, 对其他节点的内存进行访问的次数与所述第一 节点中 CPU总数的比 值。

具体的, 阔值可以根据需要被设定, 一种典型的设置方式如下。

第一节点中预设一个时间长度,统计预设时间 内该第一节点上与 NC芯片 互连的全部 CPU上运行的进程, 釆用远端内存访问的次数, 该次数既包括对 其他节点中的共享内存的访问, 也包括对其他节点中的非共享内存的访问。

将该次数与该第一节点上的 CPU的数量的比值,作为该阔值。也就是说, 第一节点的 NC芯片如果监控到被监控内存上运行的目标进 ,进行远端内存 访问的次数, 大于或等于单个 CPU上进行远端内存访问的平均值, 则说明该 目标进程进行远端内存访问较为频繁, 该目标进程需要被迁移。

举例说明, 例如节点中的 CPU的数量为 8个, 预设时间内通过该节点的 NC芯片进行远端内存访问的请求数为 1 000次, 即 8个 CPU上运行的所有进 程共进行了 1 000次远端内存访问。从而可计算出,每个 CPU在预设时间内对 远端访问的平均值为 1 25次。

从而, 将阔值设定为 1 25。 当目标进程在统计周期内进行远端内存访问 的次数大于或等于 1 25 , 则说明该目标进程对远端内存的访问较为频繁 , 需 要被迁移。

图 3为本发明实施例提供的节点控制器的结构示 图, 如图 3所示, 该 节点控制器包括:

接收单元 1 1 , 用于接收操作系统发送的监控信息, 所述监控信息中携带 有所述节点控制器所属第一节点中被监控内存 的信息, 所述被监控内存是目 标进程在所述第一节点上占用的内存资源, 所述操作系统运行在由包括所述 第一节点在内的至少两个节点组成的服务器系 统中的每个节点上, 所述目标 进程是在所述第一节点的中央处理器 CPU上运行、 且对所述服务器系统中所 述第一节点之外的被访问节点的内存进行访问 的进程;

监控单元 1 2 , 用于在监控所述被监控内存的所述目标进程对 所述被访问 节点的内存进行访问的频度大于或等于阔值, 则将所述被访问节点的信息发 送给所述操作系统, 以使所述操作系统根据所述被访问节点的信息 将所述目 标进程迁移至所述被访问节点。

进一步地,所述监控单元 1 2中用于与占用所述被监控内存的所述目标进 程对所述被访问节点的内存进行访问的频度进 行比较的所述阔值, 所述阔值 是在预设时间内所述第一节点中全部 CPU上运行的进程中, 对其他节点的内 存进行访问的次数与所述第一节点中 CPU总数的比值。

进一步地, 所述接收单元 1 1具体用于: 通过所述第一节点的主板管理控制单元, 接收所述操作系统发送的所述 监控信息;

所述监控单元 12具体用于:

在监控到占用所述被监控内存的所述目标进程 对被访问节点的内存进行 访问的频度大于或等于所述阔值时,将所述被 访问节点中被访问内存的信息, 通过所述主板管理控制单元发送给所述操作系 统。

图 4为本发明实施例提供的另一节点控制器的结 示意图,如图 4所示, 该节点控制器包括:

处理器 21、 存储器 22、 总线 23和通信接口 24。 处理器 21、 存储器 22 和通信接口 24之间通过总线 23连接并完成相互间的通信。

处理器 21可能为单核或多核中央处理单元 ( Central Processing Unit, CPU ) , 或者为特定集成电路 ( Application Specif ic Integrated Circuit, ASIC) , 或者为被配置成实施本发明实施例的一个或多 个集成电路。

存储器 11可以为高速 RAM存储器, 也可以为非易失性存储器

( non-volatile memory ) , 例如至少一个磁盘存储器。

存储器 22用于存放程序 221。 具体的, 程序 221中可以包括程序代码, 所述程序代码包括计算机操作指令。

通信接口 24用于接收操作系统发送的监控信息,所述监 信息中携带有 所述节点控制器所属第一节点中被监控内存的 信息, 所述被监控内存是目标 进程在所述第一节点上占用的内存资源, 所述操作系统运行在由包括所述第 一节点在内的至少两个节点组成的服务器系统 中的每个节点上, 所述目标进 程是在所述第一节点的中央处理器 CPU上运行、 且对所述服务器系统中所述 第一节点之外的被访问节点的内存进行访问的 进程。

处理器 21运行程序 221, 以执行:

在监控到所述被监控内存的所述目标进程对所 述被访问节点的内存进行 访问的频度大于或等于阔值, 则将所述被访问节点的信息发送给所述操作系 统, 以使所述操作系统根据所述被访问节点的信息 将所述目标进程迁移至所 述被访问节点。

具体的, 本发明各实施例提供的节点控制器进行内存访 问的方法, 可以 参见上述对应的方法实施例中所述的操作步骤 , 此处不再赘述。

图 5为本发明实施例提供的服务器系统的结构示 图, 如图 5所示, 该 服务器系统包括至少两个节点, 分别为包括如图 3或图 4所述节点控制器的 节点 1和节点 2。

所述服务器系统中运行有操作系统; 所述操作系统若判断出存在目标进 程, 则向所述目标进程所运行于的第一节点控制器 发送监控信息, 所述监控 信息中携带有所述节点控制器所属第一节点控 制器所属节点中被监控内存的 信息, 所述被监控内存是所述目标进程在所述第一节 点上占用的内存资源, 所述目标进程是在所述第一节点的中央处理器 CPU上运行、 且对所述服务器 系统中所述第一节点之外的被访问节点的内存 进行访问的进程;

所述操作系统接收到所述第一节点发送的被所 述目标进程访问的被访问 节点的信息之后, 将所述目标进程迁移至所述被访问节点。

具体的, 可以参见步骤 1 01 - 1 02 , 或者 2 01 -2 02中所述的实现方式。 进一步地, 在实际应用中服务器系统可以釆用如下方式, 实现对内存的 访问。

操作系统在运行时, 如果判断出有进程创建了共享内存, 即将该共享内 存作为被监控内存, 即启动共享内存监控模块。 共享内存监控模块, 用于判 断该进程是否对在其所属的节点以外的、 其他节点的内存资源进行访问; 若 是, 则操作系统启动 OS信息上报模块。 OS信息上报模块, 用于将监控信息 发送给 BMC。

其中, 监控信息包括 CPU号、 节点号和被监控内存的信息。 CPU号是 CPU 在整个服务器系统中的唯一标识; 节点号是节点在整个服务器系统中的唯一 标识; 被监控内存的信息 NC芯片需要监控的内存区域的描述信息,通常 若 干组内存区段物理地址的起始和结束地址。 例如, 1 KB内存空间, 在物理内 存编址可能有 2段, 一段是 0x 0- 0x2 00 , 另一段是 0x400- 0x6 00 , 那么描述信 息应当是 2组描述即 0x 0- 0x 200和 0x4 00- 0x6 00。

操作系统与 BMC的通信通道可选择 KCS或单块传输方式 ( One-B l ock Trans f e r , BT ); 在监控流程中, OS信息上报模块向 BMC发送信息, 以及 BMC 向操作系统反馈信息和迁移指令等, 均通过 KCS或 BT方式发送。

BMC接收到监控信息之后, 利用其转换模块将该监控信息转换为 NC芯片 中特定寄存器的值,并通过寄存器读写模块将 这些信息写入 NC芯片的监控目 标寄存器, 由 NC芯片进行监控。

NC芯片会根据这些寄存器信息, 通过其网络子系统的监控模块, 对被监 控内存上运行的进程对其他节点上的内存进行 访问的频度, 进行监控。 当该 频度超过阔值时, 启动反馈模块告警, 并将被监控 CPU的 CPU号和被监控内 存的信息发送给 BMC , 由 BMC转发给操作系统。

其中, 在 NC芯片中需要增加阔值寄存器, 用于存放阔值; 增加监控寄存 器组, 用于存放与 OS信息上报模块对应的被监控的 CPU号和节点号, 以及利 用内存区段寄存器存放被监控内存的内存区段 信息, 还可以包括目标内存访 问计数器, 用于统计进程进行远端内存访问的次数; 增加告警寄存器, 用于 指示是否需要进行迁移; 增加反馈寄存器, 用于提供给 BMC需要进行迁移的 进程对应的 CPU号、 节点号和内存区段信息, 其指示的内容信息与监控寄存 器内容对应。

另外, 操作系统通过 BMC可以对阔值寄存器中所存放的阔值进行设置 。 NC芯片可以定期地对目标内存访问计数器与阔 寄存器中的数值进行比对, 以判断进程进行远端内存访问的次数是否超过 阔值。 该定期的时间长短可以 根据需要进行设置, 例如 60秒或 1 2 0秒等, 但是可选的数值并不仅限于此。

BMC通过定时对 NC芯片的寄存器中的数值进行读取, 若判断出告警寄存 器被设置, 则读取反馈寄存器中的数值, 并通过转换模块将寄存器的数值转 换成对应的 CPU号和内存区段信息, 并结合需要迁移的指令, 发送给操作系 统。 BMC读取告警寄存器的时间间隔可以根据需要进 行设定,例如 6 0秒或 1 2 0 秒等, 但是可选的数值并不仅限于此。 操作系统在接收到迁移指令之后 ,根据接收到的 CPU号和内存区段信息 , 判断出需要对哪个进程进行迁移, 并通过进程迁移模块实现进程的迁移。

进一步地, 所述操作系统若判断出所述被访问节点中被访 问内存所属的

CPU , 其内存资源具有运行所述目标进程的能力, 则将所述目标进程迁移至所 述被访问内存所属的 CPU; 若判断出所述被访问内存所属的 CPU , 其内存资源 不具有运行所述目标进程的能力, 且所述被访问节点中的其他 CPU的内存资 源具有运行所述目标进程的能力, 则将所述目标进程迁移至所述被访问节点 的其他 CPU。

具体的, 在实际应用中, 操作系统在接收到迁移指令之后, 还可以进一 步地判断目的节点, 即被访问节点, 是否具有足够的内存资源可分配给该目 标进程。

若目的节点中被访问内存中的剩余内存资源足 够用于分配给该目标进 程, 即具有运行所述目标进程的能力, 则操作系统可将目标进程迁移至该目 的节点的该部分内存中。

若目的节点中被访问内存中的剩余内存资源不 足够用于分配给该目标进 程, 即不具有运行所述目标进程的能力, 则可以暂时不进行迁移。 也可以继 续定时对该部分内存进行检测, 当剩余内存资源足够时, 操作系统可将目标 进程迁移至该目的节点的该部分内存中。

操作系统也可以判断目的节点中其他 CPU的内存中的剩余内存资源, 是 否足够用于分配给该目标进程, 如果是, 则可以暂时将目标进程迁移至该部 分内存, 并继续定时对被访问内存进行检测, 当被访问内存中的剩余内存资 源足够用于分配给该目标进程时, 将目标进程迁移至该被访问内存中。

本发明各实施例提供的内存访问方法、 装置及系统, 通过进程迁移, 可 以将迁移目的节点的 CPU、 内存资源充分利用起来, 提高了资源的利用率; 同时由于进程迁移, 节点中的进程若被迁出, 且有进程被迁出的 CPU无其他 需要运行的进程, 则可以降低该节点的能耗, 实现节能。

本领域普通技术人员可以理解: 实现上述各方法实施例的全部或部分步 骤可以通过程序指令相关的硬件来完成。 前述的程序可以存储于一计算机可 读取存储介质中。 该程序在执行时, 执行包括上述各方法实施例的步骤; 而 前述的存储介质包括: R0M、 RAM, 磁碟或者光盘等各种可以存储程序代码的 介质。

最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的 说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施 例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替 换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例 技术方案的范围。