Linux工具系列】专栏是为开发者提供Linux工具在内存管理、调度优化、CPU等方面的优质清单。本期是带来NumaTOP工具,通过对基础概念和使用方法的介绍和分享,让您全方位了解NumaTOP的特性及使用场景。
1 什么是NumaTOP?
1.1 概念
进程性能分析的过程中,非一致性内存访问(NUMA)是一个很重要的指标。并且NUMA性能分析具有很大挑战性。
Linux提供了一个NUMA观察工具:numastat,能够显示本地远端节点内存使用比例、命中情况、远程内存分配等信息。numastat仅关注内存分配,无法给出CPU的实时内存流量。numastat虽然能从进程的角度查看内存在不同节点上的分配,但效果并不直观,无法定位到性能差的具体位置。
NumaTOP是一个观察工具,用于对NUMA系统上进程/线程运行时内存访问的跟踪和分析,来描述当前进程与线程的NUMA行为,并确定与NUMA相关的性能瓶颈所在的位置。
1.2 工具对比
2 基本使用
2.1 NUMA分析中的典型步骤
1) 查找内存局部性最差的进程,即访问远端NUMA节点内存占比最高的进程。
2)确定当前进程运行在哪个NUMA节点。
3) 在当前进程虚拟地址空间中的找到最高延迟的热内存。
4)确定这些热内存的位置。
5)在进程中找到热内存的位置,获取访问这些热内存的代码调用链列表。
2.2 NumaTop使用实录
运行一个测试程序mgen,该进程动作就是不断产生从某一个CPU到某一个NUMA节点的内存访问。
mgen程序启动后,在当前环境中执行NumaTOP,进入NumaTOP交互页面。具体显示如下图:
以下字段分别代表各列的解释和基本使用方法:
PID:进程号
PROC:进程名
RMA:远程内存访问
LMA:本地内存访问
CPI:每条指令的CPU周期数
CPU%:CPU使用占比
可以使用1/2/3/4/5来按照不同指标排列进程顺序。
从上图中可以得出结论:id号为3644572的进程mgen产生了大量的RMA,延迟为55.92,故mgen即是当前Numa内存访问中局部性最差的进程。
所谓 RMA,即 NUMA 架构下的远程内存访问,是指当前处理器访问远端 NUMA 区域的行为。LMA 与 RMA 的原理如下图所示。
选中某一条进程(上图中光标选中了mgen),键入Enter可以查看该进程的详细NUMA访问信息。如下图:
从该页面中可以得出结论:mgen进程正运行在当前环境的numa-0节点上。
在当前页面按下“L”键,NumaTOP将跳转到该进程的虚拟地址空间,以便进一步寻找RMA访问集中在哪一段虚拟内存地址。页面显示如下:
上图描述了进程mgen(pid: 3644572)的虚拟地址空间,其内容与/proc/3644572/maps文件相对应。其中,每一行代表进程的一个vma,ADDR代表虚拟内存地址,SIZE为vma大小,ACCESS%%为vma在当前进程中访问的百分比,LAT代表延迟(ns),DESC代表vma的描述(文件映射或匿名映射)。
该页面可支持的用户操作指令为:
Q:退出NumaTOP;
H:回到主页面;
B:返回上一级;
R:刷新内容和数据;
C:显示某个vma的调用链;
D:显示当前系统的numa分布。
基于该页面,能够确定热内存的位置(光标显示位置)。键入Enter后,可以看到某个vma的具体信息,如下:
上图表示,256M大小的起始地址为7FC5E5200000的vma在节点1上,且在当前进程vma中访问占比100%,延迟为167ns。
为进一步获取访问这些内存的代码调用链,可以在进程的虚拟地址空间列表页按下“C”键,如下图:
上图可以看到进程mgen产生RMA时的调用链函数。
此时,arch__dependent_read()函数证访问远端内存。
在NumaTOP首页点击N可以查看NUMA节点信息。
可以进入对应节点查看详细信息。
3 特性及使用场景分析
在非一致性内存访问(NUMA)架构日益普及的现代计算场景中,系统级调优已成为释放多核处理器性能潜力的关键环节。NumaTOP工具以其强大的实时监控、交互式界面以及对进程级别NUMA行为的深度分析能力,为开发者和系统管理员提供了一个高效且直观的性能优化利器。NumaTOP具备以下几个特性:
■ 实时监控、可交互性
提供了 GUI,能够实时打印当前进程状态,并支持按照特定指标进行排序。
关注RMA访问情况,定位问题进程更加直观。
■ 进程级别的热点内存检测
以vma为粒度,提供RMA的具体节点位置。
■ 进程级别的热内存访问调用链跟踪
给出执行RMA的问题调用链,为进一步分析提供支持。
凭借上述特性,NumaTOP在实际应用中的优势和效果显著。在AI领域,NumaTOP借助其强大的实时观测功能,能够精准定位大模型推理时推理服务的NUMA分布。例如在CPU+GPU混合算力推理场景下,通过这种精准定位,NumaTOP可以有效识别跨节点内存访问瓶颈,并针对性地进行优化。在实际应用中,这种优化大幅提升了大模型推理性能,特别是在Decode阶段,推理延迟降低了20%以上。这不仅提高了推理效率,还为大规模AI模型的部署和应用提供了有力支持。
通过本文的介绍,我们已经了解到NumaTOP如何帮助我们快速定位NUMA架构下应用的性能瓶颈,从查找内存局部性最差的进程到获取具体的热内存访问调用链,每一步都清晰且高效。希望广大读者能够充分利用NumaTOP的特性,在实际工作中优化系统性能,提升资源利用率。未来,随着技术的不断进步,我们期待NumaTOP能够进一步扩展其功能,为NUMA系统的性能优化提供更加全面和深入的支持。
售前咨询
售后服务
回到顶部