---
title: 鲲鹏性能调优实践——XXX估值系统-官方技术文章-鲲鹏社区
description: 通过绑核、分离部署和热点分析等调优手段，将XXX估值系统运行时间从79分钟优化至63分钟，性能提升20.2%。
keywords: 鲲鹏性能调优实践,XXX,估值系统,官方技术文章,鲲鹏社区,介绍,环境信息,调优实践,应用和数据库
url: https://www.hikunpeng.com/developer/techArticles/20251205-10?envFlag=1
section: (其他)
---

# 鲲鹏性能调优实践——XXX估值系统-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251205-10?envFlag=1
描述: 通过绑核、分离部署和热点分析等调优手段，将XXX估值系统运行时间从79分钟优化至63分钟，性能提升20.2%。
关键词: 鲲鹏性能调优实践,XXX,估值系统,官方技术文章,鲲鹏社区,介绍,环境信息,调优实践,应用和数据库

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

鲲鹏性能调优实践——XXX估值系统

鲲鹏性能调优实践——XXX估值系统

案例分享DevKit性能调优

发表于 2025/12/05

0

作者 | 李金东

# 1、介绍

XXX估值系统采用java应用和数据库，原本在一台A环境上运行的时间在79分钟，客户诉求是能优化到63分钟内。

本文将展示通过绑核、优化编译参数、调整内存频率、热点分析和分离部署等调优手段，优化系统运行时间的案例。

# 2、环境信息

| 服务器 | 架构 | CPU | kernel |
| --- | --- | --- | ---|
| 鲲鹏服务器 | Arm架构 | Kunpeng 920 72xxZ处理器 | 4.19.90-89.11.v2401.ky10.aarch64 |

# 3、调优实践

## 3.1 应用和数据库同一环境调优

- 都运行在A服务器环境

### 3.1.1绑核

因为该环境开了超线程，应用和数据库的线程都跑在0-255核上，而且并发较大，cpu切换频率也会相应增加，而numa之后，node之间的读取内存数据的物理距离依然存在，所以增加应用和数据库启动的绑核操作，能让线程减少cpu切换和内存读取效率，减少跨numa的node的问题。执行命令：

```
numactl -c 0-127 ./application, numactl -c 128-255 ./dmserver start 
```

绑核后，总体时间优化到68分钟。

### 3.1.2 编译参数

因为达梦数据库底层语言是C，考虑通过mtune=tsv和-march=armv8-a等鲲鹏亲和参数对达梦数据库进行优化，需要使用gcc9.1.0以上的编译器进行编译，因为当前使用的内核是4.19.90-89.11.v2401.ky10.aarch64，和数据库侧已沟通，在4.19.90-89.11.v2401.ky10.aarch64内核版本上便携gcc10.3.1，同时使用gcc10.3.1对数据库进行编译，增加mtune=tsv和-march=armv8-a亲和参数。

说明：C/C++代码在编译时，GCC编译器将源码翻译成CPU可识别的指令序列，写入可执行程序的二进制文件中。CPU在执行指令时，通常采用流水线的方式并行执行指令，以提高性能，因此指令执行顺序的编排将对流水线执行效率有很大影响。通常在指令流水线中要考虑：执行指令计算的硬件资源数量、不同指令的执行周期、指令间的数据依赖等等因素。我们可以通过通知编译器，程序所运行的目标平台（CPU）指令集、流水线，来获取更好的指令序列编排。在GCC 9.1.0版本，支持了鲲鹏处理器所兼容的ARMv8指令集、tsv110流水线。

### 3.1.3 磁盘

对磁盘的配置进行查看，属于nvme磁盘，调度策略为none，符合nvme盘的使用。

说明：因为固态硬盘支持随机读写，所以固态硬盘支持最简单的调度策略，性能最好。

### 3.1.4 数据库热点采集与分析

#### 1. Devkit热点采集工具：

使用Devkit的hotspot、topdown，鲲鹏系统性能方法论分析工具以及block sample工具对数据库进行采集。

说明：1. hotspot工具：分析C/C++程序代码， 找出性能瓶颈点，获得对应的热点函数，支持通过火焰图展示函数的调用关系，给出优化路径。详见：https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0065.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0065.html)2. topdown工具：基于ARM PMU（Performance Monitor Unit）事件，获得指令在CPU流水线上的运行情况，可以帮助用户快速定位当前应用在CPU上的性能瓶颈，用户可以有针对性地修改自己的程序，以充分利用当前的硬件资源。详见：https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0033.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0033.html)3. 鲲鹏系统性能方法论分析工具：鲲鹏系统性能方法论分析工具支持一键采集多维度性能数据，包括Miss、访存统计、NUMA、微架构、Miss Latency、热点函数、CPU usage、NIC bandwidth、I/O、Memory usage、Softirq、PCIe、PA2Ring、Ring2PA数据，支持指令类别分析。采集的数据按照时间线对齐，从业务层到芯片层图形化展示资源使用情况。详见：https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0167.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0167.html)4. blockedSample工具：可对进程调用栈offcpu和oncpu进行分析，得出offcpu调用栈和oncpu调用栈，根据调用栈优化性能瓶颈。详见：https://atomgit.com/openeuler/libkperf [了解详情](https://atomgit.com/openeuler/libkperf)

#### 2. perf性能分析工具

使用perf对数据库热点进行采集，通过perf report命令查看热点。采集命令如下：

```
perf record -e cycles -g -p {pid}
```

最终发现热点集中在insert和nupd2_xxx操作上。

结论：由于开了超线程，实际java应用和数据库使用的是不同逻辑核，但是是同一物理核，考虑将应用和数据库在不同环境进行部署。

## 3.2 应用与数据库分开部署

- 应用在B环境运行， 数据库在A环境运行

### 3.2.1 java热点采集与分析

通过Devkit的java性能分析工具java-perf对java应用侧采集火焰图。

由于使用的jdk是bisheng jdk，所以需要对JAVA_HOME和CLASSPATH重新设置：

```
export JAVA_HOME=/opt/XXXX/bisheng-jdk1.8.0_412
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
```

发现在核算和统计环节，涉及大量的内存操作热点：在核算环节中，某一热点函数getXXX的占比超过93%；在统计分析环节中，一个热点函数getYYY的占比在97%以上。已和应用侧反应该问题，但目前已和入新代码，应用侧在老应用上做更改较难。

说明：Devkit java-perf工具：Devkit cli命令行工具的一部分，可通过其中java-perf进行java进程的热点采集。使用命令：./devkit hotspot -p {pid}详见：https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0069.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/KunpengDevKitCli_0069.html)

### 3.2.2 鲲鹏硬件检查

对两个环境通过Devkit的鲲鹏硬件检查工具kspect对硬件进行检测，发现：

1）B环境内存条配置为32G*32，ddr4，最大频率3200 MT/s, 内存当前频率2666 MT/s（内存条的插法存在降频现象）

2）A环境64G*16，ddr5，最大频率5600 MT/s, , 当前频率4800 MT/s，考虑到热点集中在内存操作，内存频率应有较大影响，需要调整内存频率。

说明：Devkit 鲲鹏硬件检查工具：轻量准确的鲲鹏健康检测工具，可快速收集服务器硬件的各类信息，包括CPU、内存、网络、存储、PCIe、虚拟机、传感器、软件和模块依赖等；并给出一定的调优建议。该工具支持在物理机、虚拟机和容器上使用。执行命令：./kspect all详见：https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/diagnosis/KunpengDevKitCli_0153.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/diagnosis/KunpengDevKitCli_0153.html)

### 3.2.3 网络延时

因为两者部署在不同服务器上，存在网络传输成本，在同一个环境上网络延迟较低，而A环境 ping B环境网络延迟较高，导致性能劣化。

结论：该种部署方式下，最终运行时长变成84分钟，遂考虑java和应用分开在不同环境部署的方式。

## 3.3 java和应用分开部署

- java和应用分开部署，都在A服务器运行

Numa，数据库超线程，应用服务器开启超线程，应用和数据库都绑核运行，最终总体时间最优可达63分钟。

结论：该种部署方式下可以达到最优性能效果

# 4、优化结果

| 测试用例 | 未调优前 | 调优后 | 性能提升 |
| --- | --- | --- | ---|
| 1年数据 | 79min | 63min | 20.2% |

本页内容
