一种实现操作系统核心代码段多副本运行的方法技术方案

技术编号:3773699 阅读:458 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种操作系统代码段多副本运行的方法,该方法是针对传统NUMA系统下的操作系统无法兼顾CPU并行度和访存效率的缺点,在多个CPU的本地内存中,建立核心代码段的多个副本使核心代码段局部化;当系统需要陷入核心态时,可以选择当前进程所运行的CPU,或者发生中断的硬件亲近的CPU运行核心代码;CPU在运行核心的过程中,可以直接访问本地内存中的核心代码段数据,从而提高了访问内存的效率,达到提升系统整体性能的目的。

【技术实现步骤摘要】

本专利技术涉及计算机操作系统软件
,具体涉及一种在NUMA体系结构计 算机上,实现操作系统核心代码段多副本运行的方法。 技术背景目前对于多处理器计算机系统的设计而言,通常有以下三种体系结构可以采 用对称多处理器SMP模式、大规模并行处理器MPP模式和非一致存储器访问NUMA 模式。SMP模式将多个处理器与一个集中的存储器相连。在SMP模式下,所有处理器 都可以访问同一个系统物理存储器。SMP系统通常只运行操作系统的一个副本。因 此SMP系统有时也被称为一致存储器访问(UMA)结构体系, 一致性意指无论在什 么时候,处理器只能为内存的每个数据保持或共享唯一一个数值。SMP的缺点是可 伸縮性有限,因为在存储器接口达到饱和的时候,增加处理器并不能获得更高的 性能。SMP体系结构如附图1所示。MPP模式则是一种分布式存储器模式,能够将更多的处理器纳入一个系统的存 储器。 一个分布式存储器模式具有多个节点,每个节点都有自己的存储器,可以 配置为SMP模式,也可以配置为非SMP模式。单个的节点相互连接起来就形成了 一个总系统。与单一SMP模式相比,在SMP模式中,数据一致性是由硬件专门管 理的,这样做比较容易实现,但成本较高;在MPP模式中,节点之间的一致性是 由软件来管理,因此,它的速度相对较慢,但成本却低得多。醒P体系结构如图2 所示。NUMA模式也采用了分布式存储器模式,不同的是所有节点中的处理器都可以 访问全部的系统物理存储器。每个处理器访问本节点内的存储器所需要的时间, 比访问某些远程节点内的存储器所花的时间要少。即,访问不同存储器的时间是 不一致的,因此这种模式被称为"而MA"(非一致存储器访问)。如附图3所示, 我们定义CPU和直接连接在其上的物理内存之间的关系为"亲近的",与需要经 过其它CPU "间接"访问的物理内存之间的关系是"非亲近的"。相应的,我们定 义CPU直接连接的物理内存为"本地内存",或"局部内存",其他的物理内存 为"全局内存"。NUMA既保持了 SMP模式单一操作系统副本、简便的应用程序编 程模式以及易于管理的特点,又继承了MPP模式的可扩充性,可以有效地扩充系统的规模。因此,面向事务处理的大型计算机系统多来用NUMA模式。在多CPU的计算机系统中,每个CPU都可以进入核心态执行。现在的计算机系 统,包括X86、 IA64、 Power、 SPARC等,都采用中断、异常或者系统调用门的方 式陷入核心。对于SMP架构的多CPU系统中,会按照负载均衡的原则将进程分布 在不同的CPU上;当某个进程出现缺页故障,或者系统调用时,需要从用户态进 入核心态,此时系统会选择该进程当前运行的CPU来执行核心代码;当出现硬件 中断时,系统会按照某种策略选择一个CPU来执行核心中的中断处理过程,譬如 选择当前最空闲的CPU。选择进程当前运行的CPU执行核心代码,而不是固定某个CPU执行核心代码的 优点是 可以减少CPU之间进行切换的开销;*现代的操作系统核心都是支持重复陷入的,即可以并行运行。允许多个CPU 陷入核心,可以有效提高CPU的利用率。NUMA体系的计算机系统略微有所不同。由于在NUMA体系下,CPU访问非亲近 的物理内存,和访问亲近的物理内存的时间是不一致的,而且这种时间延迟往往 是比较大的(通常在几倍)。因此,在NUMA体系计算机上运行的操作系统通常会 将一个进程绑定在某个CPU上,并且尽量保证该进程所用的物理内存与该CPU亲 近。这样可以最大程度避免进程出现跨CPU的物理内存访问,降低访存延迟,提 高系统运行效率。而操作系统核心的情况与用户进程不同。在传统的NUMA计算机 系统中,只运行一个操作系统核心副本。即,操作系统核心的代码段在物理内存 中只存在一个副本,而且这个副本通常只会在某个CPU亲近的物理内存中。这是 与传统的UNIX类操作系统的体系结构设计相关的。如附图4所示,以只有两个CPU的NUMA结构为例,说明了传统情况下,分别 在两个CPU上运行的进程,其用户态地址空间和核心态地址空间,与机器物理内 存之间的映射关系。不同进程的用户态空间(包括代码和数据)被映射到了不同 的物理地址(也有可能是相同的物理地址,譬如共享库、共享内存等。实际上在 NUMA体系下,为了降低访存延迟,共享库等也应尽量局部化),而核心态空间则 被映射到相同的物理地址,譬如,CPU1的亲近物理内存中。当系统发生中断、异常或者系统调用,需要从用户态陷入到核心态的时候,传 统系统有两种方法可以选择方法l:当发生系统调用或缺页异常等,从用户态陷入核心时,选择当前进程 所在的CPU执行核心代码;或者当发生硬件中断时,选择该硬件连接的CPU执行 中断处理例程;方法2:选择核心代码段所在物理内存亲近的CPU作为核心的执行者,如在附 图4的例子中,每次都是选择CPU1执行核心代码。方法1是SMP体系也会采用的方法(不太相同的是,对于硬件中断,所有CPU 都是对等的,选择任何一个都是可以的),优点也是同样的,但是却有一个很大 的缺点就是除了核心代码段所在物理内存亲近的CPU之外,其他CPU访问核心 代码段都是存在延迟的。如附图4所示,CPU2访问核心代码段就比访问本地内存 要慢很多。而一个真实的NUMA系统往往有16个、32个以上,甚至多至几千个CPU, 即绝大部分CPU访问核心代码段都是全局访问,访存延迟是很大的;特别是,当 多数CPU并行进入核心态时,它们对核心代码段的访问,都需要经过CPU1 "中转" 到同样的物理内存地址,CPU1的负载会急剧加大,效率下降也非常明显。虽然我 们通过CPU硬件的"缓冲区"(如安腾II处理器,采用Ll、 L2、 L3三级cache), 减少全局访问物理内存的次数。但是CPU的cache,相对于核心代码段,总是小了 很多,而且不可能完全用于存放核心代码段。采用方法2可以避免CPU访问非亲近的物理内存,减小访存延迟,但是前面提 到的不需要CPU切换、CPU并行运行等优点也就不存在了。对于16个以上CPU的 NUMA系统而言,只有1个CPU运行核心代码所带来的"低效"也是显而易见的。因此,无论是方法l,还是方法2,都无法同时兼顾提高CPU并行度和提高访 存效率这两个目标,从而使系统的整体性能下降。本专利技术针对传统方法的弊端, 釆用在多个CPU的本地内存中建立核心代码的多个副本的方法,既能够实现CPU 的并行运行,减少CPU切换次数,又可以避免CPU对核心代码段的全局访问,提 高系统访存效率,从能有效提升系统的整体性能。1、
技术实现思路
本专利技术针对传统NUMA系统下的操作系统无法兼顾CPU并行度和访存效率的缺 点,设计了在多个CPU的本地内存中,建立核心代码段的多个副本的方法,简单 来讲,就是核心代码段的局部化;当系统需要陷入核心态时,可以选择当前进程 所运行的CPU,或者发生中断的硬件亲近的CPU运行核心代码;CPU在运行核心的 过程中,可以直接访问本地内存中的核心代码段数据,从而提高了访问内存的效 率,达到提升系统整体性能的目的。为了实现以上目的,本专利技术设计的操作系统代码段多副本运行的方法包含以下 步骤1)多CPU的NUMA体系结构的计算机启动时,系统固件(如BIO本文档来自技高网
...

【技术保护点】
一种实现操作系统核心代码段多副本运行的方法,其特征在于:在多个CPU的本地内存中建立核心代码段的多个副本,即核心代码段的局部化;当系统需要陷入核心态时,选择当前进程所运行的CPU或者发生中断的硬件亲近的CPU运行核心代码;CPU在运行核心的过程中,直接访问本地内存中的核心代码段数据,用以提高访问内存的效率,达到提升系统整体性能的目的,代码段多副本运行步骤如下: 1)多CPU的NUMA体系结构的计算机启动时,系统固件BIOS指定系统中的某个CPU以下记为CPUO,将操作系 统核心代码加载到CPUO的本地内存中,并使用该CPUO开始运行核心初始化代码; 2)CPUO在完成操作系统核心初始化后,唤醒其他所有CPU,并在CPUO上启动系统的第一个用户态进程,以下记为进程0,将控制权交给进程0;此时,其他所有C PU进入idele状态; 3)当首次有进程,记为进程n0被调度到某个CPU,记为CPUn上运行时,在CPUn的本地内存中分配一段内存,将核心代码段复制到该段内存中;并为进程n0建立新的核心代码段页表,使其指向CPUn的这段内存中,被映 射到CPUn的本地内存中的还有进程n0的用户态空间; 4)在CPUn的本地内存中分配一段内存,建立中断向量表的副本,其中所有的中端向量地址均指向本地核心代码段副本中的中断处理函数;并修改CPUn的中端向量入口寄存器,使其指向本地中断向 量表副本的物理地址; 5)对于使用系统调用门方法陷入核心的硬件,还需要参照中断向量表的处理方式,建立系统调用入口表的本地副本,并修改CPUn的入口寄存器; 6)当再次有进程,记为进程nm,被调度到CPUn上运行时,只需要修改进程 nm的核心代码段页表,使其指向CPUn中的核心代码段副本。...

【技术特征摘要】

【专利技术属性】
技术研发人员:张东吴楠赵明郭露
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:88[中国|济南]

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

1