飞腾性能调优

NUMA
21 世纪以来随着科技大步想抢进步, 信息时代来临, 5G、 云计算、 物联网等技术蓬勃发
展, 而这一切都离不开大量数据的交互以及庞大的运算, 在这其中, 电脑的“心脏”----CPU,
起到了扮演着举足轻重的作用, 但是功耗和冷却两大限制极大的影响了单核算力的发展, 为
了满足这些需求, 多核架构成为最重要的演进方向, 其中 ARM 在多核和功耗方面一直走在
世界的前列。
最早的多核处理器多使用 SMP(Symmetric Multi-Processor, 即: 对称多处理器结构) 技
术, 如图 2-1 所示, 对称多处理器结构, 是指服务器中多个 CPU 对称工作, 无主次或从属关
系, 各 CPU 共享相同的物理内存, 每个 CPU 访问内存中的任何地址所需时间是相同的, 因
此 SMP 也被称为一致存储器访问结构(UMA: Uniform Memory Access)
SMP 服务器的主要特征是共享, 系统中所有资源(CPU、 内存、 I/O 等)都是共享的。 也正
是由于这种特征, 导致了 SMP 服务器的主要问题, 那就是它的扩展能力非常有限。
对于 SMP 服务器而言, 每一个共享的环节都可能造成 SMP 服务器扩展时的瓶颈, 而最
受限制的则是内存。 由于每个 CPU 必须通过相同的内存总线访问相同的内存资源, 因此随着
CPU 数量的增加, 内存访问冲突将迅速增加, 最终会造成 CPU 资源的浪费, 使 CPU 性能的
有效性大大降低。
由于 SMP 在扩展能力上的限制, 人们开始探究如何进行有效地扩展从而构建大型系统的
技术, NUMA 就是这种努力下的结果之一, 利用 NUMA 技术, 可以把几十个 CPU(甚至上百
个 CPU)组合在一个服务器内
NUMA, 即非一致存储访问结构(NUMA: Non-Uniform Memory Access), 是一种分布式
存储器访问方式, 处理器可以同时访问不同的存储器地址, 大幅度提高并行性。 NUMA 系统
的节点通常是由一组 CPU 和本地内存组成。 由于每个结点都有自己的本地内存, 因此全系统
的内存在物理上是分布的, 每个结点访问本地内存和访问其它结点的远地内存的延迟是不同
的。
每个核访问内存的时间取决于内存相对于处理器的位置, 访问本地内存(本节点内) 会
更快一些。 Linux 内核从 2.5 版本开始支持 NUMA 架构, 现在的操作系统也提供了丰富的
工具和接口, 帮助我们完成就近访问内存的优化和配置。 所以, 使用飞腾处理器所实现的计
算机系统, 通过适当的性能调优, 既能够达成很好的性能, 又能够解决 SMP 架构下的总线瓶
颈问题, 提供更强的多核扩展能力, 以及更好更灵活的计算能力
 

性能调优五步法
性能优化通常可以通过如下表 2-1 五个步骤完成。
表 2-1 性能优化的通用步骤

序号 步骤 说明
1 建立基准 在进行优化或者开始进行监视之前, 首先要建立一个基准数
据和优化目标。 这个基准包括硬件配置、 组网、 测试模型、
系统运行数据(CPU/内存/IO/网络吞吐/响应延时等) 。 我们
需要对系统做全面的评估和监控, 才能更好的分析系统性能
瓶颈, 以及实施优化措施后系统的性能变化。 优化目标即是
基于当前的软硬件架构所期望系统达成的性能目标。 性能调
优是一个长期的过程, 在优化工作的初期, 很容易识别瓶颈
并实施有效的优化措施, 优化成果往往也很显著, 但是越到
后期优化的难度就越大, 优化措施更难寻找, 效果也将越来
越弱。 因此我们建议有一个合理的平衡点。
2 压力测试与
监视瓶颈
使用峰值工作负载或专业的压力测试工具, 对系统进行压力
测试。 使用一些性能监视工具观察系统状态。 在压力测试期
间, 建议详细记录系统和程序的运行状态, 精确的历史记录
将更有助于分析瓶颈和确认优化措施是否有效。
3 确定瓶颈 压力测试和监视系统的目的是为了确定瓶颈。 系统的瓶颈通
常会在 CPU 过于繁忙、 IO 等待、 网络等待等方面出现。
需要注意的是, 识别瓶颈是分析整个测试系统, 包括测试工
具、 测试工具与被测系统之间的组网、 网络带宽等。 有很多
“性能危机”的项目其实是由于测试工具、 测试组网等这些很
容易被忽视的环节所导致的, 在性能优化时应该首先花一点
时间排查这些环节。
4 实施优化 确定了瓶颈之后, 接着应该对其进行优化。 本文总结了笔者
所在团队在项目中所遇到的常见系统瓶颈和优化措施。 我们
需要注意的是, 系统调优的过程是在曲折中前进, 并不是所
有的优化措施都会起到正面效果, 负优化也是经常遇到的。
所以我们在准备好优化措施的同时, 也应该准备好将优化措
施回滚的操作指导。 避免因为实施了一些不可逆的优化措施
导致重新恢复环境而浪费大量的时间和精力。

你可能感兴趣的:(计算机基础,服务器,运维)