mysql hugepage_Linux配置HugePage
對于內存較大的Oracle數據庫服務器,配置HugePage是很有必要的,下面是配置Huge的步驟:
對于內存較大的Oracle數據庫服務器,配置HugePage是很有必要的,下面是配置Huge的步驟:
我的環境:
OS:CentOS release 6.4 (Final)
Oracle:11.2.0.4 RAC
Oracle 大內存需要配置HugePage
在Oracle 11.2.0.3.0上開啟大頁(HugePages)的詳細解析
Linux HugePages及MySQL 大頁配置
Linux HugePage 特性
1. 設置memlock
編輯/etc/security/limits.conf
增加:
* Soft memlock 稍小于RAM值
* hard memlock 稍小于RAM值
Memlock值大于sga沒關系的,所以我們可以設置這個值在我們想要的SGA size和物理內存size之間,這個值得單位是kb。
[root@node1 ~]# grep -i memtot /proc/meminfo
MemTotal: 132250576 kB
我們物理內存大小126G,因此我可以設置memlock為100G。
在2個節點設置:
[root@node1 ~]# tail -2 /etc/security/limits.conf
* soft memlock 104857600
* hard memlock 104857600
設置完畢后,以Oracle用戶登錄驗證:
node2-> ulimit -l
104857600
2. 禁用AMM特性:
禁用AMM特性需要將memory_max_target, memory_max_target2個參數重置,而不僅僅是設置為0,最好的辦法是創建一個pfile,在pfile中將這2個參數刪除,再根據這個pfile創建spfile.
主要內存參數設置為:
node1->
node1-> grep target /tmp/init.ora
*.pga_aggregate_target=1572864000
*.sga_target=64424509440
SQL> create spfile from pfile='/tmp/init.ora';
File created.
SQL> startup force
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
Additional information: -134217728
Additional information: 1
SQL>
出現這個報錯是因為shmall設置的太小。
Shmall表示共享內存的總大小,單位為pagesize的大小。
根據我的配置,最大能支持8G的SGA:
node1-> getconf PAGE_SIZE
4096
node1-> cat /proc/sys/kernel/shmall
2097152
修改shmall并重新啟動數據庫,修改的方法很簡單,編輯/etc/sysctl.conf:
kernel.shmall= 16252928
即可。
修改完畢kernel.shmall,此時可以重啟數據庫。
SQL> startup nomount pfile='/tmp/init.ora';
ORACLE instance started.
Total System Global Area 6.4137E+10 bytes
Fixed Size 2269072 bytes
Variable Size 6979321968 bytes
Database Buffers 5.7043E+10 bytes
Redo Buffers 112762880 bytes
SQL>
SQL>
DB啟動后重新創建spfile:
SQL> create spfile='+OCR/sszgdb/spfilesszgdb.ora' from pfile='/tmp/init.ora';
File created.
SQL>
3. 根據Oracle的腳本計算hugepage大小(計算時要確保Oracle已經啟動),也可自己計算:
Press Enter to proceed...
Recommended setting: vm.nr_hugepages = 30739
node1->
4. 根據腳本的計算值在2個節點編輯/etc/sysctl.conf
加入vm.nr_hugepages = 30739
[root@node2 ~]# grep -i huge /proc/meminfo
AnonHugePages: 602112 kB
HugePages_Total: 30739
HugePages_Free: 30739
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB停止數據庫實例
5. 重啟服務器,一般重啟服務器之后DB也自動啟動了。服務器和DB重啟后可以通過以下命令驗證大頁的使用情況:
grep -i Hugepages /proc/meminfo
此時查看Oracle的alert日志,也可以發現:
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = UNLIMITED
Total Shared Global Region in Large Pages = 58 GB (96%)
Large Pages used by this instance: 29761 (58 GB)
Large Pages unused system wide = 24 (48 MB)
Large Pages configured system wide = 30739 (60 GB)
Large Page size = 2048 KB
RECOMMENDATION:
Total System Global Area size is 60 GB. For optimal performance,
prior to the next instance restart:
1. Increase the number of unused large pages by
at least 936 (page size 2048 KB, total size 1872 MB) system wide to
get 100% of the System Global Area allocated with large pages
可以發現sga并沒有全部放在大頁里,這樣可能對性能帶來負面影響,,Oracle建議我們再加入936個大頁,可見Oracle的大頁腳本計算并不準確,我們需要增加大頁數量,并設置參數Use_large_pages=only,該參數確保Oracle的共享內存全部使用大頁。
更多詳情見請繼續閱讀下一頁的精彩內容:
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的mysql hugepage_Linux配置HugePage的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WIM文件怎么安装系统Win10
- 下一篇: ckfinder的使用