Oracle相關NUMA特性淺析

westzq1984發表於2013-11-07
NUMA:Non-Uniform Memory Access or Non-Uniform Memory Architecture

對於傳統SMP架構來說,CPU增多未必系統效能就好,因為共享系統匯流排的限制了CPU數量,CPU 越多內部通訊量越大共享匯流排越容易達到瓶頸。而 NUMA架構則多少緩解了這個擴充套件問題,其大致機理是通過給每個核提供單獨的本地記憶體,進而提高可擴充套件性。而每個核訪問本地記憶體和其它核上的記憶體時間是不一樣的,所以,應用程度對於記憶體的訪問是有比較大的講究的。從硬體到作業系統再到應用程式,都要支援 NUMA 才會發揮真正的處理能力。

Oracle從8i開始支援NUMA特性
如果OS和硬體都支援NUMA,NUMA在10.2.0.4 & 11.1.0.7上將預設啟用,不過在之前的版本以及 11.2 之後預設是關閉該特性的。
需要硬體支援NUMA,另外主流 OS上都是支援的,如AIX,HP-UX,Solaris,Linux,Windows

NUMA可能導致的故障:
    ORA-4031
    ORA-600 with argument KSKRECONFIGNUMA2
    ORA-600 with argument KSBASEND_INTERNAL
    ORA-600 with argument KSMHEAP_ALLOC1
    ORA-27302: FAILURE OCCURRED AT: SSKGXPCRE3
    
在Oracle NUMA Usage Recommendation (Doc ID 759565.1)中查詢BUG列表    
其中,以10204,11107版本遭遇到的BUG最多,因為這兩個版本預設啟用了NUMA
所以推薦在新裝的系統上關閉掉NUMA,但是如果當前已經啟用了NUMA並且執行良好,或者有時間做測試,建議還是啟用NUMA

Disable NUMA on database servers to improve performance of Linux file system utilities (Doc ID 1053332.1)
當啟用NUMA後,將對記憶體分組。
當使用一些OS命令(cp,gzip)普通IO操作一個大的檔案時,該命令會長期佔用一個CPU
同時,其會消耗這個CPU所關聯的記憶體,用作檔案系統快取
最終導致在系統還有空閒記憶體的情況下,發生分頁,影響資料庫效能

11G on HP Creates 6 Shared Memory Segments [ID 601552.1]
共享記憶體分段,各個平臺均可能遭遇到該問題

Sga can't Fit Into A Single Memory Segment and UDP port usage is exploding [ID 747486.1]
HP各平臺,導致記憶體分段以及run out of UDP ports

Bug 8199533 - NUMA enabled by default can cause high CPU / OERI [ID 8199533.8]
導致高CPU消耗,各個平臺均可能遭遇到該問題

Multiple DBWR Not Used Though DB_WRITER_PROCESSES is Set [ID 576888.1]
通過_enable_NUMA_optimization = FALSE關閉NUMA後,可能發生DBWR個數無法指定的問題
需要通過設定環境變數和使用_db_block_numa關閉NUMA
1.setenv DISABLE_NUMA TRUE
2._db_block_numa=1

Oracle Background Processes (Including Parallel Processes) Using Only First 8 CPUs (Half) on 16-CPU Server Under NUMA [ID 760705.1]
啟用NUMA導致ORACLE無法使用所有CPU 10204

關閉NUMA的步驟:
1.安裝PATCH 8199533,該補丁可以滾動安裝。其針對的版本為10203,10204,11107.
2.10205版本,在硬體OS都支援NUMA的環境上,預設也不會啟用NUMA
3.不推薦使用_enable_NUMA_optimization關閉NUMA
4.如果ASM HOME和RDBMS HOME分離,該補丁不需要在ASM HOME上安裝
5.在安裝PATCH 8199533後啟用NUMA:_enable_NUMA_optimization=true
6.啟用後,alert日誌中會顯示 "NUMA PG = 2, CPUs = 48" 其中,PG要大於1才表示ORACLE使用了NUMA特性

11gR2版本如何啟用NUMA:
1._enable_NUMA_support=TRUE
2._enable_NUMA_optimization引數已經被廢棄
3.如果啟用OK,在alert日誌中將看到如下資訊:
  ...NUMA system found and support enabled (8 domains - 6,6,6,6,6,6,6,6)...

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-776009/,如需轉載,請註明出處,否則將追究法律責任。

相關文章