首页 > 其他分享 >GBase 8c NUMA绑核调优实操

GBase 8c NUMA绑核调优实操

时间:2024-09-20 11:23:55浏览次数:3  
标签:Node 核调 数据库 线程 8c 91 优实 CPU 96

NUMA优化技术是针对数据库在NUMA架构CPU上运行时出现的资源消耗不均、并发场景下远端Node时延较高等问题进行优化的技术。GBase 8c数据库通过设置执行线程与Node节点的亲和度,可以将线程绑定在指定的CPU核心运行,从而避免跨Node调度,降低远端访问时延,提升数据库对外处理性能。同时,线程通过Node分配本地内存,也避免了某个Node节点内存耗尽而其他Node节点内存空闲的情况,充分使用CPU、内存等资源,从而提升数据库对外处理性能。

在多核CPU中合理调度线程,可以获得更高的性能。这当中,每个线程处理的任务优先级是不一样的,对于要求实时性比较高的线程或者是主线程,对于这种线程,我们可以在创建线程时指定其绑定到某个CPU核上,以后这个核就专门处理该线程。这样可以使得该线程的任务可以得到较快的处理,特别是和用户直接交互的任务,较短的响应时间可以提升用户的体验感。

目前GBase 8c支持在ARM服务器平台进行绑核操作。绑核参数设置步骤如下:

(1)安装GBase 8c数据库(这里就不提了)

(2)停止数据库,执行gha_ctl stop all -l http://dcs:2379。这个dcs IP如果不清楚的话,翻出安装yml文件看看。

(3)使用gs_guc工具修改数据库端口、IP等。

(4)使用gs_guc工具设置如下参数。

advance_xlog_file_num = 100
numa_distribute_mode = 'all'
thread_pool_attr = '464,4,(cpubind:1-27,32-59,64-91,96-123)'
xloginsert_locks = 16
wal_writer_cpu=0
wal_file_init_num = 20
xlog_idle_flushes_before_sleep = 500000000
pagewriter_sleep = 10ms

(5)执行如下命令以绑核方式启动服务端数据库。

numactl -C 1-27,32-59,64-91,96-123 gaussdb --single_node -D /data1/gaussdata  -p 3625 &

其中0核用于wal_writer、1-27、32-59、64-91、96-123表示使用111个核运行TPC-C程序,其余的16个核用来处理服务端的网络中断。

(6)执行如下命令,将客户端CPU的48个核与网卡中断队列进行绑定:

sh bind_net_irq.sh 48

服务器端绑核设置

(1)业务进程在运行过程中,硬件上报的网络中断会导致频繁的上下文切换,严重影响效率,因此需要将网络中断和业务分开绑定在不同的核上运行

(2)当前数据库中引入了线程池机制,即数据库启动时,线程池将创建指定数目的线程来服务,线程在创建时会进行绑核,因此需要将网卡的绑核信息通过 GUC 参数传入,方便运行期间绑核设置。以128核为例,对应参数如下图

GBase 8c NUMA绑核调优实操_数据库

其中线程总数为(cpu总数128 - 处理网络的cpu数目16)* 每个核上线程数(经验值推荐7.25) = (128-16)*7.25 = 812,numa节点数为4,处理中断的核数为16。

这个位置cn和dn可以分开绑核,例如环境是96核,网卡中断绑核16

gs_guc reload -Z coordinator -N all -I all  -c "thread_pool_attr='240,4,(cpubind:1-19,24-43,48-67,72-91)'"
gs_guc reload -Z datanode -N all -I all  -c "thread_pool_attr='320,4,(cpubind:1-29,24-43,48-67,72-91)'"

其中每个核上的线程数可以适当调整看下效果。
TPC-C客户端绑核设置

客户端通过 numactl 将客户端绑定在除网卡外的核上,下图以 128 核环境举例,共80个核用于处理业务逻辑,剩余48个核处理网络中断。

GBase 8c NUMA绑核调优实操_数据库_02

对应TPC-C测试程序应该使用为:

numactl –C 0-19,32-51,64-83,96-115 ./runBenchmark.sh props.gbase




原文链接:

https://www.gbase.cn/community/post/3994

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

标签:Node,核调,数据库,线程,8c,91,优实,CPU,96
From: https://blog.51cto.com/u_17026136/12063188

相关文章

  • GBase8c使用wal2json逻辑复制槽
    1. 参数设置要想使用wal2json逻辑复制,要设置以下参数:wal_level=logicalenable_slot_log=onwal_level设置为logical,表示WAL日志支持逻辑复制。如果需要进行备机解码,要在对应的主机上设置enable_slot_log为on。 2. 逻辑复制槽的使用2.1 创建逻辑复制槽下面来创建一个逻辑复制......
  • GBase 8c 兼容性-oracle分区语法
    GBase8c分布式版本支持兼容oracle分区表功能,支持二级分区,9种分区组合,interval分区。分区明显如下:hash分区sql示例,与oracle写法一致。--一级hash分区droptableifexistsmea_hashcascade;createtablemea_hash(city_idint,logdatetimestamp,idint)partition......
  • 南大通用GBase 8c扩缩容失败故障定位方法
    南大通用GBase8c是一款多模多态分布式数据库,可进行横向水平的扩张和缩减,即支持扩容和缩容操作。本文介绍当扩缩容故障时如何进行问题定位。正常来讲,使用自带的gha_ctl工具进行扩缩容正常会分输出两个success。第一个success是检查输入参数是否正确,数据目录是否非空。在这一步失败......
  • 南大通用GBase 8c系统视图分析SQL执行时间
    南大通用GBase8c是一款多模多态数据库,支持主备式、分布式部署方式。对于故障和性能分析,内部提供丰富的工具和系统表或系统视图支撑实现。本文将介绍如何通过dbe_perf.statement系统视图分析SQL执行时间。1、概述dbe_perf.statement实际上是一个视图,这个视图实际执行的是get_inst......
  • 南大通用GBase 8c增量备份实践
    在当今信息化社会,数据的重要性不言而喻。对于企业来说,保护数据的完整性和可用性至关重要。数据库作为数据存储的核心组件,其备份与恢复策略的制定和实施是保障数据安全的关键一环。本文将详细介绍南大通用GBase8c数据库的增量备份实践操作,帮助读者掌握如何高效、可靠地进行数据备份......
  • 南大通用GBase 8c系统视图分析SQL执行时间
    南大通用GBase8c是一款多模多态数据库,支持主备式、分布式部署方式。对于故障和性能分析,内部提供丰富的工具和系统表或系统视图支撑实现。本文将介绍如何通过dbe_perf.statement系统视图分析SQL执行时间。1、概述dbe_perf.statement实际上是一个视图,这个视图实际执行的是get_inst......
  • Springboot高校后勤保障系统8c549(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着高等教育的普及与高校规模的扩大,高校后勤保障工作日益复杂且重要。作为支撑高校教学、科研及师生生活的基础,后勤保障系统的效率与......
  • 【漏洞复现】用友 U8CRM /pub/help.php 任意文件读取漏洞
    免责声明:        本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规......
  • 一次Java性能调优实践【代码+JVM 性能提升70%】
    这是我第一次对系统进行调优,涉及代码和JVM层面的调优。如果你能看到最后的话,或许会对你日常的开发有帮助,可以避免像我一样,犯一些低级别的错误。本次调优的代码是埋点系统中的报表分析功能,小公司,开发结束后,没有CodeReview环节,所以下面某些问题,也许在CodeReview环节就可以避免......
  • 一次Java性能调优实践【代码+JVM 性能提升70%】
    这是我第一次对系统进行调优,涉及代码和JVM层面的调优。如果你能看到最后的话,或许会对你日常的开发有帮助,可以避免像我一样,犯一些低级别的错误。本次调优的代码是埋点系统中的报表分析功能,小公司,开发结束后,没有CodeReview环节,所以下面某些问题,也许在CodeReview环节就可以避免。......