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 ...
随机推荐
- python中矩阵合并、拼接、组合
1 numpy数组 1.1 append() import numpy as np a=np.array([[1,3],[5,7]]) b=np.array([[2,4],[6,8]]) c=np.a ...
- String--getline()
#include <string> #include <sstream> #include <iostream> int main() { std::wstring ...
- linux和unix中的IO模型总结
高性能网络IO编程模型 一.I/O模型简介 在一个 linux 操作系统中,一般分为用户空间和内核空间. 用户空间一般就是我们进行应用程序编程的地方. 内核空间就是 linux 操作系统自己运行的一些 ...
- 常用Windows控制台命令
查看网络连接信息 1.查看所有网络连接 netstat -ano -a 显示所有连接和侦听端口. -n 以数字形式显示地址和端口号. -o 显示拥有的与每个连接关联的进程 ID. 详细的使用方式使用n ...
- JS内存爆破问题
原理 检测到调试,格式化等,疯狂的在js文件,或者html中进行读写,cookie重写追加,字节追加,导致内存不足够,卡死 内存爆破,指js通过死循环/频繁操作数据库(包括cookie)/频繁调取hi ...
- 【开发工具】Linux 服务器 Shell 脚本简单应用(MySql备份等脚本)
上一章介绍完基础[开发工具]Linux 服务器 Shell 脚本简单入门,这一章结合实际运用 对于 do while if else等流程控制基础不再说明,和编程语言大同小异,可以在实际的脚本使用中学 ...
- 【Azure 事件中心】如何查看事件中心的消息中具体报文内容呢?
问题描述 如何查看事件中心的消息中具体报文内容呢? 问题解答 正常情况是通过 Event Hub 的消费端获取消息进行处理查看,但是没有客户端代码的情况下,也可以通过微软的默认客户端Service B ...
- 主流开源分布式图计算框架 Benchmark
本文由美团 NLP 团队高辰.赵登昌撰写,首发于 Nebula Graph Community 公众号 前言 随着近年来数据的爆炸式增长,如何高效地分析处理数据,在业界一直备受关注.现实世界中的数据往 ...
- DataX 离线跨网场景的实施配置
配置仅限于跨不同网情况,网络互通情况方案和配置会更简单一点 内网A:MySql数据转换成Csv { "job": { "setting": { "sp ...
- 关于STM32Fx部分引脚不可以正常输出高低电平的解决办法(不可以正常使用)
一.概述 在一次电路版测试中,发现stm32的部分引脚不可以正常的输出高低电平,刚开始以为是板子没有焊接好所以导致的经过多次的测试,发现电路版没问题.当时就想不清楚了,后面就问学长,还有实验室的学长一 ...