一种实现可配置共享库多副本的方法技术

技术编号:7172912 阅读:256 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种实现可配置共享库多副本的方法,该方法是针对在NUMA体系结构中CPU访问远地内存比访问本地内存的耗时长的缺点,在多个CPU的本地内存中建立共享库的多个副本。进程访问被配置成需要本地化的共享库时,将直接访问本地内存中的共享库,从而提高了访问内存的效率,达到提升系统整体性能的目的。

【技术实现步骤摘要】

本专利技术涉及计算机操作系统软件应用
,具体涉及一种在NUMA体系结构计算机上,实现可配置的共享库多副本的方法。
技术介绍
目前对于多处理器计算机系统的设计而言,通常有以下三种体系结构可以采用 对称多处理器SMP模式,大规模并行处理器MPP模式和非一致存储器访问NUMA模式。SMP模式将多个处理器与一个集中的存储器相连。在SMP模式下,所有处理器都可以访问同一个系统物理存储器。SMP系统有时也被称为一致存储访问(UMA)结构体系。SMP 系统中各处理器访存时间基本相同。SMP体系结构所图1所示。MPP模式则是一种分布式存储器模式,能够将更多的处理器纳入一个系统的存储器。一个分布式存储器模式具有多个节点,每个节点都有自己的存储器,可以配置为SMP模式,也可以配置为非SMP模式。单个的节点相互连接起来形成一个总系统。与单一 SMP模式相比,在SMP模式中,数据一致性由硬件管理,这样做比较容易实现,但成本较高;在MPP 模式中,节点之间的一致性由软件管理,因此,它的速度相对较慢,但成本却低得多。MMP体系结构如图2所示。NUMA模式也采用了分布式存储器模式,不同的是所有节点中的处理器都可以访问全部的系统物理存储器。NUMA既保持了 SMP模式单一操作系统副本,简便的应用程序编程模型以及易于管理的特点,又继承了 MPP模式的可扩充性,可以有效地扩充系统的规模。因此,面向事务处理的大型计算机系统多采用NUMA模式。NUMA体系结构如图3所示。在NUMA模式中,我们定义CPU直接连接的物理内存为“本地内存”,其他的物理内存为“远地内存”。在NUMA结构中,CPU访问远地内存比访问本地内存的耗时长。因此,应该尽量减少对远地节点的访问。通过对一些资源本地化,能有效的减少对远地内存的访问。 进程对于共享库访问非常频繁的,将一些只读共享库分布到各个节点中,能够加快系统的响应速度。如附图6所示,以只有两个CPU的NUMA结构为例,说明了传统情况下,分别在两个 CPU上运行的进程,其进程地址空间映射共享库a和b,与机器物理内存之间的映射关系。两个进程映射了同一片物理内存中的共享库a和共享b。
技术实现思路
本专利技术的目的是提供。本专利技术的目的是按以下方式实现的,本专利技术针对传统NUMA系统下的操作系统无法兼顾CPU并行度和访存效率的缺点,设计了在多个CPU的本地内存中,建立一些只读共享库的多个副本的方式,简单的讲就是共享库的本地化;可配置的共享库本地化包括以下内容当进程访问需要本地化的共享库时,如果本地内存中有该共享库的副本,则访问位于本地内存的共享库;如果没有,则在本地节点上建立该共享库的副本。进程直接访问本地内存中的共享库,从而提高了访问内存的效率,达到提升系统整体性能的目的。为了实现以上目的,本专利技术设计的可配置的共享库多副本的方法包含以下步骤(1)程序在运行时,通过动态链接器把程序所依赖的共享库文件加载到内存中。动态链接器根据共享库是否被配置成本地化,调用不同的文件映射函数(mmap系统调用)。如果需要本地化,文件映射函数将在操作系统中注册需要本地化的共享库文件缺页处理函数,如图4(2)当程序在访问共享库发生缺页且共享库被配置成需要本地化时,操作系统跳转到需要本地化的共享库文件缺页处理程序处执行。(3)需要本地化的共享库的缺页处理程序执行步骤如下,如附图5所示a.首先查看当前内存中是否存在该共享库文件。如果不存在,则从磁盘中读入该文件到本地内存,然后执行步骤C。b.查看本地内存中是否与该共享库文件。如果不存在,则在本地内存中建立该共享库的副本。c.修改进程的页表,使其指向本地内存中的共享库。本专利技术的有益效果是在NUMA体系结构的多CPU计算机中,避免对某些需要频繁访问的只读共享库的远地内存访问所带来的访存损失,有效提高了系统总体处理性能。附图说明图1为SMP体系结构示意图; 图2为MMP体系结构示意图3为NUMA体系结构示意图4为动态链接器注册需要本地化的共享文件缺页处理函数示意图; 图5为本方法专利技术的共享文件缺页处理流程示意图; 图6为传统的针对NUMA体系结构下进程地址空间的映射共享库的方法; 图7为本方法专利技术的针对NUMA体系结构下进程地址空间的映射共享库的方法。具体实施例方式参照说明书附图对本专利技术的方法作以下详细地说明。具体步骤如下1)首先把共享库a和共享库b配置成需要本地化;2)进程1执行程序1,进程1运行在CPUl上。程序1依赖共享库a和b。进程1执行时,通过动态链接器在操作系统中注册需要本地化的共享库文件缺页处理程序;3)进程1访问共享库a和b时发生缺页,操作系统跳转到需要本地化的共享库文件缺页处理程序处执行。假设当前内存中不存在共享库a和b,因此需要本地化的共享库文件缺页处理程序从磁盘中读取共享库文件a和b到CPUl的本地内存,并修改进程1的页表,使其指向CPUl的本地内存中的共享库。4)进程2执行程序2,进程2运行CPU2上。程序2依赖共享库a和共享库b。进程2执行时,通过动态链接器在操作系统中注册需要本地化的共享库文件缺页处理程序.5)进程2访问共享库a和b时发生缺页,操作系统跳转到需要本地化的共享库文件缺页处理程序处执行。此时内存中已经存在共享库a和b,因此需要本地化的共享库文件缺页处理程序将在CPU2的本地内存中的建立共享库a和b的副本,并修改进程2的页表,使其指向CPU2的本地内存中的共享库。如附图7所示。针对超过两个CPU的NUMA体系的计算机,可以参照以上步骤进行扩展。实际上,真实的NUMA体系计算机可能采用多个CPU为一组,CPU组内采用类似SMP的方式共享物理内存的结构构成。此时,并不需要为所有的CPU都建立本地共享库的副本,只需要为一个CPU 组建了一个共享库副本即可。以上所述的实例对本专利技术的实现方式作了详细的说明,但是本专利技术的具体实现形式并不局限于此,对于本
的一般技术人员来说,在不背离本专利技术所述方法的精神和权利要求范围的情况下对它进行各种显而易见的改变都在本专利技术的保护范围之内。除说明书所述的技术特征外,均为本专业技术人员的已知技术。权利要求1. 1、一种实现可配置的共享库多副本的方法,其特征在于在多个CPU的本地内存中建立共享库的多个副本,即共享库的局部化;进程访问被配置成需要本地化的共享库时,将直接访问本地内存中的共享库,从而提高了访问内存的效率,达到提升系统整体性能的目的;可配置的共享库多副本的方法包含以下步骤(1)程序在运行时,通过动态链接器把程序所依赖的共享库文件加载到内存中,动态链接器根据共享库是否被配置成本地化,调用不同的文件映射函数;如果需要本地化,文件映射函数将在操作系统中注册需要本地化的共享库文件缺页处理函数;(2)当程序在访问共享库发生缺页且共享库被配置成需要本地化时,操作系统跳转到需要本地化的共享库文件缺页处理程序处执行;(3)需要本地化的共享库的缺页处理程序执行步骤如下;a.首先查看当前内存中是否存在该共享库文件,如果不存在,则从磁盘中读入该文件到本地内存,然后执行步骤C;b.查看本地内存中是否与该共享库文件,如果不存在,则在本地内存中建立该共享库的副本;c.修改进程的页表,使其指向本地内存中的共享库。全文摘要本专利技术提供,该方法是针对在NUM本文档来自技高网
...

【技术保护点】
1.一种实现可配置的共享库多副本的方法,其特征在于:在多个CPU的本地内存中建立共享库的多个副本,即共享库的局部化;进程访问被配置成需要本地化的共享库时,将直接访问本地内存中的共享库,从而提高了访问内存的效率,达到提升系统整体性能的目的;可配置的共享库多副本的方法包含以下步骤:(1)程序在运行时,通过动态链接器把程序所依赖的共享库文件加载到内存中,动态链接器根据共享库是否被配置成本地化,调用不同的文件映射函数;如果需要本地化,文件映射函数将在操作系统中注册需要本地化的共享库文件缺页处理函数;(2)当程序在访问共享库发生缺页且共享库被配置成需要本地化时,操作系统跳转到需要本地化的共享库文件缺页处理程序处执行;(3)需要本地化的共享库的缺页处理程序执行步骤如下;a.首先查看当前内存中是否存在该共享库文件,如果不存在,则从磁盘中读入该文件到本地内存,然后执行步骤c;b.查看本地内存中是否与该共享库文件,如果不存在,则在本地内存中建立该共享库的副本;c.修改进程的页表,使其指向本地内存中的共享库。

【技术特征摘要】

【专利技术属性】
技术研发人员:何志平张东吴楠
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:88

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1