【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/
Hugepages配置限制
HugePages有以下限制:
1. 必須取消MEMORY_TARGET和MEMORY_MAX_TARGET初始化引數的設定。例如,要取消資料庫例項的引數設定,可以使用ALTER SYSTEM RESET命令。
2. 自動記憶體管理(AMM)和HugePages是不相容的。當使用AMM時,整個SGA記憶體是透過在/dev/shm 下建立檔案分配的當Oracle資料庫使用AMM分配SGA時,不會保留HugePages。要在Oracle資料庫11g及以上版本上使用HugePages,必須禁用AMM。
3. 如果在32位環境中使用VLM(Very Large Memory),則不能將HugePages用於資料庫緩衝區快取。可以將HugePages用於SGA的其他部分,如shared_pool、large_pool等。VLM(buffer cache)的記憶體分配是使用共享記憶體檔案系統(ramfs/tmpfs/shmfs)完成的。記憶體檔案系統不保留或使用HugePages。
4. 在系統啟動後,HugePages不受分配或釋放的約束,除非系統管理員透過修改可用頁面的數量或修改池大小來更改HugePages配置。如果在系統啟動期間沒有在記憶體中保留所需的空間,則HugePages分配失敗。
5. 確保正確配置了HugePages,因為如果應用程式沒有使用足夠多的HugePages, HugePages將不會被使用,但任然佔用記憶體空間,此時會使用其他非 HugePages的記憶體,因此系統可能會耗盡記憶體。
6. 如果在例項啟動時沒有足夠的HugePages,並且初始化引數use_large_pages被設定為only,那麼資料庫將無法啟動,並且一個警報日誌訊息將提供關於HugePages的必要資訊。
如何在Linux上使用HugePages
要使Oracle資料庫能夠在Linux上使用large pages(有時稱為HugePages),需要設定vm.nr_hugepages核心引數,用於指定要保留的HugePages的數量。 必須指定足夠的HugePages來容納資料庫例項的整個SGA(一般比SGA大十幾兆就夠了,多了會浪費記憶體空間,但是本人在工作中發現極少部分系統的SGA大小波動,有時會導致多十幾兆也不夠用,導致 HugePages失效發生記憶體洩漏,因此把 HugePages多設定128M就再沒發生過記憶體洩漏)。要確定所需的引數值,需將例項的SGA大小除以大頁的大小,然後將結果四捨五入到最接近的整數。
要確定預設的HugePages大小,執行以下命令:
# grep Hugepagesize /proc/meminfo
例如,如果/proc/meminfo列出的HugePages大小為2 MB,而例項的總SGA大小為1.6 GB,那麼設定vm.nr_hugepages核心引數為820 (1.6 GB / 2 MB = 819.2)。
如何在Linux上配置HugePages
1.執行以下命令來確定核心是否支援HugePages:
$ grep Huge /proc/meminfo
2.在/etc/security/limit .conf檔案中編輯memlock設定。memlock設定以KB為單位指定, 當啟用HugePages記憶體時,最大鎖定記憶體限制應該至少設定為當前RAM的90% ,當禁用HugePages記憶體時,應該至少設定為3145728 KB (3 GB)。例如,如果你安裝了64 GB的記憶體,那麼新增以下條目來增加最大的鎖定記憶體地址空間:
* soft memlock 60397977
* hard memlock 60397977
也還可以將memlock的值設定得高於SGA要求。
3.再次以oracle使用者身份登入,執行ulimit -l命令,驗證新的memlock設定:
$ ulimit - l
60397977
4.執行以下命令顯示Hugepagesize變數的值:
$ grep Hugepagesize /proc/meminfo
5.執行hugepages_settings.sh指令碼來計算hugepages配置的值
6.將以下條目新增到/etc/sysctl.conf檔案中,其中的值是HugePages值
vm.nr_hugepages =<value>
7.重新啟動OS和例項
8.執行以下命令檢查可用的hugepages(1 or 2 page空閒):
$ grep Huge /proc/meminfo
注意:如果不能使用nr_hugepages去設定HugePages分配,那麼可用記憶體可能會被分割。需重新啟動伺服器,以便使Hugepages分配生效。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2764357/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【TUNE_ORACLE】Oracle資料庫與HugePages(一)HugePages概念和優勢Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(四)如何禁用透明大頁Oracle資料庫
- Oracle 之 配置HugePages記憶體Oracle記憶體
- 0927hugepages與nr_overcommit_hugepagesMIT
- Linux 下配置 HugePagesLinux
- 配置 HugePages for Oracle on Linux (x86-64)OracleLinux
- linux配置大頁HugePagesLinux
- HugePages on LinuxLinux
- HugePages詳解
- Linux HugepagesLinux
- Oracle Linux 7禁用Transparent HugePagesOracleLinux
- Linux Hugepages[轉]Linux
- LINUX HUGEPAGES在大記憶體資料庫中的應用Linux記憶體資料庫
- linux上Oracle的sga(HugePages)分配問題LinuxOracle
- ID 361468.1 HugePages on Oracle Linux 64-bitOracleLinux
- Linux Hugepages的使用(引用)Linux
- THP Transparent HugePages 相關知識與關閉
- hugepages優化記憶體原理與優點優化記憶體
- HugePages on Oracle Linux 64-bit (Doc ID 361468.1)OracleLinux
- Linux 11G RAC啟用HugePages與AMM的禁用Linux
- Shell Script to Calculate Values Recommended Linux HugePagesLinux
- linux大記憶體Hugepages最佳化Linux記憶體
- Linux HugePages /proc/meminfo輸出行的含義Linux
- Oracle資料庫限制訪問IPOracle資料庫
- HugePages與AMM不相容:ORA-00845: MEMORY_TARGET not supported on this system
- 未開啟HugePages ORACLE session劇增時引起的一次悲劇OracleSession
- Oracle資料庫配置Oracle資料庫
- [20191211]hugepages pagetables.txt
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- jboss7.1.1配置資料庫mysql與oracle資料庫MySqlOracle
- Oracle的過載保護-資料庫資源限制Oracle資料庫
- oracle透過trigger來限制使用者和ip連線資料庫的限制Oracle資料庫
- How to disable transparent hugepages (THP) on Red Hat Enterprise Linux 7Linux
- Linux中設定hugepages 在記憶體中 lock SGALinux記憶體
- Oracle配置資料庫診斷Oracle資料庫
- [20191202]關於oracle例項是否使用hugepages問題.txtOracle
- 【oracle】靜默安裝oracle軟體和資料庫之二Oracle資料庫