专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle HugePage在生产环境中的使用

ins518 2024-10-15 13:13:34 技术文章 23 ℃ 0 评论

Oracle HugePage配置

在操作系统Linux环境中,内存是以页Page的方式进行分配,默认大小为4K。如果需要比较大的内存空间,则需要进行频繁的页分配和管理寻址动作

Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages)。

  1. 标准大页(Huge Pages)是从Linux Kernel 2.6后被引入的。目的是使用更大的内存页面(memory page size) 以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。
  2. 透明大页(Transparent Huge Pages)缩写为THP,这个是RHEL 6开始引入的一个功能。

这两者的区别在于大页的分配机制,标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。目前透明大页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。

一、禁用透明大页THP

RAC环境下透明大页可能会造成不可预知的节点重启和各种性能问题,另外在单实例的环境下透明大页也会造成不可预知的性能问题。所以oracle强烈建议在所有运行oracle数据库的服务器上关闭透明大页


注:我自已机器上实验过,开启了hugepage,但是没关闭透明大页,导致Linux机器经常中断,ssh连不上


1、查看透明大页是否开启 【always】:代表开启 【never】:代表关闭

cat /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

grep -i huge /proc/meminfo

AnonHugePages值>0代表是开启,=0代表关闭


2、关闭透明大页

Redhat6:

vim /etc/grub.conf

在quiet后面加上transparent_hugepage=never 重启机器

Redhat7:

vim /etc/default/grub

文件中的GRUB_CMDLINE_LINUX行添加:transparent_hugepage=never

GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never"

再运行grub2-mkconfig 重启机器

grub2-mkconfig -o /boot/grub2/grub.cfg


二、开启hugepage

前提oracle内存管理方式不能为AMM,可以为ASMM

1、参考metalink(文档 ID 401749.1)提供的脚本,计算hugepages的大小,有需要要可以私信我。

[oracle@T-DB ~]$ ./hugepages_settings.sh

Recommended setting: vm.nr_hugepages = 3084


2、配置vm.nr_hugepages

echo "vm.nr_hugepages = 3084" >> /etc/sysctl.conf


3、配置内存锁(必须大于sga_max_size,本文SGA大小为6G)

这里设定oracle用户可以锁定内存的大小 ,以KB为单位。如果rac或实例ASM,需增加grid用户

oracle hard memlock 7168000

oracle soft memlock 7168000

grid hard memlock 7168000

grid soft memlock 7168000

[oracle@T-DB ~]$ ulimit -l

7168000

4、重启机器


三、检查hugepage大页使用

[oracle@T-DB ~]$ grep -i huge /proc/meminfo

AnonHugePages: 0 kB --代表透明大页关闭

HugePages_Total: 3084 --总共3084页

HugePages_Free: 2508 --空闲2508页,即当前大页被使用了3084-2508=576页,即被用了576*2M=1152M,小于sga_target。

HugePages_Rsvd: 2505 --操作系统承诺给Oracle预留2505页,即2505*2M=5010M(5010M+1152M==SGA_MAX_SIZE)

HugePages_Surp: 0

Hugepagesize: 2048 kB --每页是2M,不可修改


SQL> show parameter use_large_pages; (默认值:true)

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

use_large_pages string TRUE


四、使用HugePages的注意事项

下面的三种情形应当重新配置HugePages

a、物理内存的增减或减少

b、在当前服务器上新增或移出Instance

c、Instance的SGA大小增加或减少


如果未能调整HugePages,可能会引发下面的问题

a、数据库性能低下

b、出现内存不足或者过度使用交换空间

c、数据库实例不能被启动

d、关键性系统服务故障

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表