YARN Container的NUMA感知支持

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

前言


在现有YARN的Container运行过程中,还没有考虑到计算机内存的访问模式。更进一步地来说,针对CPU处理器对于计算机内存的访问模式,YANR的Container执行在这方面还可以进一步优化。比如在多处理器情况下的计算机内存访问模式NUMA模式下,尽量减少跨内存区域的访问将会加速执行的速度。在早期的实现中,YARN并没有考虑到这些情况的。所以今天笔者带领大家了解一下NUMA架构体系以及YARN Container对于NUMA的感知执行。

NUMA架构体系


在阐述本文正文之前,可能有部分同学不了解什么是NUMA,所以这里做个简单地介绍。

NUMA,全称是Non-uniform memory access,用中文翻译为非一致性内存访问。现在的问题来了,NUMA架构是怎样的一种结构呢?它主要用来解决什么问题的呢?
下面笔者进行简单的解释。

其实在NUMA架构之前,内存是被处理器所共享的,然后通过总线方式进行数据的传输。随着处理器的增多,这里面处理器对于总线的竞争就会加剧。所以NUMA在这方面就做了改进,通过将内存分成多个小内存Node区域,每个小Node区域再被一部分处理器所共享。当然,这些处理器也可以访问别的Node区域的内存,只是说跨区域内存访问会慢于本地内存访问的速度。下面是NUMA架构体系。


这里写图片描述

P代表的是处理器。上图显示的左边为一个Node区域,一块内存被5个处理器所共享,右边同理。

通过NUMA的命令行工具,我们能直观地得到这些信息,如下命令:

$ numactl –hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
node 0 size: 65133 MB
node 0 free: 17786 MB
node 1 cpus: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
node 1 size: 65536 MB
node 1 free: 28880 MB
node distances:
node 0 1
0: 10 21
1: 21 10

上面命令是笔者在真实服务器上执行得到的结果,我们可以得出的信息有,总共2个node区域,每个node 64GB内存,32个核一个node,机器总内存128GB,64核。其中node0剩余内存17GB左右,node1则还有28GB左右内存的剩余空间。

YARN Container的NUMA感知优化


优化核心方向


在NUMA架构下的内存访问模式下,我们的一个核心优化方向其实很简单:

尽可能地让处理器访问本地的内存,减少远程内存的访问。

因为本地内存的访问速度是快于远程的,这个优化在YANR层面的解释就是:

尽可能地分配同个node区域的核和内存给Container执行。

Container NUMA感知执行的实现细节


社区在YARN-5764中对这个功能进行实现了,这里主要概括其实现的要点,具体代码就不展开阐述了。

主要有以下几点实现要点:

  • 1.新增配置功能来控制YARN Container NUMA感知的功能。
  • 2.系统NUMA信息可以通过获取系统信息或是由用户手动配置传入。
  • 3.YARN内对NUMA信息进行解析,并转化为Node资源实例对象保存在内存中。
  • 4.针对每个Container分配的时候,从NUMA获取的Node信息里,进行核数,内存资源的,注意,采用轮询的方式从每个Node里进行资源的划分。如果出现单个Node资源不足的情况下,再分配多个Node资源进行Container的分配。
  • 5.每个Container在申请自己对应的Node id标号后,在启动的时候带上numa绑定CPU,内存的命令启动即可,绑定命令类似如下,此命令的作用就是让Container执行在指定node区域的内存和处理器上了。

numactl –membind=[node] –cpunodebind=[node]

今天分享的内容就是以上,大家只要理解实现思路以及YARN对于NUMA结合的这一块就可以了,感兴趣的同学可以阅读相关代码进行进一步地学习。

引用


[1].https://en.wikipedia.org/wiki/Non-uniform_memory_access
[2].https://issues.apache.org/jira/browse/YARN-5764. NUMA awareness support for launching containers

多核并行调度策略:NUMA感知与线程亲和性控制 NUMA(Non - Uniform Memory Access,非统一内存访问)架构是一种计算机内存设计,其核心原理是将内存划分为多个靠近不同处理器的区域。在传统的对称多处理(SMP)架构中,所有处理器共享同一内存池,访问内存的延迟相对固定。而NUMA架构下,每个处理器都有本地内存,当处理器访问本地内存时,延迟较低;访问其他处理器的远程内存时,延迟较高。这种架构通过减少处理器对共享内存的竞争,提高了内存访问效率,尤其适用于大规模多处理器系统。 阅读详情

相关推荐

Kubernetes GPU调度深度实践:拓扑感知与AI工作负载建模

GPU作为异构计算核心,在Kubernetes中并非简单挂载设备即可高效利用。其本质是强状态、拓扑敏感、非均匀可分的硬件资源,与K8s原生的无状态、细粒度、可迁移资源模型存在根本冲突。理解GPU显存隔离机制与PCIe/NVLink物理拓扑,是实现高利用率与低通信开销的前提;而AI工作负载特征建模(如NCCL通信模式、数据加载瓶颈、显存占用波动)则支撑智能调度决策。技术价值在于将GPU从‘能跑’升级为‘稳、省、快、可管’,广泛应用于大模型微调、分布式训练与毫秒级推理服务等生产场景。本文聚焦真实集群中GPU资源

weixin_34166472的博客 474

【信息科学与工程学】计算机科学与自动化—第十五篇 云计算 11 算法篇01

编号类型领域问题问题的数学分析(含几何学/拓扑学/代数学/数论/集合论/离散数学/概率论/统计学/其他)及数值分析及算法分析及参数列表及参数数值设计C/C++/rust/python代码软件(含编译器)及硬件资源需求(CPU/GPU/内存【NAND/DRAM/HBM/其他】/HBM、HDD、SSD、RAID卡、其他)关联知识1工作负载调度数据中心最小化总完成时间/成本。

weixin_49199313的博客 55

DGX Spark集群中Docker部署FireRed图像编辑模型的工业级实践

在AI推理服务工程化中,GPU加速模型的服务化部署需兼顾一致性、可扩展性与硬件深度适配。Docker通过镜像固化实现跨节点环境一致,避免CUDA版本错配、驱动ABI不兼容等典型故障;Spark则作为分布式任务编排中枢,协同YARN实现GPU资源的动态调度与容错恢复。二者结合构成面向DGX超算平台的云原生推理底座,支撑高并发、低延迟、多实例隔离的图像生成类应用——如FireRed-Image-Edit这类基于扩散模型的语义级局部重绘服务。本文聚焦DGX A100/H100环境下的Docker镜像构建规范、CU

weixin_33947521的博客 461

【信息科学与工程学】计算机科学与自动化—第十五篇 云计算 11 算法篇02

但若第一个应用需求40GB/s,第二个10GB/s,总需求50GB/s>40GB/s,第一个得32GB/s,第二个得8GB/s,不公平。但若分区负载不均(分区1-2各有100任务/s,分区3-4各有50任务/s),A负责1-2(200/s),B负责3-4(100/s),仍均衡。任务 τi​ 的计算需求 Wi​(CPU周期),在频率 f 下执行时间 Ti​=Wi​/f,能耗 Ei​=Pdyn​⋅Ti​=Ceff​⋅V2⋅f⋅(Wi​/f)=Ceff​⋅V2⋅Wi​。若 Mneed​>Mi​,需使用远程显存。

weixin_49199313的博客 43

Kubernetes NUMA 感知

NUMA是的简称。它是一种在多 CPU 系统上可用的技术,允许不同的 CPU 以不同的速度访问内存的不同部分。任何直接连接到 CPU 的内存都被认为是该 CPU 的本地内存,并且可以非常快速地访问。任何未直接连接到 CPU 的内存都被认为是非本地的。在现代系统上,本地与非本地内存的概念也可以扩展到外围设备,例如 NIC 或 GPU。为了获得高性能,应该分配 CPU 和设备,以便它们可以访问相同的本地内存。NUMA 系统上的所有内存都分为一组NUMA 节点,每个节点代表一组 CPU 或设备的本地内存。

lingshengxiyou的博客 1551

Linux系统中的NUMA架构以及如何进行NUMA感知的应用程序优化

欢迎加入我们的嵌入式学习群!作为这个群的一员,你将有机会与嵌入式系统领域的专业人士和爱好者们交流、分享经验和学习资源。群内涵盖了各种嵌入式系统的应用和开发,无论你是初学者还是经验丰富的专业人士,都能在这里找到志同道合的伙伴和有益的互动。无论你是对物联网、智能家居、工业自动化等领域感兴趣,还是希望分享你自己的项目和经验,我们的群都会为你提供一个广阔的交流平台。扫码进群领资料。

prop428的博客 2511

Hadoop性能调优建议

5、HDFS的Handler数量由dfs.namenode.handler.count、dfs.namenode.service.handler.count和dfs.datanode.handler.count控制。Dfs.namenode.service.handler.count Namenode的RPC服务端用于监听来自datanode和所有非客户端节点请求的线程数。mapreduce.task.io.sort.mb 一般设置为容器内存的25%,加大可以减少map中间结果spill到硬盘次数。

Dreamershi的专栏 1780

鲲鹏HCIP练习01答案

收集热点函数工具:perf JVM屏蔽了x86与鲲鹏平台之间的差异 多核乱序指令现象 LDR,LDR Rt, 二进制:he11o.o 中断向量表 老年代存活对象大小为X。堆总的大小为3X-4X。 or运算:EOR Vd,Vn,Vm 鲲鹏处理器实现虚拟化的具体方式和x86处理器有区别。 如果一个超线程处理器可以让每个核执行两个线程,那么一个4核的处理器可同时并行执行8个线程。4*2=8 复制就是开销,在程序开发和设计阶段可以尽可能的避免此类开销。 有一个x86平台软件,它使用了Intrinsic指令,如果要在

slow的博客 3923

【信息科学与工程学】【数据中心】 第十四篇 智算中心算法体系规划

每个节点独立计算本地对偶变量的次梯度,通过异步通信更新对偶变量,步长选择采用自适应策略(如ηt​=t​η0​​)。:采用L1(内存缓存)、L2(SSD缓存)、L3(磁盘缓存)三级缓存架构,结合LRU/LFU算法实现动态缓存管理。:靠近用户终端(如基站、小区),仅缓存高频访问内容,部署在用户最近的网络边缘,实现"最后一公里"加速。:存储完整内容库,负责内容注入与全局调度,部署在核心数据中心,具备高带宽和高可用性设计。:基于用户IP、运营商、节点负载等实时数据,动态选择最优边缘节点,实现全局负载均衡。

weixin_49199313的博客 801

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 11 算法篇

在百万级虚拟机、百万级租户的超大规模云环境中,核心算法挑战包括:挑战维度具体问题算法需求技术复杂度规模性​百万级对象并发管理分布式算法、分区算法极高(NP-hard问题)多租户​租户间隔离与资源共享公平性算法、隔离算法高(多目标优化)动态性​资源需求实时变化自适应算法、在线算法高(实时决策)异构性​硬件/负载/需求差异分类算法、匹配算法中高(多维度优化)经济性​资源利用率与成本平衡优化算法、博弈论算法高(多目标博弈)以下是按领域分类的详细算法列表:算法名称数学建模表达核心思想时间复杂度适用场景推理步骤首次适

weixin_49199313的博客 1310

【信息科学与工程学】【数据中心】 第十九篇 MFU的优化提升方法01

MFU作为一个综合性能指标,清晰地揭示了下游任务(模型训练/推理)对上游计算资源(GPU集群)的实际利用效率。它不仅是技术能力的体现,更直接关系到企业的运营成本和AI创新的速度。追求更高的MFU,本质上是在有限的资源和无限的算力需求之间寻找最优解,是AI基础设施领域持续演进的核心动力。总而言之,数据中心CPU的MFU不仅仅是一个软件性能指标,它是计算芯片微架构、服务器硬件设计、数据中心基础设施以及软件算法协同工作效果的终极体现。

weixin_49199313的博客 1193

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01

编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有

weixin_49199313的博客 196

【信息科学与工程学】【数据中心】【容灾备份】第三十一篇 云数据中心各类CPU计算型业务跨数据中心容灾设计方案

分层解耦:网络、安全、存储、计算、服务分层设计,相互解耦高可用性:确保各层设计满足高可用要求,RTO/RPO满足业务需求可扩展性:支持水平扩展,适应业务增长安全性:多层安全防护,满足合规要求可管理性:统一管理,简化运维成本优化:在满足需求的前提下,优化成本本方案详细设计了云数据中心CPU计算型业务跨数据中心容灾的全面方案,涵盖网络、安全、存储、计算和服务五个核心维度,每个维度都细分为数据中心内和数据中心间的具体设计。

weixin_49199313的博客 643

NUMA

NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。 在使用spark standalone或者yarn时,如果碰到跨cpu核数访问的情况,可以修改相应的代码。 Yarn: --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-s...

afqe60272的博客 202

YARN 在字节跳动的优化与实践

导读:本文从利用率提升、多负载场景优化、稳定性提升、异地多活四个方面介绍了字节跳动在四年来对 Hadoop YARN 进行的一系列的优化,以及生产环境中的实践经验。1.YARN 简介1...

过往记忆大数据 1822

浅谈大数据背景下的NUMA架构研究

大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据的4V特点:Volume、Velocity、Variety、Veracity。如今,大数据时代已经到来,面对各行各业日益增长的海量信息数据,我们应该如何去收集数据、存储数据(storing)、保留筛选数据、分析数据、以

niji523的专栏 1029

云计算入门(3)Google论文MapReduce阅读笔记

名词解释 MapReduce:这里指的是google的,hadoop的是根据本论文的开源实现 Iterator :遍历器 Grep: 模式匹配,简单的说就是从一大堆数据中找到特定的数据及其位置 NUMA架构 : 一种处理系统架构提供分离的存储器来给各个处理器,避免多个处理器等待一个存储器的问题,但是面对多个任务使用同一数据的情况,采用额外软件和硬件移动数据的方法,降低效能。 paxos算法:一种基...

fengqiniuhebahuang的博客 506

Hadoop整体感知

认识一门新技术首先从该技术解决什么问题开始,探讨该技术为解决问题提供了什么特性,是如何实现该特性的,最后探讨在真是环境的应用。        1. 为什么会有hadoop?         随着公司业务发展,数据会逐渐增多,格式也越来越复杂,而这些数据是存在潜在价值的,当数据量达到P级别时,传统数据库就会在存储和计算的平衡上趋于瓶颈。hadoop就是为解决该类问题而诞生的。

驰骋翱翔 569

MPP与Hadoop之间的关系是什么?

广义的Hadoop包括 Impala, Presto | Distributed SQL Query Engine for Big Data 这些MPP架构的SQL引擎。Hadoop社区还在持续发展,Spark还在持续给人们带来惊喜,开源软件的迷人之处也在于此。 先从NUMA说起吧,NUMA全称为Non-UniformMemoryAccess,是主流服务服务器为了提高SMP的可扩展性而...

程序之道的博客 1552
上一篇: YARN的约束化标签支持
下一篇: 分布式系统中如何较好地做服务发现
Android路上的人
Android路上的人 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄14年 3398粉丝 451原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值