网站首页 > 技术文章 正文
Oracle HugePage配置
在操作系统Linux环境中,内存是以页Page的方式进行分配,默认大小为4K。如果需要比较大的内存空间,则需要进行频繁的页分配和管理寻址动作
Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages)。
- 标准大页(Huge Pages)是从Linux Kernel 2.6后被引入的。目的是使用更大的内存页面(memory page size) 以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。
- 透明大页(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、关键性系统服务故障
猜你喜欢
- 2024-10-15 详解Oracle 性能优化之内核的shmall、shmmax和信号灯参数
- 2024-10-15 Oracle基础知识杂谈 oracle的
- 2024-10-15 ORACLE不常用冷知识之Package oracle中package怎么执行的
- 2024-10-15 使用zabbix监控Oracle内存占用高 oracle占用内存过高
- 2024-10-15 记一次Oracle异常关闭资源没有被释放,导致无法正常重启的故障
- 2024-10-15 oracle性能调优-impdp导入加速 oracle19c impdp
- 2024-10-15 oracle实例是什么 oracle实例是什么 lisener
- 2024-10-15 十个最流行的Oracle性能指标,DBA必知
- 2024-10-15 只需3分钟,学会Oracle数据库自动SGA管理
- 2024-10-15 优化体系--oracle索引篇 oracle索引优化原则
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 562℃Oracle分析函数之Lag和Lead()使用
- 560℃几个Oracle空值处理函数 oracle处理null值的函数
- 547℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 544℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 541℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 535℃【数据统计分析】详解Oracle分组函数之CUBE
- 524℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 515℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)