Oracle相關NUMA特性淺析
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)...
對於傳統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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Webpack相關原理淺析Web
- 【Linux】淺析檔案屬性與許可權相關命令Linux
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- Oracle 21c新特性預覽與日常管理相關的幾個新特性Oracle
- 淺析Spring Security 的認證過程及相關過濾器Spring過濾器
- volatile關鍵字淺析
- Oracle相關命令Oracle
- Runnable,Callable,Future關係淺析
- LightDB 23.1相容Oracle新特性支援Oracle
- Oracle資料庫開啟NUMA支援Oracle資料庫
- 淺析oracle b-tree index搜尋原理OracleIndex
- WebView的基本使用及相關特性WebView
- java10 var關鍵字淺析Java
- C語言有關函式淺析C語言函式
- 淺析Oracle(rownum)和Mysql(limit)分頁的區別OracleMySqlMIT
- iOS Block淺淺析iOSBloC
- Oracle相關資料字典檢視Oracle
- oracle臨時表空間相關Oracle
- 4.2.10.1 Oracle Restart 相關變數配置OracleREST變數
- 19 Oracle Data Guard 相關檢視Oracle
- oracle鎖級別相關測試Oracle
- RunLoop 淺析OOP
- 淺析 ReentrantLockReentrantLock
- Unstated淺析
- 淺析SharedPreferences
- Nginx淺析Nginx
- 淺析PromisePromise
- ejs 淺析JS
- 淺析KubernetesStatefulSet
- AIDL淺析AI
- MongoDB淺析MongoDB
- 淺析 JWTJWT
- 淺析RedisRedis
- Jvm 淺析JVM
- ArrayList淺析
- CGLib淺析CGLib
- 淺析XMLXML
- 淺析 DDD
- CSS與中文相關的一些特性CSS