Redhat:HugePage

2023-10-22 00:58
文章标签 hugepage redhat

本文主要是介绍Redhat:HugePage,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、HugePage 介绍

  在操作系统Linux环境中,内存是以页Page的方式进行分配,默认大小为4K。如果需要比较大的内存空间,则需要进行频繁的页分配和管理寻址动作。
  HugePage是传统4K Page的替代方案。顾名思义,是用HugePage可以让我们有更大的内存分页大小。无论是HugePage还是传统的正常Page,这个过程都涉及到OS内存寻址过程。
  当一个进程访问内存的时候,并不是直接进行内存位置访问,是需要通过Page Table进行转移变换。在使用HugePage的情况下,PageTable具有了额外的属性,就是判断该页记录是HugePage还是Regular Page。

二、信息查看

  • 系统
    uname -r
  • 查看共享段
    ipcs -m
  • 查看大页信息
    grep Huge /proc/meminfo

三、配制大页

  1. 确定内存大小
    free -g
  2. 计算HugePages_Total:脚本见401749.1
    执行脚本,注意这个过程中要求Oracle所有实例,包括数据库和ASM都启动、AMM关闭,以及SGA大小超过100M。
  3. 修改/etc/security/limits.conf参数文件,添加数据库实例用户的memlock限制。
    这个过程中使用memlock标记,用于设置每个用户允许的最大内存使用情况。这个取值可以设置为数据库服务器物理内存大小。
    注意:可用内存>value(锁定内存)>=HugePages_Total*Hugepagesize
    HugePagesize:

    vi /etc/security/limits.conf
    # 添加  
    oracle soft memlock value  
    oracle hard memlock value  
  4. 验证limit
    ulimit -l
  5. 更改参数/etc/sysctl.conf
    vm.nr_hugepages = HugePages_Total值(见第2步)
  6. 重启系统及数据库
  7. 验证
    grep Huge /proc/meminfo

四、关闭大页

  1. 方法一:优先方法是修改/boot/grub/grub.conf文件,在kernel行的后面加上"transparent_hugepage=never":
    title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)  root (hd0,0)  kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_xty64-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_xty64/lv_root rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_NO_DM  KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_xty64/lv_swap  transparent_hugepage=never  initrd /initramfs-2.6.32-358.el6.x86_64.img
  2. 在/etc/rc.local中加入下面的代码行:
    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then  echo never > /sys/kernel/mm/transparent_hugepage/enabled  
    fi  
    if test -f /sys/kernel/mm/transparent_hugepage/defrag; then  echo never > /sys/kernel/mm/transparent_hugepage/defrag  
    fi  
  3. 重启后校验:
    cat /sys/kernel/mm/transparent_hugepage/defrag
    always [never]
    cat /sys/kernel/mm/transparent_hugepage/enabled 
    always [never]
  4. 如果结果非预期,可能是由于Linux的ktune和tuned服务所导致。在此种情况下,建议关闭这两项服务:
    service tuned stop
    chkconfig tuned off
    service ktune stop
    chkconfig ktune off或者:
    tuned-adm off

五、和 Oracle 的关系

  • AMM简介:SGA 在 Linux中是通过系统共享内存实现,而PGA是通过进程私有空间实现。AMM实际上最大的功能是将SGA和PGA空间调节的通道打通,这必然带来对原有SGA共享内存方式架构的影响。在AMM时,ipcs –m显示的虚拟空共享段就是实际效果的一部分。
  • AMM & HugePage
    AMM是不支持HugePage的,如果强在AMM+HugePage模式下打开数据库,是会遇到失败信息。所有使用HugePages必须设置内存参数MEMORY_TARGET / MEMORY_MAX_TARGET 为 0
    如果使用了大内存和SGA,那么HugePage对提高数据库性能就非常重要。如果数据库SGA脚本,比如超过8G(个人经验:建议SGA>32GB),就需要配置HugePages。配置HugePages 有如下好处:
    • 大页和普通页:传统页大小是4K而hugeLTB大小 2048k。这意味着系统需要处理512倍传统页面。
    • 减少PageTable检索负载:更小的PageTable意味着更快的检索定位能力;
    • 内存性能提升:Page数量减少、大小的增加,减少了管理过程的复杂性,进一步减少了瓶颈出现的概率;
    • 非Swap内存:当开启HugePage的时候,HugePage是不会Swap的;
    • 减少Page Table空间负载:在PageTable管理中,每条Page记录是要占据64byte的空间的。也就是说,如果一块50G的RAM,4k大小的PageTable要有80MB左右;

六、参考资料

  • HugePage说明详见:HugePages on Oracle Linux 64-bit (文档 ID 361468.1)
  • AMM & oracle兼容性详见:HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux (文档 ID 749851.1)
  • HugePage大小获取脚本:Oracle Linux: Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration (文档 ID 401749.1)
  • HugePageSize大小:HugePages on Linux: What It Is... and What It Is Not... (文档 ID 361323.1)

这篇关于Redhat:HugePage的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/258057

相关文章

查看redhat的release版本

查看redhat的release版本 # more /etc/redhat-release Red Hat Enterprise Linux AS release 4 (Nahant Update 4) # more /etc/issue # more /proc/version 查看CPU信息 #grep "model name" /proc/cpu

Linux学习笔记之RedHat Enterprise Linux 6.4 使用 Centos 6 的yum源问题

作为一名新手,学习Linux已经一个月了,其间遇到了不少问题,而今天笔者遇到的问题是 #yum install pam-devel #This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Setting up Instal

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

Linux RedHat 利用 ISO镜像文件制作本地 yum源

优质博文:IT-BLOG-CN 【1】创建iso存放目录和挂载目录 [root@desktop ~]# cd /mnt/[root@desktop mnt]# mkdir cdrom 【2】将ISO镜像文件挂载到/mnt/cdrom文件夹下(前提你的CD/DVD中有你的ISO文件-安装时使用的镜像文件) mount /dev/cdrom /mnt/cdrom 【3】编辑/et

VMware RedHat虚拟机磁盘扩容(添加磁盘和扩展磁盘)

前言 自己的电脑上配一个虚拟机还是很有必要的,用起来比双系统方便一点,之前搞了100g的ubuntu没用到,后面重装redhat觉得随便搞个20g就够用了,后面用到之后就遇到磁盘不够用的情况,只能说情况允许的话,磁盘搞大一点。 添加磁盘 1. 编辑虚拟机设置 2.添加 3.选择硬盘 4.选择磁盘类型NVMe 5.创建 6.选择容量 7.选择磁盘存储路径

RedHat运维-Linux文本操作基础-GREP,AWK,SED基础

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考同行的,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 二. awk 1. 使用awk命令,过滤出/etc/passwd文件中,包含有字符串“mail”的所有行,命令为_______________________________; 2. 使用awk命令,过

redhat 7.8修改网卡名称,最佳实践

背景: 因业务需求,需要将新创建的redhat7.8服务器的网卡名称修改为ens160,目前服务器的网卡名称是ens192。  一、修改网卡配置信息: 查看当前网卡信息,并获取到网卡到Mac地址 [root@localhost ~]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKN

16.RedHat认证-Ansible自动化运维(中)

16.RedHat认证-Ansible自动化运维(中) 部署Ansible Ansible的Inventory文件 Inventory文件定义了ansible管理的主机,说白了就是Inventory文件中的内容是记录被管理的主机。Inventory文件分为两种,一种是静态的Inventory文件,一种是动态的Inventory文件。静态的Inventory文件其实非常好理解,就是txt文

CentOS 5(CentOS 6、Redhat 6)服务器配置VNC

一、配置服务器yum源 yum源(本地、华为云、阿里云、网易) 二、使用yum安装vnc服务 1、检查系统是否安装了vnc 和 vncserver, rpm -qa | grep vnc如果没有安装那就行自行下载安装(我这里用yum安装了,vncserver安装需要安装依赖包xorg-x11-fonts-misc) (1)安装vnc yum -y install vnc(2)安装vncse