KingbaseES 配置 Hugepage
前言
大页的作用是为了提升内存管理的效率,减少内存管理资源消耗(节省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的更多相关文章
- 为Linux版本Oracle 11gR2配置HugePage
HugePage是Oracle在Linux版本下一种性能优化手段.对于共享内存区域(SGA)的数据库系统,Oracle通常都推荐在操作系统层面配置上HugePage,为Oracle实例准备更大的可用共 ...
- Linux配置hugepage
对于内存较大的Oracle数据库server,配置HugePage是非常有必要的,以下是配置Huge的步骤: 我的环境: OS:CentOS release 6.4 (Final) Oracle:11 ...
- 配置HugePage
翻译自https://www.thegeekdiary.com/centos-rhel-67-how-to-configure-hugepages/ 什么是HugePage HugePages是Lin ...
- Oracle宕机之PMON (ospid: 248987): terminating the instance due to error 484(另附hugepage配置方法)
数据库版本:11.2.0.4 RAC环境 操作系统版本:Asianux Server release 7.3 数据库报错分析 接到业务消息,应用无法访问,开发人员查看日志后发现无法连接数据库. 查看数 ...
- LINUX下为ORACLE数据库设置大页--hugepage
在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage. 为什么 使用大页? LINUX内存的默认块大小是4K如果SGA为:1 ...
- 转:// LINUX下为ORACLE数据库设置大页--hugepage
一.在解释什么情况下需要开启大页和为啥需要开启大页前先了解下Linux下页的相关的知识:以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置,共包含1024个目录en ...
- 基于OpenNetVM配置环境的发包实践
参考: openNetVM 基于OpenNetVM配置环境的发包实践 注意:本文并未对OpenNetVM的服务链进行测试,而是在借助OpenNetVM脚本环境的情况下,分别对Pktgen和MoonGe ...
- Linux HugePage 特性
HugePage,就是指的大页内存管理方式.与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效.本文描述了什么是HugePage,以及HugePage的一些特性. ...
- 在Linux 64位系统下使用hugepage
首先,为什么要介绍/使用HugePage? 在步入正题之前,先讲一个非常普遍的数据库性能问题. 众所周知,Oracle数据库使用共享内存(SGA)来管理可以共享的一些资源;比如shared pool中 ...
- 转 用好HugePage,告别Linux性能故障
超过32G 的数据库,可以是使用如下方法配置. ######### Slow Performance with High CPU Usage on 64-bit Linux with Large SG ...
随机推荐
- 全排列II
全排列II 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 题解 /** * @param { ...
- 获取Linux mac地址(centos与ubuntu通用)
ip -a addr| grep link/ether | awk '{print $2}'| head -n 1 获取Linux mac地址(centos与ubuntu通用)
- 【Azure APIM】解决APIM Self-hosted Gateway在AKS上,最开始访问时候遇见的404问题
问题描述 根据APIM官方文档,创建Self-hosted 网关在AKS中( 使用 YAML 将自承载网关部署到 Kubernetes :https://docs.azure.cn/zh-cn/api ...
- 【Azure Redis 缓存】Redis的指标显示CPU为70%,而Service Load却达到了100%。这两个指标意义的解释及如何缓解呢?
问题描述 为什么Redis的指标显示CPU为70%,而Service Load却达到了100%, 如何来解释这两个指标,以及如何来缓解这样的情况呢? 问题回答 CPU指标:该值表示的是用于 Redis ...
- 一文详解云上自动化部署集群管理工具 Nebula Operator
本文首发于 Nebula Graph 公众号:Nebula Operator 开源啦!一文详解这个云上自动化部署集群管理工具 在介绍 Nebula Operator 之前,让我们先来了解下什么是 Op ...
- Linux 多进程服务配置 systemd
目录 Linux 多进程服务配置 systemd sysvinit和systemd 多进程保活 创建配置文件(设定重试次数) 多进程服务管理 链式启动(服务依赖) 指定关闭进程方式 - ExecSto ...
- 小程序开发:接入腾讯云的人像动漫化api接口
接口如下: 图片的传参方式有两种,一种是传图片的base64,一种是图片url: 我打算免费版使用base64,如果付费用户支持永久存储历史的图片记录(图片存储到腾讯云对象存储中). 前端框架我用的u ...
- Java 关于抽象类匿名子类
1 package com.bytezreo.abstractTest; 2 3 /** 4 * 5 * @Description Abstract 关键字使用 6 * @author Bytezer ...
- [.Net]使用Soa库+Abp搭建微服务项目框架(二):面向服务体系的介绍
上一章我们建立了一个典型的面向领域设计的Abp小项目,如果按照常规的开发方式,会遇到什么问题呢? 先来完善一下这个小项目,在定义好各实体类后,运行Miguration并向数据库里写入一些初始数据. ...
- nginx-authenticate.conf Nginx配置 新增长链接支持代理
nginx-authenticate.conf Nginx配置 新增长链接支持代理 新增代码 proxy_set_header Connection ""; proxy_http_ ...