openGauss鲲鹏多核优化解读

本文深入解析openGauss数据库如何针对鲲鹏服务器的NUMA架构进行多核优化,包括线程绑核、NUMA化数据结构改造、数据分区、并发控制算法调整和借助ARM原子指令,以提升并发性能和降低访问冲突,实现在128核场景下达到150万tpmC的高性能。
摘要由CSDN通过智能技术生成

从集成电路诞生到现在,CPU主要经历了三个发展阶段,第一阶段是提升CPU的主频。在集成电路问世6年后,摩尔就提出了摩尔定律,预言了芯片上集成的晶体管数量将每两年翻一番。摩尔定律不是自然定律,但半导体芯片发展的事实证明,摩尔的预言是准确的。芯片的技术进步主要受益于两个方面:制程变小和硅片变大。但当芯片工艺规格小于7nm的时候,就会出现量子隧穿效应,芯片量产变得困难,导致制造成本急剧上升。

第二阶段是增加核数,在单核CPU频率无法继续增加的情况下,可以通过增加CPU的核数来提升算力。但CPU只是逻辑计算单元,必须把内存中的程序和数据加载到CPU中才能进行计算。所有CPU核都是通过共享一个北桥来读取内存,随着核数的快速发展,北桥在响应时间上的性能瓶颈越来越明显。

第三阶段是CPU核NUMA化,为了解决北桥中读取内存的部分即内存控制器的瓶颈,可以把内存平均分配在各个die上,但这导致了不同CPU核访问不同内存时延的非对称性。原因是虽然内存直接attach在CPU上,但当CPU访问自身直接attach内存对应的物理地址时(即Local Access),响应时间较短。如果访问其他CPU attach的内存数据(即Remote Access),就需要通过inter-connect通道访问,响应时间就会变慢。这也是NUMA(Non-Uniform Memory Access)名称的由来。在NUMA架构下,NUMA Node的处理器和内存块的物理距离被称为NUMA距离,通过numactl工具可以查询到CPU访问的距离信息。以鲲鹏服务器为例,图示如下:

CPU NUMA化给服务器带来澎湃算力的同时,也给软件开发带来了很大挑战。从整个IT软件栈来看,首先需要对NUMA化进行支持的是操作系统,现在通用的企业操作系统是Linux操作系统。在NUMA出现后,Linux也提供了针对性的优化方案,优先尝试在请求线程当前所处的CPU的Local内存上分配空间。如果local内存不足,优先淘汰local内存中无用的Page。但Linux提供的NUMA内存使用方式并不适合数据库,因为数据库是一个数据密集型高并发的应用,内部有很多的内核数据结构&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值