CN201510012679.0
2015.01.09
CN104536764A
2015.04.22
撤回
无权
发明专利申请公布后的视为撤回IPC(主分类):G06F 9/44申请公布日:20150422|||实质审查的生效IPC(主分类):G06F 9/44申请日:20150109|||公开
G06F9/44; G06F9/50
G06F9/44
浪潮(北京)电子信息产业有限公司
范冬冬
100085北京市海淀区上地信息路2号2-1号C栋1层
北京安信方达知识产权代理有限公司11262
王康; 李丹
本发明提供了一种程序运行方法和装置。涉及计算机应用领域;解决了CPU性能受限的问题。该方法包括:在内核启动应用程序之前,根据内核代码段的起始和结束地址计算内核代码段的大小;在每个节点上分配内存空间,将所述内核代码复制至各个节点的内存空间;在全部节点上运行所述内核代码。本发明提供的技术方案适用于多CPU系统,实现了各节点需要的内核代码在本地存储调用。
权利要求书1. 一种程序运行方法,其特征在于,包括: 在内核启动应用程序之前,根据内核代码段的起始和结束地址计算内核 代码段的大小; 在每个节点上分配内存空间,将所述内核代码复制至各个节点的内存空 间; 在全部节点上运行所述内核代码。 2. 根据权利要求1所述的程序运行方法,其特征在于,在各个节点上为 所述内核代码分配相同大小的内存空间。 3. 根据权利要求1所述的程序运行方法,其特征在于,该方法还包括: 创建一个系统页映射表数组,统一以节点号为索引存放每个节点中存储 所述内核代码的内存空间位置,具体为物理页的映射页表项。 4. 根据权利要求3所述的程序运行方法,其特征在于,该方法还包括: 在系统进程进行切换时,判断当前的进程保存的内核代码段节点号是否 是当前物理节点; 在当前的进程保存的内核代码节点号不是当前物理节点时,以当前节点 号作为索引,取出初始化阶段此节点的内核代码段在映射表数组中储存的映 射页表项,替换系统页表映射表数组中对应的映射页表项,最后将当前节点 号存入进程结构体相应成员中。 5. 一种程序运行装置,其特征在于,包括: 空间估计模块,用于在内核启动应用程序之前,根据内核代码段的起始 和结束地址计算内核代码段的大小; 代码复制模块,用于在每个节点上分配内存空间,将所述内核代码复制 至各个节点的内存空间; 代码运行模块,用于在全部节点上运行所述内核代码。 6. 根据权利要求5所述的程序运行装置,其特征在于,该装置还包括: 记录模块,用于创建一个系统页映射表数组,统一以节点号为索引存放 每个节点中存储所述内核代码的内存空间位置,具体为物理页的映射页表项。 7. 根据权利要求6所述的程序运行装置,其特征在于,该装置还包括: 节点检查模块,用于在系统进程进行切换时,判断当前的进程保存的内 核代码段节点号是否是当前物理节点; 节点更新模块,用于在当前的进程保存的内核代码节点号不是当前物理 节点时,以当前节点号作为索引,取出初始化阶段此节点的内核代码段在映 射表数组中储存的映射页表项,替换系统页表映射表数组中对应的映射页表 项,最后将当前节点号存入进程结构体相应成员中。
说明书程序运行方法和装置 技术领域 本发明涉及计算机应用领域,尤其涉及一种程序运行方法和装置。 背景技术 NUMA服务器的基本特征是具有多个CPU模块,每个CPU模块由多 个CPU(如4个)组成,并且具有独立的本地内存、I/O槽口等。由于其 节点(CPU模块?)之间可以通过互联模块进行连接和信息交互,因此每个 CPU可以访问整个系统的内存。显然,访问本地内存的速度将远远高于访问 远地内存(系统内其它节点的内存)的速度,这也是非一致存储访问 NUMA的由来。由于访问远地内存的延时远远超过本地内存,因此当CPU 数量增加时,系统性能无法线性增加。 发明内容 本发明提供了一种程序运行方法和装置,解决了CPU性能受限的问题。 一种程序运行方法,包括: 在内核启动应用程序之前,根据内核代码段的起始和结束地址计算内核 代码段的大小; 在每个节点上分配内存空间,将所述内核代码复制至各个节点的内存空 间; 在全部节点上运行所述内核代码。 优选的,在各个节点上为所述内核代码分配相同大小的内存空间。 优选的,该方法还包括: 创建一个系统页映射表数组,统一以节点号为索引存放每个节点中存储 所述内核代码的内存空间位置,具体为物理页的映射页表项。 优选的,该方法还包括: 在系统进程进行切换时,判断当前的进程保存的内核代码段节点号是否 是当前物理节点; 在当前的进程保存的内核代码节点号不是当前物理节点时,以当前节点 号作为索引,取出初始化阶段此节点的内核代码段在映射表数组中储存的映 射页表项,替换系统页表映射表数组中对应的映射页表项,最后将当前节点 号存入进程结构体相应成员中。 本发明还提供了一种程序运行装置,包括: 空间估计模块,用于在内核启动应用程序之前,根据内核代码段的起始 和结束地址计算内核代码段的大小; 代码复制模块,用于在每个节点上分配内存空间,将所述内核代码复制 至各个节点的内存空间; 代码运行模块,用于在全部节点上运行所述内核代码。 优选的,该装置还包括: 记录模块,用于创建一个系统页映射表数组,统一以节点号为索引存放 每个节点中存储所述内核代码的内存空间位置,具体为物理页的映射页表项。 优选的,该装置还包括: 节点检查模块,用于在系统进程进行切换时,判断当前的进程保存的内 核代码段节点号是否是当前物理节点; 节点更新模块,用于在当前的进程保存的内核代码节点号不是当前物理 节点时,以当前节点号作为索引,取出初始化阶段此节点的内核代码段在映 射表数组中储存的映射页表项,替换系统页表映射表数组中对应的映射页表 项,最后将当前节点号存入进程结构体相应成员中。 本发明提供了一种程序运行方法和装置,在内核启动应用程序之前,根 据内核代码段的起始和结束地址计算内核代码段的大小,在每个节点上分配 内存空间,将所述内核代码复制至各个节点的内存空间,在全部节点上运行 所述内核代码。实现了各节点需要的内核代码在本地存储调用,解决了CPU 性能受限的问题。 附图说明 图1为本发明的实施例一提供的一种程序运行方法的流程图; 图2为本发明的实施例二提供的一种程序运行装置的结构示意图。 具体实施方式 下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在 不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。 本发明的实施例提供了一种程序运行方法和装置,考虑到NUMA系统 访问本地节点内存的速度要高于远地节点的内存特点,实现内核代码段多节 点的备份,创建多节点内核代码段物理页映射表,并通过实时更新当前节点 对应的系统页表,保证程序运行在内核空间时使用的是本地节点内存上的内 核代码。 首先结合附图,对本发明的实施例一进行说明。 本发明实施例提供了一种程序运行方法,第一个阶段是多节点内核代码 段初始化,第二个阶段是内核代码段系统页(系统默认的内核代码段映射页) 更新阶段。使用该方法完成各节点运行本地内核代码的流程如图1所示,包 括: 步骤101、在内核启动应用程序之前,根据内核代码段的起始和结束地 址计算内核代码段的大小; 在内核启动应用程序之前,根据内核代码段的起始和结束地址计算内核 代码段的大小。 步骤102、在每个节点上分配内存空间,将所述内核代码复制至各个节 点的内存空间; 在每个节点上分配相同大小的内存空间,复制内核代码段到各个节点中 对应的内存空间内。 创建一个系统页映射表数组,统一以节点号为索引存放每个节点内核代 码段物理页的映射页表项(映射页表项记录了虚拟地址到物理页的映射关 系)。在系统内存中分配的一段连续的存储空间存储该系统页映射表。 步骤103、在全部节点上运行所述内核代码; 在这之后,内核就启动了,在所有的CPU上运行内核代码。 在系统进程进行切换时(一个或多个CPU),首先判断当前的进程保存 的内核代码段节点号(节点号就是CPU的编号,表明内核代码段在哪个节点 上运行)是否是当前物理节点(即运行当前的进程的节点)。如果是,则说 明进程还在原来的节点上运行,不做任何操作;如果不是,则以当前节点号 作为索引,取出初始化阶段此节点的内核代码段在映射表数组中储存的映射 页表项,替换系统页表中对应的页表项,最后将当前节点号存入进程结构体 相应成员中。 在x86双节点平台上,使用linux系统作为测试系统,按照上述步骤修 改linux内核代码实现内核代码段复制的功能,并将修改过的内核代码安装 在此系统上。 使用linux系统性能测试工具UNIXBENCH分别在普通的linux系统和添 加内核代码段复制功能的linux系统上进行测试,并分别记录测试结果。通 过对比测试结果发现,添加内核代码段复制功能的系统性能总体提高5%左 右。默认系统中进程运行时使用的内核代码段在当前节点上,需要跨节点访 问,访问延迟时间较长,而使用的内核代码段功能的系统在进程时使用的是 本地节点的内核代码段,时间延迟少,性能也会有所提高。 下面结合附图,对本发明的实施例二进行说明。 本发明实施例提供了一种程序运行装置,其结构如图2所示,包括: 空间估计模块201,用于在内核启动应用程序之前,根据内核代码段的 起始和结束地址计算内核代码段的大小; 代码复制模块202,用于在每个节点上分配内存空间,将所述内核代码 复制至各个节点的内存空间; 代码运行模块203,用于在全部节点上运行所述内核代码。 优选的,该装置还包括: 记录模块204,用于创建一个系统页映射表数组,统一以节点号为索引 存放每个节点中存储所述内核代码的内存空间位置,具体为物理页的映射页 表项。 优选的,该装置还包括: 节点检查模块205,用于在系统进程进行切换时,判断当前的进程保存 的内核代码段节点号是否是当前物理节点; 节点更新模块206,用于在当前的进程保存的内核代码节点号不是当前 物理节点时,以当前节点号作为索引,取出初始化阶段此节点的内核代码段 在映射表数组中储存的映射页表项,替换系统页表映射表数组中对应的映射 页表项,最后将当前节点号存入进程结构体相应成员中。 本发明的实施例提供了一种程序运行方法和装置,在内核启动应用程序 之前,根据内核代码段的起始和结束地址计算内核代码段的大小,在每个节 点上分配内存空间,将所述内核代码复制至各个节点的内存空间,在全部节 点上运行所述内核代码。实现了各节点需要的内核代码在本地存储调用,解 决了CPU性能受限的问题。 系统运行时使用的是本地节点的内核代码,从而规避了访问远程节点速 度慢的弊端,对提高系统性能起到积极的作用。 本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计 算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中, 所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行, 在执行时,包括方法实施例的步骤之一或其组合。 可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这 些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或 步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬 件和软件结合。 上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来 实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组 成的网络上。 上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现 并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。 上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想 到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范 围应以权利要求所述的保护范围为准。
《程序运行方法和装置.pdf》由会员分享,可在线阅读,更多相关《程序运行方法和装置.pdf(7页珍藏版)》请在专利查询网上搜索。
本发明提供了一种程序运行方法和装置。涉及计算机应用领域;解决了CPU性能受限的问题。该方法包括:在内核启动应用程序之前,根据内核代码段的起始和结束地址计算内核代码段的大小;在每个节点上分配内存空间,将所述内核代码复制至各个节点的内存空间;在全部节点上运行所述内核代码。本发明提供的技术方案适用于多CPU系统,实现了各节点需要的内核代码在本地存储调用。。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1