【TUNE_ORACLE】Oracle資料庫與HugePages(一)HugePages概念和優勢
說明
相關文章連結:
Oracle資料庫與HugePages(一)HugePages概念和優勢: http://blog.itpub.net/69992972/viewspace-2763625/
Oracle資料庫與HugePages(二)HugePages配置和限制: http://blog.itpub.net/69992972/viewspace-2764357/
Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法: http://blog.itpub.net/69992972/viewspace-2764597/
Oracle資料庫與HugePages(四)如何禁用透明大頁: http://blog.itpub.net/69992972/viewspace-2764784/
前言
Oracle資料庫使用系統全域性區(SGA)來管理可以共享的一些資源:比如shared pool中儲存了共享的SQL語句及執行計劃,buffer pool中儲存了資料塊。對這些資源的訪問,其實就是Oracle使用OS的API來訪問記憶體資源的過程。記憶體操作通常意義上都是很快的,這時候Oracle資料庫可以很正常的工作。
但是:
1. 如果SGA內的某一部分被swap到硬碟上,那麼再次訪問它,就需要花非常多的時間。
2. 如果OS本身的記憶體非常的大,那麼管理/訪問到我們需要的記憶體的過程就需要更長時間。
在這些情況下,我們往往會碰到諸如latch/mutex/library cache lock/row cache lock的問題。Linux下的HugePages 可以解決由以上兩種問題引發的效能波動。
下面具體談談HugePages。
什麼是HugePages
HugePages(記憶體大頁)是整合到2.6版及更高版本Linux核心中的一項功能。它允許較大的頁面來管理記憶體,以替代較小的4KB頁面大小。
HugePages優點
如果生產環境有較大的RAM和SGA,那麼HugePages對於在Linux上提高Oracle資料庫效能至關重要。如果資料庫SGA很大(例如超過8GB),則需要配置HugePages。 但是具體多大就一定需要使用HugePage?這並沒有定論,有些文件曾經提到12G以上就推薦開啟,但強烈建議在測試環境進行了充分的測試之後,再決定是否在生產環境應用HugePage( 本人是從8G這個最小值開始測試)。SGA的大小很重要,因為HugePages是依靠SGA計算出來的。
HugePages的優點是:
1. 每個page較大使得page數量減少:預設頁面大小為4K,而HugeTLB最小大小為2M( 範圍在2M-256M,具體取決於核心版本和硬體架構)。這意味著系統將需要少處理512倍的頁面數量。
2. 減少Page Table遍歷:由於HugePage比常規大小的頁面覆蓋的連續虛擬地址範圍更大,因此使用HugePages的每個TLB條目獲得TLB命中率比常規頁面高。這減少了遍歷頁表以從虛擬地址獲取實體地址的次數。
3. 減少記憶體操作的開銷:在虛擬記憶體系統(任何主流的OS)上,每個記憶體操作實際上是兩個抽象記憶體操作。使用HugePages,由於要處理的頁面數較少,因此可以避免 訪問Page Table中可能出現的瓶頸。
4. 記憶體使用量更少:從Oracle資料庫的角度來看,使用HugePages,與常規大小的頁面相比,Linux核心將使用更少的記憶體來建立頁表來維護SGA地址範圍的虛擬到物理對映。這使更多的記憶體可用於程式專用計算或PGA使用。
5. 不會使用Swap: 我們必須儘可能避免在所有Linux 作業系統上進行swap操作。HugePages是不可交換的(而常規頁面是可交換的)。因此,沒有頁面替換機制的開銷。HugePages通常是固定不變的。
6. 沒有kswapd參與操作:如果要分頁的區域很大(比如50GB記憶體需要1300萬個Page Table項),導致kswapd將變得非常繁忙,並且將佔用大量CPU資源。當使用HugePages時,kswapd可以不參與管理它們。
注:
TLB:轉換後備緩衝區(TLB)是CPU中包含頁表部分的緩衝區(或快取)。這是一個固定大小的緩衝區,用於更快地進行虛擬地址轉換。
HugeTLB:這是TLB中的一個條目,它指向HugePage。HugePages是透過HugeTLB條目實現的,即,我們可以說HugePage是由“ HugeTLB頁面條目”處理的。所以 “HugeTLB”一詞也與HugePage相同。
Kswapd:是linux中用於頁面回收的核心執行緒。負責在記憶體不足時回收頁面。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2763625/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【TUNE_ORACLE】Oracle資料庫與HugePages(二)HugePages配置和限制Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(四)如何禁用透明大頁Oracle資料庫
- 0927hugepages與nr_overcommit_hugepagesMIT
- hugepages優化記憶體原理與優點優化記憶體
- HugePages on LinuxLinux
- HugePages詳解
- Linux HugepagesLinux
- Oracle 之 配置HugePages記憶體Oracle記憶體
- Oracle Linux 7禁用Transparent HugePagesOracleLinux
- Linux Hugepages[轉]Linux
- LINUX HUGEPAGES在大記憶體資料庫中的應用Linux記憶體資料庫
- 配置 HugePages for Oracle on Linux (x86-64)OracleLinux
- Linux 下配置 HugePagesLinux
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle
- linux上Oracle的sga(HugePages)分配問題LinuxOracle
- ID 361468.1 HugePages on Oracle Linux 64-bitOracleLinux
- linux配置大頁HugePagesLinux
- Linux Hugepages的使用(引用)Linux
- THP Transparent HugePages 相關知識與關閉
- HugePages on Oracle Linux 64-bit (Doc ID 361468.1)OracleLinux
- 關係型資料庫與NoSQL資料庫的優勢與劣勢資料庫SQL
- 【ASK_ORACLE】Oracle Data Guard(四)快照備庫的概念和優勢Oracle
- 【ASK_ORACLE】Oracle Data Guard(二)物理備庫的概念和優勢Oracle
- 【ASK_ORACLE】Oracle Data Guard(三)邏輯備庫的概念和優勢Oracle
- 未開啟HugePages ORACLE session劇增時引起的一次悲劇OracleSession
- Linux 11G RAC啟用HugePages與AMM的禁用Linux
- oracle資料庫SCN概念Oracle資料庫
- Shell Script to Calculate Values Recommended Linux HugePagesLinux
- 「Oracle」Oracle資料庫基本概念Oracle資料庫
- 「Oracle」Oracle 資料庫基本概念Oracle資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫
- linux大記憶體Hugepages最佳化Linux記憶體
- Linux HugePages /proc/meminfo輸出行的含義Linux
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- 資料庫概論 (一)資料庫概念資料庫
- HugePages與AMM不相容:ORA-00845: MEMORY_TARGET not supported on this system
- oracle資料庫調優描述(一).txtOracle資料庫