一.系统当前状态
[root@node1 ora11g]# cat /proc/meminfo | grep -i hugepages
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
[root@node1 ora11g]# uname -sr
Linux 2.6.18-238.19.1.el5
cat /proc/meminfo|grep PageT
PageTables: 44748 kB
二.计算nr_hugepages值
#!/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
# http://support.oracle.com

# Welcome text
echo "
This script is provided by Doc ID 401749.1 from My Oracle Support
(http://support.oracle.com) where it is intended to compute values for
the recommended HugePages/HugeTLB configuration for the current shared
memory segments. Before proceeding with the execution please make sure
that:
* Oracle Database instance(s) are up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not setup
(See Doc ID 749851.1)
* The shared memory segments can be listed by command:
# ipcs -m

Press Enter to proceed..."

read

# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`

# Initialize the counter
NUM_PG=0

# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk '{print $5}' | grep "[0-9][0-9]*"`
do
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
if [ $MIN_PG -gt 0 ]; then
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
fi
done

RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`

# An SGA less than 100MB does not make sense
# Bail out if that is the case
if [ $RES_BYTES -lt 100000000 ]; then
echo "***********"
echo "** ERROR **"
echo "***********"
echo "Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration. HugePages can only be used for shared memory segments
that you can list by command:

# ipcs -m

of a size that can match an Oracle Database SGA. Please make sure that:
* Oracle Database instance is up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not configured"
exit 1
fi

# Finish with results
case $KERN in
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
*) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac

# End
1.Configuring the Script
Create a text file named hugepages_settings.sh
Copy the contents below in the file
Run
$ chmod +x hugepages_settings.sh
2.Running the Script
Be sure that all applications that are meant to use HugePage / HugeTLB are running at the time the script is to be run.
This includes the Oracle RDBMS instances and ASM instances in addition to other applications.
Be sure that you have /bin and /usr/bin in $PATH
Run
$ ./hugepages_settings.sh
三.修改系统配置
1./etc/sysctl.conf
vm.nr_hugepages = 770

假设分配16G内存给用于hugepage
notes:内存*1024*1024/Hugepagesize
计算公式:16*1024*1024/2048=8192
2./etc/security/limits.conf
oracle soft memlock 102400
oracle hard memlock 102400
单位K
计算公式:>=HugePages_Total*Hugepagesize
四.重启系统检查配置是否生效
[root@node1 ~]# cat /proc/meminfo | grep -i hugepages
HugePages_Total: 770
HugePages_Free: 770
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
五.启动数据库并验证
[oracle@node1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Wed Jan 4 16:06:48 2012

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size 2096632 bytes
Variable Size 486539784 bytes
Database Buffers 1107296256 bytes
Redo Buffers 14680064 bytes
Database mounted.
Database opened.
SQL> exit

[oracle@node1 ~]$ grep Huge /proc/meminfo
HugePages_Total: 770
HugePages_Free: 591
HugePages_Rsvd: 590
Hugepagesize: 2048 kB
[oracle@node1 ~]$ cat /proc/meminfo|grep PageT
PageTables: 13216 kB
HugePages_Free<>HugePages_Total,PageTables变小
证明HugePages配置成功

六.补充说明
1.在数据库内存服务器内存比较大的时候,可以考虑使用该功能,提高系统性能
2.对于Oracl 11g,如果需要使用此功能,需要关闭AMM功能(需要衡量)

--The END--

转载于:https://www.cnblogs.com/osdba/p/3946622.html

如何使用Hugepage参数相关推荐

  1. Linux性能优化大师-系统优化漫谈

    目录 Linux性能度量标准 了解系统的硬件配置 一些系统命令 SELinux proc目录 调整处理器子系统 调整内存子系统 调整磁盘子系统 调整网络子系统 限制资源使用 参考 Linux性能度量标 ...

  2. 透明大页相关内核参数_透明大内存页Hugepage支持

    ==目标== 在linux2.6.38之前,处理大容量内存工作集的高性能关键计算应用是运行在libhugetlbfs之上,必须依赖于 hugetlbfs,.透明Hugepage支持是一种替代手段,它使 ...

  3. 透明大页相关内核参数_Oracle关于内存参数及大页设置的相关概念和设置之hugepage概念和配置...

    一.概念: Oracle 数据库和 Linux 内存管理 系统中使用的内存越多,管理该内存所需的资源也就越多.对于 Linux 操作系统,通过 Linux kswapd 进程和页表内存结构(针对系统中 ...

  4. 32位oracle_Oracle 之Hugepage

    1. Hugepage基本概念 系统进程是通过虚拟地址访问内存,但是CPU必须把它转换成物理内存地址才能真正访问内存. 为了提高这个转换效率,CPU会缓存最近的"虚拟内存地址和物理内存地址& ...

  5. DPDK — DPDK APP 的指令行参数

    目录 文章目录 目录 Lcore-related options(逻辑线程相关参数) Device-related options(设备相关参数) Multiprocessing-related op ...

  6. 个人笔记:ORACLE大页内存hugepage和SGA、PGA的经验,SGA并不是越大越好

    背景:ORACLE 11.2,SGA 64G,PGA 8G,压测出现操作系统内存耗尽 WARNING: Heavy swapping observed on system in last 5 mins ...

  7. mysql hugepage_因未配置Hugepage会话数添增悲剧案例

    今天一朋友反馈他们的一个数据库hang住了,通过ssh也不能登录系统,他们没有办法重启系统解决问题,现在想让我帮忙找出问题原因 分析awr得出 询问朋友,他们的库一般session保持在200个左右, ...

  8. oracle linux hugepage,LInux下为什么配置HugePages及配置步骤

    一. HugePages 说明 1.1 HugePages 介绍 HugePages is afeature integrated into the Linux kernel with release ...

  9. oracle12c rac 开启hugepage

    1.需求背景 在数据库集成巡检中发现oracle rac其中有一个节点的内存使用率非常高,而且42core的cpu5分钟负载已经达到219,167,131,swap free已经为0了.由于该主机内存 ...

最新文章

  1. 河北省医疗卫生数据中心案例简介
  2. 长连接、短连接、短轮询、长轮询
  3. AI 识别抑郁症正确率高达八成,但AI+精神健康还有很长的路要走
  4. mysql慢查询日志时间戳_Mysql查询在时间戳的日期范围内非常慢
  5. 百度笔试题,malloc/free与new/delete的区别与联系
  6. matlab相机标定_【显微视界】基于视觉伺服的工业机器人系统研究(摄像机标定、手眼标定、目标单目定位)...
  7. C# 6.0语法新特性体验(二)
  8. 内部类的小总结(语法和用法方面)
  9. 父类、派生类、方法重写、实例化后的执行顺序
  10. 【爬虫剑谱】一卷3章 软件篇-Anaconda的安装及配置
  11. mysql学习一 常用语句
  12. 非堵塞socket实现android手机与PC的文件传输
  13. 21世纪需要的七种人才—李开复
  14. 漫游书海-我的阅读简史
  15. ARINC615-3 与 ARINC844 PART2 协议解析 思维导图
  16. 目标检测数据集下载及算法训练教程
  17. 性能测试——抗攻击-hyenae-ddos攻击
  18. OJ 2309 Problem C Lemon
  19. Android 左右滑动控件
  20. android手表怎样刷机,碉堡了!智能手表也能一键刷机

热门文章

  1. cbow word2vec 损失_word2vec个人总结-理论篇
  2. 第一台计算机豹电器元件,电气基础和安全知识.ppt
  3. c++ thread 内存泄漏_使用 ThreadLocal如何避免内存泄露?
  4. import 别名_es6模块 import, export 知识点小结
  5. android intent 跳转卡顿_Intent七大属性
  6. mac android studio 打不开adb,Android-Macbook ADB无法打开
  7. php内置类,yii2学习教程之5种内置行为类详解
  8. uitextfield 键盘类型_iOS输入类型-文本字段(Text Fields) | 菜鸟教程
  9. java的spinner_java中的spinner | 学步园
  10. python短信接口_短信接口DEMO-PYTHON