倚天平台业务访存及网络延时性能调优实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文主要内容是业务在倚天平台上的性能调优实践,重点基于芯片的 NUMA 特性和一些其他硬件特性,进行访存和网络延时方面的性能调优方法介绍。

1、背景

业务在倚天新平台适配后,性能表现不如预期。本文介绍从芯片、OS 内核、网络 IO及软件各层的瓶颈分析和性能调优方法。

2、NUMA 及访存性能优化

优化措施 1:调整关键进程布局,减少跨 Node 访问内存。
倚天 710 芯片内核由两个 DIE 组成,对应两个 NUMA node。为了避免跨 Node 访问内存导致的性能下降,开启了 NUMA(感知到两个 Node),并通过 cgroup 的方式限制进程使用的 CPU 和内存在同一个 Node, 以避免跨 Node 访问内存,如下图:
image.png

优化措施 2:开启内核 Duptext 特性,防止代码段(.text)跨 Node 访问。
在进行访存性能分析中我们发现关键进程代码段与进程使用的 CPU 和内存是处于两个不同的 Node,存在代码段跨 Node 访问的问题,导致端到端性能下降。
image.png

上图中,运行在 Node1 的进程 process,其代码段在安装部署的流程中已经缓存在 Node0 的 Page Cache 中,而进程实际上绑定在 Node1,因此进程在运行过程中 icache miss 后会到 Node1 的内存中加载代码段数据,极大的降低了运行的效率。

sudo cat /proc/${pid}/numa_maps

通过内核上述可以看到进程使用的内存相关信息,其中 0040000 地址的内存为代码段,N0=xxxxx 表示有 xxxxx 个 Pages 的内存页在 Node0 中(业务进程绑定在 Node1),影响性能。此外,由于内存页在两个 Node 的分配比例不稳定,会导致性能抖动。

有多种方式可以解决此问题,例如在拉起进程之前可以先 drop caches,将进程代码段从 Page cache 中清理出去,然后进程拉起的时候会根据我们的 cgroup 设置将代码段分配在本地内存中。但根据以往的经历,这种方式存在稳定性风险,可能导致系统 hang 住,因此无法落地。 Duptext 特性可以很好的避免出现上述代码段跨 Node 的情况。其原理是根据进程的 CPU/内存亲和设置,将其代码段拷贝到进程的 Local 内存节点,使得进程可以直接访问 Local 内存中的代码段副本。此外,此特性还可以避免进程访问共享库的代码段跨 die 问题。

优化措施 3:开启内核透明大页(包括代码大页)
倚天710 访问远端内存会导致性能下降,需要采取措施进行避免。开启内核透明大页可以有效地降低 TLB miss ,从而提高访存的性能。

3、使能硬件相关特性

使能芯片 SLC stash 特性(类似 Intel DDIO),降低网卡 PCIe 延时,提升网络性能。
业务端到端性能对网络性能非常敏感,网络的耗时在延时中占比较高,因此网络的性能对性能影响很大。通过验证发现使能芯片 SLC cache 有效降低 PCIe 延时,从而降低网络延时。其原理是使能 PCIe 直接写入 L3 cache,使得 CPU 可以在 L3 cache 中命中网卡写入的数据,从而节约 CPU 读写内存的延时。
image.png

4、 其他优化措施

优化措施 1:调整 CPU 频率和内存频率
倚天 710 在 128C 配置下 CPU 频率默认为 2.75GHz,内存频率默认为 4400MHz,这主要是为了功耗和稳定性考虑。但经过初步测试和评估,提高 CPU 频率到 3.0GHz 和内存频率 4800MHz 后,极限压力场景下 CPU 和整机功耗均远小于额定功率。

优化措施 2:使用 Bolt 进行编译优化
BOLT 是一个编译器动态反馈优化工具,主要依据生产环境的实际运行数据,反哺指导编译器对程序代码进一步调整编译优化策略,提高分支预测准确率和指令 Cache 命中率,达到深度调优、提升产品应用核心竞争力目的。
image.png

5、总结与展望

通过上述的优化措施可以看到,业务性能对计算、访存、网络/IO 等都有很高的要求。倚天作为云原生处理器芯片,具有强悍的计算性能,在通过深入移植适配调优后能够更好的发挥 CPU 的性能,使得业务性能得到大幅的提升。

相关文章
|
12天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
114 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
22天前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
123 30
|
2天前
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
日志审计的必要性在于其能够帮助企业和组织落实法律要求,打破信息孤岛和应对安全威胁。选择 SLS 下日志审计应用,一方面是选择国家网络安全专用认证的日志分析产品,另一方面可以快速帮助大型公司统一管理多组地域、多个账号的日志数据。除了在日志服务中存储、查看和分析日志外,还可通过报表分析和告警配置,主动发现潜在的安全威胁,增强云上资产安全。
|
3天前
|
XML JSON 网络协议
【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况
拥塞控制,延时应答,捎带应答,面向字节流(粘包问题),异常情况(心跳包)
|
27天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
67 7
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
185 7
|
1月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
1月前
|
云安全 监控 安全
云计算环境下的网络安全策略与实践
在数字化时代,云计算已成为企业和个人存储、处理数据的重要方式。然而,随着云服务的普及,网络安全问题也日益凸显。本文将探讨如何在云计算环境中实施有效的网络安全措施,包括加密技术、访问控制、安全监控和应急响应计划等方面。我们将通过具体案例分析,展示如何在实际场景中应用这些策略,以保护云中的数据不受威胁。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
1月前
|
数据采集 网络协议 算法
移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。
68 1