前言

大页的作用是为了提升内存管理的效率,减少内存管理资源消耗(节省pagetable的开销),特别是对于大内存的情况,同时,由于hugepage相对与4k的页面,它更不容易被交换出内存,因此,它的作用是把shared_buffers内存区域锁定在物理内存,这样就不会使用到swap。Pagetable是为了维护虚拟内存地址和物理内存地址的映射关系。所以,如果对于大内存的shared_buffers,使用大页可以提高性能,同时降低pagetable的大小,因为linux默认是一个个4kb的固定内存进行管理,hugepage默认是2mb的内存管理方式,因为开启大页后会降低pagetable的开销和大小。我们知道在oracle中,如果sga很大也要开启标准大页。它至少要大于共享内存。

操作系统存在两种大页:标准大页与透明大页。两种大页根本的区别:Huge Page 是预分配的,Transparent Huge Pages 是动态分配的。在两者一起使用的情况下,可能会导致性能问题和系统重启,建议禁用Transparent Huge Pages。

配置标准HUGEPAGE

计算hugepage:

获得pid

[kingbase@localhost data]$ head -1 /home/kingbase/cluster/my_project/repmgr_test/kingbase/data/kingbase.pid

3000

计算数据库启动消耗多少内存,指定进程ID:

[kingbase@localhost data]$ pmap 3000 | awk '/rw-s/ && /zero/ {print $2}'

400800K

hugepage大小是2048kb

[kingbase@localhost data]$ grep ^Hugepagesize /proc/meminfo

Hugepagesize: 2048 kB

计算需要多少hugepage:

400800/2048=196 因此至少需要196个大页

分配大页:

执行命令:sysctl -w vm.nr_hugepages=196

添加进系统配置文件以便重启生效:

echo 196 > /proc/sys/vm/nr_hugepages

vi /etc/sysctl.conf

vm.nr_hugepages = 196

让参数生效

sysctl -p

运行sysctl -p 后,可以看到实际大页内存已经分配

查看大页使用情况:

[kingbase@localhost data]$ cat /proc/meminfo | grep huge -i

AnonHugePages: 20480 kB

HugePages_Total: 196

HugePages_Free: 196

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB

AnonHugePages: 表示透明大页,建议关掉。

HugePages_Free:还剩余多少个大页,尚未分配的HugePages数量,真正空闲的页数等于HugePages_Free-HugePages_Rsvd。

Hugepagesize:每个大页的大小为2MB。

关闭透明大页

/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

或者修改/etc/grub.conf

添加

transparent_hugepage=never

numa=off

注:两种大页的区别:HugePage 是预分配的,Transparent HugePages 是动态分配的。

配置数据库参数

大页面的默认行为是尽可能使用它们并且在失败时回到正常页面。要强制使用大页面,可以在kingbase.conf中把huge_pages设置成on。注意此设置下如果没有足够的大页面可用,数据库将会启动失败。一般建议默认值try即可。

下面需要配置kingbase.conf:

huge_pages = try

然后重新启动数据库服务生效

重启数据库后查看大页是否启动:

sys_ctl restart

获得PID

head -1 /home/kingbase/cluster/my_project/repmgr_test/kingbase/data/kingbase.pid

16283

计算数据库启动用了多少内存,指定进程ID

pmap 16283 | awk '/rw-s/ && /zero/ {print $2}'

没有返回结果,说明使用了huge page。

KingbaseES 配置 Hugepage的更多相关文章

  1. 为Linux版本Oracle 11gR2配置HugePage

    HugePage是Oracle在Linux版本下一种性能优化手段.对于共享内存区域(SGA)的数据库系统,Oracle通常都推荐在操作系统层面配置上HugePage,为Oracle实例准备更大的可用共 ...

  2. Linux配置hugepage

    对于内存较大的Oracle数据库server,配置HugePage是非常有必要的,以下是配置Huge的步骤: 我的环境: OS:CentOS release 6.4 (Final) Oracle:11 ...

  3. 配置HugePage

    翻译自https://www.thegeekdiary.com/centos-rhel-67-how-to-configure-hugepages/ 什么是HugePage HugePages是Lin ...

  4. Oracle宕机之PMON (ospid: 248987): terminating the instance due to error 484(另附hugepage配置方法)

    数据库版本:11.2.0.4 RAC环境 操作系统版本:Asianux Server release 7.3 数据库报错分析 接到业务消息,应用无法访问,开发人员查看日志后发现无法连接数据库. 查看数 ...

  5. LINUX下为ORACLE数据库设置大页--hugepage

    在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage. 为什么 使用大页? LINUX内存的默认块大小是4K如果SGA为:1 ...

  6. 转:// LINUX下为ORACLE数据库设置大页--hugepage

    一.在解释什么情况下需要开启大页和为啥需要开启大页前先了解下Linux下页的相关的知识:以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置,共包含1024个目录en ...

  7. 基于OpenNetVM配置环境的发包实践

    参考: openNetVM 基于OpenNetVM配置环境的发包实践 注意:本文并未对OpenNetVM的服务链进行测试,而是在借助OpenNetVM脚本环境的情况下,分别对Pktgen和MoonGe ...

  8. Linux HugePage 特性

    HugePage,就是指的大页内存管理方式.与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效.本文描述了什么是HugePage,以及HugePage的一些特性. ...

  9. 在Linux 64位系统下使用hugepage

    首先,为什么要介绍/使用HugePage? 在步入正题之前,先讲一个非常普遍的数据库性能问题. 众所周知,Oracle数据库使用共享内存(SGA)来管理可以共享的一些资源;比如shared pool中 ...

  10. 转 用好HugePage,告别Linux性能故障

    超过32G 的数据库,可以是使用如下方法配置. ######### Slow Performance with High CPU Usage on 64-bit Linux with Large SG ...

随机推荐

  1. Neutron详解

    一:简介     一.概述 1. 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修改和删除网络 ...

  2. Springboot集成Swagger实战

    1.介绍 本文将通过实战介绍Springboot如何集成swagger2,以用户管理模块为例,实现项目接口文档的在线管理. 项目源码 本文只列出核心部分,详细请看源码: https://gitee.c ...

  3. GDI实现透明菜单位图

    case WM_CONTEXTMENU: { m_hMenu = CreatePopupMenu(); g_BitMap = (HBITMAP)LoadImage(NULL, L"1.bmp ...

  4. Puppeteer介绍

    Puppeteer是什么 Puppeteer是一个Node库,它提供了一个高级API来通过DevTools协议控制Chromium或Chrome. 可以使用Puppeteer来自动化完成浏览器的操作, ...

  5. Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线

    需求   使用QCustomPlot绘制多个目标的北斗运行轨迹图,包括累计绝对位置图和记录时刻的相对位置图.  当前绘制存在问题:    交付客户前,公司内部自测流程发现的问题.  实际预期效果为:  ...

  6. 目标检测 - VOC - xml标注格式

    目标检测 - VOC - xml标注格式 相对其他计算机视觉任务,目标检测算法的数据格式更为复杂.为了对数据进行统一的处理,目标检测数据一般都会做成VOC或者COCO的格式. XML标注格式 < ...

  7. 【Azure事件中心】使用Python SDK(Confluent)相关方法获取offset或lag时提示SSL相关错误

    问题描述 使用Python SDK(Confluent)相关方法获取offset或lag时, 提示SSL相关错误, 是否有更清晰的实例以便参考呢? 问题解决 执行代码,因为一直连接不成功,所以检查 c ...

  8. Frechet Inception Distance

    (以下内容重新更新,主要讲解FID的意义,为何FID能够表示生成图像的多样性和质量,为什么FID越小,则图像多样性越好,质量也越好) 在计算FID中我们也同样使用inception network网络 ...

  9. supervisor的使用与配置说明

    Supervisor 是用 Python 开发的一套通用的 进程管理程序 ,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 一. 安装 1.1 安装 # 根目录下 ...

  10. vetur 和 volar 不要一起装 - vscode插件 已解决

    vetur 和 volar 不要一起装 - vscode插件 会有各种稀奇古怪的问题. 解决方案 利用 vscode 工作区 新建工作区 然后全局 将 volar 禁用工作区,起一个新的vue3项目, ...