oracle性能优化:Linux环境下合理配置大内存页(HugePage) 您所在的位置:网站首页 设置Oracle占用内存大小 oracle性能优化:Linux环境下合理配置大内存页(HugePage)

oracle性能优化:Linux环境下合理配置大内存页(HugePage)

2024-07-14 11:23| 来源: 网络整理| 查看: 265

可参考oracle MOS 相关文档或Oracle官方Grid安装指导手册。 Best Practices and Recommendations for RAC databases with SGA size over 100GB (文档 ID 1619155.1)

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

RHEL7.x 关闭TRANSPARENT HUGEPAGES 方法 a.关闭前查看 查看#cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never

b.关闭TRANSPARENT HUGEPAGES 实施 编辑#vi /etc/default/grub 在GRUB_CMDLINE_LINUX选项后追加参数transparent_hugepage=never: GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never"

生成新的grub文件#grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg 说明:非/boot/efi模式,使用#grub2-mkconfig -o /boot/grub2/grub.cfg

c.重启系统后查看: cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]

------------ 安装Oracle数据库都建议关闭透明大页 https://www.cndba.cn/dave/article/2673

1 THP 背景知识补充说明

在Linux6.x之后的平台,在安装Oracle数据库的时候都建议关闭透明大页。之前也写过一篇关于透明大页的文章:

Linux Transparent Huge Pages 对 Oracle 的影响 http://www.cndba.cn/dave/article/312

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

这两者的区别在于大页的分配机制,标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。目前透明大页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。ORACLE官方不建议在使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时开启透明大页(THP), 因为透明大页存在一些问题: 1.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启和性能问题; 2.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题;

2 关闭THP

在之前的文章中我们演示了在Linux 6.x 中关闭透明大页的方法:

Linux Transparent Huge Pages 对 Oracle 的影响 http://www.cndba.cn/dave/article/312

这里补充一下Linux 7.4中的关闭方法。 当然Oracle Linux 默认已经关闭了THP,可以不用再进行关闭,但如果是Redhat 6,7,SUSE 11 那么还是需要手工来操作的。

首先检查THP是否启动:

[[email protected] ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.4 (Maipo) [[email protected] ~]# uname -r 3.10.0-693.el7.x86_64 [[email protected] ~]# uname -a Linux dave 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]#

[[email protected] ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never [[email protected] ~]#

注意:如果没有这个文件,那么检查:

/sys/kernel/mm/redhat_transparent_hugepage/enabled

如果/sys/kernel/mm/transparent_hugepage 和 /sys/kernel/mm/redhat_transparent_hugepage 2个文件都不存在,那么就是在系统内核中移除了THP。

Linux 6

在Linux 6或者更早的版本中按以下步骤禁用: 在grub.conf 文件中添加:transparent_hugepage=never。 这种方法在修改后需要重启OS才能生效。 [[email protected] ~]# cat /etc/grub.conf

grub.conf generated by anaconda Note that you do not have to rerun grub after making changes to this file NOTICE: You have a /boot partition. This means that all kernel and initrd paths are relative to /boot/, eg. root (hd0,1) kernel /vmlinuz-version ro root=/dev/sda4 initrd /initrd-[generic-]version.img boot=/dev/sda1

device (hd0) HD(1,800,3e8000,ad383463-7239-443a-83c6-7b8c6539a458) default=0 timeout=5 splashimage=(hd0,1)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-573.el6.x86_64) root (hd0,1) kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=65b6fe1a-6897-4a16-9cf6-e8dfcc89b7ce rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never initrd /initramfs-2.6.32-573.el6.x86_64.img

linux 7

在Linux 7 之后,需要修改/etc/default/grub文件,添加transparent_hugepage=never,然后执行grub2-mkconfig,最后在重启系统: [[email protected] ~]# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never" GRUB_DISABLE_RECOVERY="true"

[[email protected] grub2]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-4ea362360a8f4c5388edf0ad788ae256 Found initrd image: /boot/initramfs-0-rescue-4ea362360a8f4c5388edf0ad788ae256.img done [[email protected] grub2]#

[[email protected] grub.d]# reboot

--验证:成功关闭 [[email protected] ~]# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=UUID=b9ab8ce8-a487-4046-947f-1f80d2feb9d4 ro crashkernel=auto rhgb quiet transparent_hugepage=never [[email protected] ~]# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] [[email protected] ~]#

#############################################################

https://www.cnblogs.com/lhrbest/p/5866284.html 性能优化:Linux环境下合理配置大内存页(HugePage) 计划要设置的内存页数量。到目前为止,大内存页只能用于共享内存段等少量类型 的内存。一旦将物理内存用作大内存页,那么这些物理内存就不能用作其他用途,比如作为进程的私有内存。因此不能将过多的内存设置为大内存页。我们通常将大内存页用作Oracle数据库的SGA,那么大内存页数量:

HugePages_Total=ceil(SGA_MAX_SIZE/Hugepagesize)+N

比如,为数据库设置的SGA_MAX_SIZE为18GB,那么页面数可以为ceil(18*1024/2)+2=9218。这里加上N,是需要将HugePage内存空间设置得比SGA_MAX_SIZE稍大,通常为1-2即可。我们通过ipcs -m命令查看共享内存段的大小,可以看到共享内存段的大小实际上比SGA_MAX_SIZE约大。如果服务器上有多个Oracle实例,需要为每个实例考虑共享内存段多出的部分,即N值会越大。另外,Oracle数据库要么全部使用大内存页,要么完全不使用大内存页,因此不合适的HugePages_Total将造成内存的浪费。

除了使用SGA_MAX_SIZE计算,也可以通过ipcs -m所获取的共享内存段大小计算出更准确的HugePages_Total。

HugePages_Total=sum(ceil(share_segment_size/Hugepagesize))

修改/etc/sysctl.conf文件,增加如下行:

vm.nr_hugepages=9218

然后执行sysctl –p命令,使配置生效。

这里vm.nr_hugepages这个参数值为第2步计算出的大内存页数量。然后检查/proc/meminfo,如果HugePages_Total小于设置的数量,那么表明没有足够的连续物理内存用于这些大内存页,需要重启服务器。

在/etc/security/limits.conf文件中增加如下行:

oracle soft memlock 18878464

oracle hard memlock 18878464

这里设定oracle用户可以锁定内存的大小 ,以KB为单位。

然后重新以oracle用户连接到数据库服务器,使用ulimit -a命令,可以看到:

max lockedmemory (kbytes, -l) 18878464

这里将memlock配置为unlimited也可以。

如果数据库使用MANUAL方式管理SGA,需要改为AUTO方式,即将SGA_TARGET_SIZE设置为大于0的值。对于11g,由于HugePage只能用于共享内存,不能用于PGA,所以不能使用AMM,即不能设置MEMORY_TARGET为大于0,只能分别设置SGA和PGA,SGA同样只能是AUTO方式管理。

最后启动数据库,检查/proc/meminfo中查看HugePages_Free是否已经减少。如果已经减少,表明已经使用到HugePage Memory。不过查看出故障数据库服务器上的/proc/meminfo时发现,居然没有HugePage相关的信息,sysctl -a查看所有系统参数也没有找到vm.nr_hugepages这个参数。这是由于Linux内核没有编译进HugePage这个特性。我们需要使用其他的内核来启用HugePage。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有