风控系统调优实践
发表于 2025/09/30
0
作者 | 朱勇
1 背景介绍
1.1 环境信息
硬件环境信息
类别 |
ARM |
ARM |
CPU |
鲲鹏920 5225F处理器(32core*2),3.0GHz |
鲲鹏920 5220处理器(32core*2),2.6GHz |
内存 |
8*32G |
8*32G |
磁盘 |
SSD |
HDD |
网卡 |
CX5 25GE |
CX5 25GE |
1.2 系统架构
风控系统-委托端的部署如下图所示。
客户端的请求到达前置系统后发送给风控系统,风控系统验证完毕后返回验证结果给前置系统,前置系统再将请求继续发送给交易系统,交易系统再将请求发送给报盘处理系统。
在风控系统内部,主要进行一些风控指标的验证,但在测试时不验证任何指标,只执行固定的架构业务代码,并涉及少量的写日志操作。
2 性能瓶颈分析
2.1 CPU
使用top命令观察:
从top中可以看到,风控系统使用的核比较少,且CPU资源使用率也比较低,根据经验,使用忙等机制可以获得不错的性能,因此使用了poll机制,使用后CPU使用率为100%,瓶颈主要为单核瓶颈。
抓取应用火焰图:
火焰图中存在部分写文件的热点,经过了解后得知这是日志记录导致的,在配置文件中关闭日历记录后,可以获得10us左右的性能提升。在生产环境中,使用异步机制来提升性能。
微架构分析结果如下:
从微架构分析中可以看到前端瓶颈占比较大,后续可以考虑使用pgo进行编译深度优化业务代码。
2.2 内存
使用free -h观察内存大小,发现鲲鹏5220上只有32G(2*16G)内存,不但内存性能差,还会导致跨NUMA访问内存的问题,与客户沟通后已扩容到256G(8*32)内存。
2.3 磁盘
在开启日志记录的情况下,使用iostat可以看到有几秒一次的磁盘写入。
结合blktrace的分析,瓶颈主要在磁盘调度阶段,不在IO硬件层面,如果不能使用异步写机制规避IO瓶颈,则需结合业务代码优化磁盘调度瓶颈。
2.4 网络
使用sar命令观察网卡资源情况。
从结果中没有观察到明显瓶颈,但默认的网络数据包收发会经过内核态,使用gazelle等类似的方案可以将网络数据包全部转移到用户态进行处理,提高收发包效率。
3 性能调优实践
3.1 BIOS调优
-
关闭SMMU:BIOS路径为“Advanced > MISC Config”,将“Support Smmu”设置为“Disable”。SMMU为虚拟化特性支持,虚拟化场景下开启,非虚拟化场景下关闭可以获取更好的性能。
-
开启CPU预取:BIOS路径为“Advanced > MISC Config”,将“CPU Prefetching Configuration”设置为“Enabled”。对于数据比较集中的场景,预取的命中率高,适合打开CPU预取,反之需要关闭CPU预取。
-
电源使用性能模式:BIOS路径为“Advanced -> Performance Config” ,将“Power Policy”设置为“Performance”。有性能模式和节能模式两个选项,节能模式会降低CPU运行功耗,导致CPU降频,性能变差。
-
Max Payload Size:BIOS路径为“Advanced -> PCIE Config->cpu0/1 PCIe Configuation->cpu0/1 XX portXX-> Max Payload Size”,将其设置为512B。如果不确定自己用的是哪个PCIE PORT的时候,可以把所有的PCIE PORT的MaxPayload都设置成512B。
3.2 OS调优
-
tuned模式设置:将tuned模式设置为network-latency,可以提升网络时延性能。执行命令如下。
systemctl start tuned
Tuned-adm profile network-latency
-
进程绑核:在前置系统和风控系统的启动脚本中添加numactl -c 0参数,将进程核绑到NUMA0上,保证进程不会出现跨NUMA访问内存的情况。
3.3 网络调优
使用VMA(Mellanox Messaging Accelerator,Mellanox 消息加速器)网络加速可以提升网络收发包效率,根据VMA官网教程安装好VMA后,在进程启动命令前面添加如下命令。
VMA_SPEC=latency LD_PRELOAD=libvma.so VMA_SELECT_POLL=100000
3.4 磁盘调优
关闭日志记录:在生产环境中该功能不可以直接关闭,可以通过改为异步写或者调整磁盘调度策略来进行优化。
4 调优后效果
处理器类型 |
调优前风控上行时延 |
调优后风控上行时延 |
调优前全链路时延 |
调优后全链路时延 |
鲲鹏920 5220处理器 |
57us |
28us |
209us |
105us |
鲲鹏920 5225F处理器 |
69us |
39us |
243us |
110us |