Oracle調(diào)優(yōu),NUMA 架構(gòu)和數(shù)據(jù)庫的性能
我們大家都知道傳統(tǒng)的 SMP 來講,CPU的 增多不一定系統(tǒng)性能就會好,主要原因涉是因為共享系統(tǒng)的總線限制了 CPU 數(shù)量,CPU 越多內(nèi)部通信量越大共享總線越容易達(dá)到瓶頸。而NUMA架構(gòu)則多少解決了這個問題,從而也是Oracle調(diào)優(yōu)需要利用的特性。
Oracle調(diào)優(yōu),NUMA架構(gòu)與Intel Nehalem CPU
Fenng前日去了Oracle Open World大會,回來后在博客上分享了他對于Oracle調(diào)優(yōu)的一些心得總結(jié)。
在這次的 Oracle Open World 上,Hammerora 的作者 Steve Shaw 做了一個關(guān)于 Linux 平臺 Oracle調(diào)優(yōu)的演講,其中重點提到了 NUMA架構(gòu)對于 Intel Nehalem CPU 上跑 Oracle 的性能影響。
對于傳統(tǒng) SMP 來說,CPU 增多未必系統(tǒng)性能就好,因為共享系統(tǒng)總線的限制了 CPU 數(shù)量,CPU 越多內(nèi)部通信量越大共享總線越容易達(dá)到瓶頸。而 NUMA架構(gòu)則多少緩解了這個擴展問題,其大致機理是通過給每個核提供單獨的本地內(nèi)存,進而提高可擴展性。
而每個核訪問本地內(nèi)存和其它核上的內(nèi)存時間是不一樣的,所以,應(yīng)用程度對于內(nèi)存的訪問是有比較大的講究的。從硬件到操作系統(tǒng)再到應(yīng)用程序,都要支持 NUMA 才會發(fā)揮真正的處理能力。
在這里倒是可以插入介紹一下阿姆達(dá)爾定律(Amdahl's Law),這個定律指出并行處理器環(huán)境中的速度受制于程序串行的部分,也即暗示說多核未必性能就那么好。
對一個 DBA 來說,Intel 的 Nehalem CPU (右圖為結(jié)構(gòu)示意圖)最值得關(guān)注的特性當(dāng)屬 NUMA (Non-Uniform Memory Access) 架構(gòu)方面的改進。 從 Oracle 數(shù)據(jù)庫 8i 開始支持 NUMA 特性,NUMA 在10.2.0.4 與 11.1 上是默認(rèn)啟用的,不過在之前的版本以及 11.2 之后默認(rèn)是關(guān)閉該特性的。
在 Intel 平臺上,Oracle Validated RPM 包安裝后將激活 NUMA。安裝的時候,當(dāng) Oracle 檢測到硬件與操作系統(tǒng)支持 NUMA 的時候,會自動啟用 NUMA 支持,Linux 在內(nèi)核 2.6.9-67 以后自動支持 NUMA 。至于硬件上的開關(guān)是通過 BIOS ,如果硬件支持,則 BIOS 默認(rèn)是激活(enable)該特性的。操作系統(tǒng)層面的開啟可以通過核心參數(shù)添加 numa=off 的方式來達(dá)到。
從 Oracle 數(shù)據(jù)庫 8i 開始支持 NUMA 特性,NUMA 在10.2.0.4 與 11.1 上是默認(rèn)啟用的,不過在之前的版本以及 11.2 之后默認(rèn)是關(guān)閉該特性的。在 Intel 平臺上,Oracle調(diào)優(yōu)中Oracle Validated RPM 包安裝后將激活 NUMA。安裝的時候,當(dāng) Oracle 檢測到硬件與操作系統(tǒng)支持 NUMA 的時候,會自動啟用 NUMA 支持,Linux 在內(nèi)核 2.6.9-67 以后自動支持 NUMA 。
至于硬件上的開關(guān)是通過 BIOS ,如果硬件支持,則 BIOS 默認(rèn)是激活(enable)該特性的。操作系統(tǒng)層面的開啟可以通過核心參數(shù)添加 numa=off 的方式來達(dá)到。
【編輯推薦】