Oracle調(diào)優(yōu),NUMA架構(gòu)與Intel Nehalem CPU
Fenng前日去了Oracle Open World大會(huì),回來(lái)后在博客上分享了他對(duì)于Oracle調(diào)優(yōu)的一些心得總結(jié)。
在這次的 Oracle Open World 上,Hammerora 的作者 Steve Shaw 做了一個(gè)關(guān)于 Linux 平臺(tái) Oracle調(diào)優(yōu)的演講,其中重點(diǎn)提到了 NUMA架構(gòu)對(duì)于 Intel Nehalem CPU 上跑 Oracle 的性能影響。
對(duì)于傳統(tǒng) SMP 來(lái)說(shuō),CPU 增多未必系統(tǒng)性能就好,因?yàn)楣蚕硐到y(tǒng)總線(xiàn)的限制了 CPU 數(shù)量,CPU 越多內(nèi)部通信量越大共享總線(xiàn)越容易達(dá)到瓶頸。而 NUMA架構(gòu)則多少緩解了這個(gè)擴(kuò)展問(wèn)題,其大致機(jī)理是通過(guò)給每個(gè)核提供單獨(dú)的本地內(nèi)存,進(jìn)而提高可擴(kuò)展性。而每個(gè)核訪(fǎng)問(wèn)本地內(nèi)存和其它核上的內(nèi)存時(shí)間是不一樣的,所以,應(yīng)用程度對(duì)于內(nèi)存的訪(fǎng)問(wèn)是有比較大的講究的。從硬件到操作系統(tǒng)再到應(yīng)用程序,都要支持 NUMA 才會(huì)發(fā)揮真正的處理能力。
在這里倒是可以插入介紹一下阿姆達(dá)爾定律(),這個(gè)定律指出并行處理器環(huán)境中的速度受制于程序串行的部分,也即暗示說(shuō)多核未必性能就那么好。
對(duì)一個(gè) DBA 來(lái)說(shuō),Intel 的 Nehalem CPU (右圖為結(jié)構(gòu)示意圖)最值得關(guān)注的特性當(dāng)屬 NUMA (Non-Uniform Memory Access) 架構(gòu)方面的改進(jìn)。
從 Oracle 數(shù)據(jù)庫(kù) 8i 開(kāi)始支持 NUMA 特性,NUMA 在10.2.0.4 與 11.1 上是默認(rèn)啟用的,不過(guò)在之前的版本以及 11.2 之后默認(rèn)是關(guān)閉該特性的。在 Intel 平臺(tái)上,Oracle Validated RPM 包安裝后將激活 NUMA。安裝的時(shí)候,當(dāng) Oracle 檢測(cè)到硬件與操作系統(tǒng)支持 NUMA 的時(shí)候,會(huì)自動(dòng)啟用 NUMA 支持,Linux 在內(nèi)核 2.6.9-67 以后自動(dòng)支持 NUMA 。至于硬件上的開(kāi)關(guān)是通過(guò) BIOS ,如果硬件支持,則 BIOS 默認(rèn)是激活(enable)該特性的。操作系統(tǒng)層面的開(kāi)啟可以通過(guò)核心參數(shù)添加 numa=off 的方式來(lái)達(dá)到。
可以通過(guò)操作系統(tǒng)命令查看相關(guān)的狀態(tài):
# numactl --show
NUMA 這個(gè)常看到的術(shù)語(yǔ),似乎一直以來(lái)沒(méi)有得到 DBA 們足夠的重視。需要注意的是,硬件、操作系統(tǒng)、應(yīng)用軟件(Oracle) 三者都要支持 NUMA ,才能充分利用這一特性。對(duì)于支持 NUMA 的 DB 環(huán)境,理論上來(lái)說(shuō)內(nèi)存請(qǐng)求的利用應(yīng)該會(huì)更有效一些。至于具體的性能數(shù)據(jù)還要看實(shí)測(cè)結(jié)果,暫時(shí)恐怕難以給出,留待以后補(bǔ)充吧。必須要說(shuō)的是,作為DBA,在啟用某個(gè)特性的時(shí)候,一定要明白這個(gè)特性的來(lái)龍去脈,以及潛在的影響。
--EOF--
對(duì)于一些不能充分利用多核的軟件,比如某些 Web 服務(wù)器或者 Proxy,或者需要考慮一下如何利用 NUMA 特性了。
原文標(biāo)題:NUMA 架構(gòu)與數(shù)據(jù)庫(kù)性能
【編輯推薦】