首页 > 其他分享 >KingbaseES 配置 Hugepage

KingbaseES 配置 Hugepage

时间:2023-03-02 16:11:52浏览次数:39  
标签:大页 196 配置 kingbase HugePages Hugepage 内存 hugepage KingbaseES

前言

大页的作用是为了提升内存管理的效率,减少内存管理资源消耗(节省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。

标签:大页,196,配置,kingbase,HugePages,Hugepage,内存,hugepage,KingbaseES
From: https://www.cnblogs.com/kingbase/p/16998997.html

相关文章

  • KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试
    本次部署未使用securecmd/kbha工具,无需普通用户到root用户的互信。一、环境准备1、创建OS用户建立系统数据库安装用户组及用户,在所有的节点执行。root用户登陆服务器,创......
  • KingbaseES 服务器运行参数配置
    Kingbase服务器运行参数配置说明:KingbaseES数据库中,服务器运行参数配和需改有多种方式和注意事项,根据不同的分类配置,修改配置方式不同。关于服务器参数分类请参照【Kin......
  • KingbaseES V8R6集群运维系列 --sys_monitor.sh stop关闭集群分析
    案例说明:对于KingbaseESV8R6集群关闭整个集群通过执行‘sys_monitor.shstop’命令完成,本案例解析了在执行‘sys_monitor.shstop’后,数据库的关闭方式及数据库访问带来......
  • KingbaseES 服务器运行参数分类
    Kingbase服务器运行参数分类说明:KingbaseES数据库中,服务器运行参数分为多种类型,有些是系统初始化时设置,有些可以在系统运行时设置,有些可以在运行session中进行直接设置......
  • KingbaseES V8R3 运维案例 -- sys_dump备份故障“SYS_MAC_POLICY_ENFORCEMENT”
    ​案例说明:在KingbaseESV8R3执行sys_dump时出现“ERROR:permissiondeniedforrelationSYS_MAC_POLICY_ENFORCEMENT”故障,此前做过一些安全相关的配置,比如修改syssa......
  • KingbaseES sys_restore 恢复表时默认不包括表上的索引
    前言最近碰到一个案例,在使用sys_restore恢复指定表时,默认不恢复表上的索引,如果想恢复需要单独指定。测试过程[](javascript:void(0)......
  • KingbaseES函数三态
    理解函数的三态1VOLATILE:volatile函数没有限制,可以修改数据(如执行delete,insert,update),使用同样的参数调用可能返回不同的值.STABLE:不允许修改数据,PG8.0以......
  • Spring Java配置
    从Spring4开始可以通过Java配置方式取代XML配置.这也是SpringBoot配置的方式.java配置方式是通过@Configuration和@Bean这两个注解实现.1.1@Configuration和@Bean ......
  • Java Web程序设计——MyEclipse的安装、配置
    JavaWeb程序设计——MyEclipse的安装、配置具体安装、配置过程请参考下面的博客MyEclipse安装、配置、测试——博客园原博客中所需文件均存放于百度网盘中,如下......
  • .net 6.0 swagger的安装和配置
      nuget安装包:Swashbuckle.AspNetCore.SwaggerGennuget安装包:Swashbuckle.AspNetCore.SwaggerUI   usingMicrosoft.OpenApi.Models;usingXiaowu_Ship.AutoM......