[20170126]hugepage与内存碎片.txt
--昨天给一台配置很低的机器安装dg(内存4G),同事安装完操作系统回家了,剩下的安装配置dg工作由我来完成.
--完成后我想看看是否可以使用hugepage,遇到一些问题,做一个测试:
1.环境:
$ cat /etc/issue
Oracle Linux Server release 5.9
Kernel \r on an \m
2.我的配置数据使用内存如下:
SYS@xxxxxxdg> show sga
Total System Global Area 1039765504 bytes
Fixed Size 2234800 bytes
Variable Size 352323152 bytes
Database Buffers 679477248 bytes
Redo Buffers 5730304 bytes
SYS@xxxxxxdg> show parameter sga_
NAME TYPE VALUE
------------ ------------ --------
sga_max_size big integer 996M
sga_target big integer 0
--//这样配置vm.nr_hugepages = 520就足够了.
3.我执行如下:
# sysctl -p
# sysctl vm.nr_hugepages
vm.nr_hugepages = 183
--//检查发现实际上仅仅得到183.到底那里配置错了.
--//仔细想想不对,机器配置内存太小,一定是无法找到对应大小的内存.
--//而实际free显示内存是足够的,估计内存碎片,无法满足这个数量.本来想重启机器,想想太复杂,我没有进入机房的权利,如果重启出问
--//题,这个大过年简直是没事找事.
$ free -m
total used free shared buffers cached
Mem: 3951 1469 2482 0 9 168
-/+ buffers/cache: 1291 2659
Swap: 10236 62 10173
--//我停止数据库监听(数据库已经关闭).依然无法获得足够的数量hugepages.
# echo 3 >| /proc/sys/vm/drop_caches
# sysctl vm.nr_hugepages
vm.nr_hugepages = 328
--我停止许多不需要的服务sendmail....,仅仅回收:
# sysctl vm.nr_hugepages
vm.nr_hugepages = 381
--继续看不顺眼的服务全部停止,注意停止后还必须使用ntsys补选上相应的服务(注意做好记录,这步很重要,许多服务我自己也不是很了
--解).最后:
# echo 3 >| /proc/sys/vm/drop_caches
# sysctl vm.nr_hugepages
vm.nr_hugepages = 520
# cat /proc/meminfo | grep -i huge
HugePages_Total: 520
HugePages_Free: 520
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
--//终于达到需求了.启动dg,检查alert*.log文件:
****************** Large Pages Information *****************
Total Shared Global Region in Large Pages = 998 MB (100%)
Large Pages used by this instance: 499 (998 MB)
Large Pages unused system wide = 21 (42 MB) (alloc incr 4096 KB)
Large Pages configured system wide = 520 (1040 MB)
Large Page size = 2048 KB
***********************************************************
$ cat /proc/meminfo | grep -i huge
HugePages_Total: 520
HugePages_Free: 223
HugePages_Rsvd: 202
Hugepagesize: 2048 kB
--//现在数据库终于可以使用hugepages了.剩下等放假回来再说....