Oracle调优,NUMA 架构和数据库的性能


  本文标签:Oracle调优

  我们大家都知道传统的 SMP 来讲,CPU的 增多不一定系统性能就会好,主要原因涉是因为共享系统的总线限制了 CPU 数量,CPU 越多内部通信量越大共享总线越容易达到瓶颈  。而NUMA架构则多少解决了这个问题,从而也是Oracle调优需要利用的特性  。

  Oracle调优,NUMA架构与Intel Nehalem CPU

  Fenng前日去了Oracle Open World大会,回来后在博客上分享了他对于Oracle调优的一些心得总结  。

  在这次的 Oracle Open World 上,Hammerora 的作者 Steve Shaw 做了一个关于 Linux 平台 Oracle调优的演讲,其中重点提到了 NUMA架构对于 Intel Nehalem CPU 上跑 Oracle 的性能影响  。

  对于传统 SMP 来说,CPU 增多未必系统性能就好,因为共享系统总线的限制了 CPU 数量,CPU 越多内部通信量越大共享总线越容易达到瓶颈  。而 NUMA架构则多少缓解了这个扩展问题,其大致机理是通过给每个核提供单独的本地内存,进而提高可扩展性  。

  而每个核访问本地内存和其它核上的内存时间是不一样的,所以,应用程度对于内存的访问是有比较大的讲究的  。从硬件到操作系统再到应用程序,都要支持 NUMA 才会发挥真正的处理能力  。

  在这里倒是可以插入介绍一下阿姆达尔定律(Amdahls Law),这个定律指出并行处理器环境中的速度受制于程序串行的部分,也即暗示说多核未必性能就那么好  。

对一个 DBA 来说,Intel 的 Nehalem CPU (右图为结构示意图)最值得关注的特性当属 NUMA (Non-Uniform Memory Access) 架构方面的改进  。 从 Oracle 数据库 8i 开始支持 NUMA 特性,NUMA 在10.2.0.4 与 11.1 上是默认启用的,不过在之前的版本以及 11.2 之后默认是关闭该特性的  。

  在 Intel 平台上,Oracle Validated RPM 包安装后将激活 NUMA  。安装的时候,当 Oracle 检测到硬件与操作系统支持 NUMA 的时候,会自动启用 NUMA 支持,Linux 在内核 2.6.9-67 以后自动支持 NUMA   。至于硬件上的开关是通过 BIOS ,如果硬件支持,则 BIOS 默认是激活(enable)该特性的  。操作系统层面的开启可以通过核心参数添加 numa=off 的方式来达到  。

  从 Oracle 数据库 8i 开始支持 NUMA 特性,NUMA 在10.2.0.4 与 11.1 上是默认启用的,不过在之前的版本以及 11.2 之后默认是关闭该特性的  。在 Intel 平台上,Oracle调优中Oracle Validated RPM 包安装后将激活 NUMA  。安装的时候,当 Oracle 检测到硬件与操作系统支持 NUMA 的时候,会自动启用 NUMA 支持,Linux 在内核 2.6.9-67 以后自动支持 NUMA   。

  至于硬件上的开关是通过 BIOS ,如果硬件支持,则 BIOS 默认是激活(enable)该特性的  。操作系统层面的开启可以通过核心参数添加 numa=off 的方式来达到  。