[20170126]hugepage与内存碎片.txt

[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了.剩下等放假回来再说....

上一篇:ext学习资源汇总


下一篇:11g内存管理新特性的internal表现