Linux操作系统下大内存页配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux操作系统下大内存页配置
一、概述
HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。尤其是对于8GB以上的内存以及较大的Oracle SGA size,建议配值并使用HugePage特性。同时,hugepage是作为一个优化项,而不是必须设置项。如果系统性能稳定无异常,则大页内存不是必须设置的。
二、实施过程
注:由于各系统的参数设置各异,所以以下只描述整体实施步骤和方法,具体参数在实施操作时根据系统参数情况再做具体安排。
1.查看当前系统是否配值HugePages
下面的查询中HugePages相关的几个值都为0,表明当前未配值HugePages,其次可以看到Hugepagesize为2MB。
$ grep Huge /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
2.修改用户的memlock限制
通过修改/etc/security/limits.conf配值文件来实现
该参数的值通常配值位略小于当前的已安装系统内存,如当前你的系统内存为64GB,可以做如下设置
* soft memlock 60397977
* hard memlock 60397977
上述的设置单位为kb,不会降低系统性能。至少也要配值为略大于系统上所有SGA的总和。使用ulimit -l 来校验该设置
3.禁用AMM(Oracle 11g)
如果当前的Oracle 版本为10g,可以跳过此步骤。
如果当前的Oracle 版本为11g,由于AMM(Automatic Memory Management)特性与Hugepages不兼容,需要禁用AMM。
SQL>ALTER SYSTEM RESET memory_target SCOPE=SPFILE;
SQL>ALTER SYSTEM RESET memory_max_target SCOPE=SPFILE;
SQL>ALTER SYSTEM SET sga_target=
SQL>ALTER SYSTEM SET pga_aggregate_target=
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;
4.计算vm.nr_hugepages 的值
使用Oracle 提供的脚本hugepages_settings.sh的脚本来计算vm.nr_hugepages的值(脚
本见附录)
在执行脚本之前确保所有的Oracle 实例已启动以及ASM也启动(存在的情形下)
$ ./hugepages_settings.sh
...
Recommended setting: vm.nr_hugepages = 1496
5.编辑/etc/sysctl.conf 来设置vm.nr_hugepages参数
$ sysctl -w vm.nr_hugepages = 1496
$ sysctl -p
6.停止所有的Instance并重启server
上述的所有步骤已经实现了动态修改,但对于HugePages的分配需要重新启动server才能生效。
7.验证配值
HugePages相关参数的值会随着当前服务器上的实例的停止与启动而动态发生变化
通常情况下,HugePages_Free的值应当小于HugePages_Total的值,在HugePages被使用时HugePages_Rsvd值应当为非零值。
$ grep Huge /proc/meminfo
HugePages_Total: 131
HugePages_Free: 20
HugePages_Rsvd: 20
Hugepagesize: 2048 kB
如下面的情形,当服务器上仅有的一个实例被关闭后,HugePages_Rsvd的值为零。且HugePages_Free等于HugePages_Total
$ grep Huge /proc/meminfo
HugePages_Total: 131
HugePages_Free: 131
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
三、使用大页内存注意事项
下面的三种情形应当重新配置HugePages
a、物理内存的增减或减少
b、在当前服务器上新增或移出Instance
c、Instance的SGA大小增加或减少
如果未能调整HugePages,可能会引发下面的问题
a、数据库性能地下
b、出现内存不足或者过度使用交换空间
c、数据库实例不能被启动
d、关键性系统服务故障
四、回退方案
取消大页内存,恢复AMM内存管理机制即可。
五、附录
计算vm.nr_hugepages 值的脚本:hugepages_settings.sh
#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
#
# This script is provided by Doc ID 401749.1 from My Oracle Support #
# Welcome text
echo "