4 special-hardware-ats: 特殊硬件与 ATS 缺页的 NUMA 行为
本篇覆盖回迁到 CPU 时与硬件拓扑强相关的 NUMA 逻辑closest_cpu_numa_node的来源、EGM / 集成 GPU / C2CGrace-Hopper等一致性平台以及 ATS 缺页驱动的 CPU 驻留节点选择。1.closest_cpu_numa_node每张 GPU 最近的 CPU 节点每个uvm_parent_gpu_t记录一个「物理上最近的 CPU NUMA 节点」是很多 NUMA 决策的基准。1.1 从 PCI 拓扑获取uvm_gpu.cparent_gpu-closest_cpu_numa_nodedev_to_node(parent_gpu-pci_dev-dev);即用内核提供的 PCI 设备所属 NUMA 节点。1.2 集成 GPU 的兜底对集成 GPU如 Tegra / Grace-Hopper 上的 GPU若拓扑没给出节点用当前内存节点兜底uvm_gpu.cif(parent_gpu-is_integrated_gpuparent_gpu-closest_cpu_numa_node-1){parent_gpu-closest_cpu_numa_nodenuma_mem_id();}1.3 相关uvm_gpu_numa_node()在一致性平台上GPU 自己的显存也以一个 NUMA 节点的形式暴露给系统systemMemoryWindowStartuvm_gpu_numa_node(gpu)返回该节点。uvm_va_space_find_gpu_with_memory_node_id()可反查某 nid 是否属于某 GPU用于区分「CPU 节点」和「GPU 内存节点」。2. 集成 GPU迁到 GPU 迁到最近的 CPU 节点在uvm_api_migrate()中uvm_migrate.cif(dest_gpudest_gpu-parent-is_integrated_gpu){dest_idUVM_ID_CPU;cpu_numa_nodedest_gpu-parent-closest_cpu_numa_node;}对集成 GPU 而言「GPU 显存」本质上就是某个 CPU NUMA 节点的内存所以迁移被重写为「迁到该 GPU 最近的 CPU 节点」。同类改写还发生在禁用 pageable 迁移时把 GPU 目标降级为 CPU closest_cpu_numa_nodeuvm_migrate.cCDMM 模式下的类似处理uvm_migrate.c。3. EGMExtended GPU MemoryEGM 允许 GPU 通过其显存地址窗口访问「宿主 CPU 内存」这块内存对应 GPU 的closest_cpu_numa_node。UvmGpuInfo中有egmEnabled/egmPeerId/egmBaseAddr见nv_uvm_types.h。VA space 侧在 EGM 打开且closest_cpu_numa_node ! NUMA_NO_NODE时用该节点建立 EGM NUMA 节点信息uvm_va_space.c 与 L771-L778node_infouvm_va_space_get_egm_numa_node_info(va_space,parent-closest_cpu_numa_node);node_info-node_startnode_start_pfn(parent-closest_cpu_numa_node)PAGE_SHIFT;node_info-node_endnode_end_pfn(parent-closest_cpu_numa_node)PAGE_SHIFT;因此在 EGM 场景回迁到「GPU 本地的宿主内存」就是回迁到closest_cpu_numa_node对应的 DRAM。4. CPU 亲和性查询uvm_va_space_*的 NUMA affinityuvm_va_space.c提供把 GPU 映射到 CPU NUMA 节点的接口用于accessed_by/ 亲和放置uvm_va_space.c 与 L938-L983当gpu-parent-closest_cpu_numa_node ! -1时把该 GPU 的 CPU 亲和节点设为closest_cpu_numa_node*numa_node_id(NvS32)gpu-parent-closest_cpu_numa_node;// 一致性 GPU 的 CPU 亲和中断底半部ISR bottom half线程也绑定到closest_cpu_numa_nodeuvm_gpu_isr.c 与 L414减少跨节点开销。5. ATS 缺页按 VMA 内存策略选 CPU 驻留节点在支持 ATSAddress Translation Services的平台上GPU 直接对系统页缺页UVM 需要决定把页驻留到哪个 NUMA 节点。文件uvm_ats_faults.c。5.1 尊重进程的mbind/set_mempolicyats_compute_residency_node()类逻辑uvm_ats_faults.c读取该地址的 VMA mempolicyif(modeMPOL_BIND||modeMPOL_PREFERRED_MANY||modeMPOL_PREFERRED){inthome_nodeNUMA_NO_NODE;if(mode!MPOL_PREFERREDvma_policy-home_node!NUMA_NO_NODE)home_nodevma_policy-home_node;if(home_node!NUMA_NO_NODE){residencyhome_node;// ① 优先 home_node}elseif(!node_isset(residency,vma_policy-nodes)){intclosestgpu-parent-closest_cpu_numa_node;if(closest!NUMA_NO_NODEnode_isset(closest,vma_policy-nodes))residencyclosest;// ② 其次GPU 最近节点若在允许集合内elseresidencyfirst_node(vma_policy-nodes);// ③ 再次允许集合的第一个}}优先级mempolicy home_node → 缺页 GPU 自身节点若被允许→ GPU 最近 CPU 节点若被允许→ 允许集合首个节点。5.2 目标节点传入迁移选出的节点写入ats_context-residency_node再作为uvm_migrate_args.dst_node_id驱动迁移uvm_ats_faults.cuvm_migrate_args_tuvm_migrate_args{....dst_node_idats_context-residency_node,...};结论ATS 路径下「回迁/驻留到 CPU」严格尊重用户通过numactl/mbind设置的 NUMA 策略。6. 小结不同硬件下「回迁到 CPU」的 NUMA 基准场景目标 CPU 节点来源普通独立 GPU managed显式cpuNumaNode→preferred_nid→ 就近pageable透明访问dst_node_id用户给定alloc_pages_node落点校验集成 GPU / 禁用 pageable / CDMMGPU 的closest_cpu_numa_nodeEGMclosest_cpu_numa_node对应的宿主 DRAMATS 缺页VMA mempolicyhome_node / 允许集合必要时回退closest_cpu_numa_node

相关新闻

ChatGPT、Codex实战:长任务为什么容易跑偏?从任务拆分到Checkpoint的6层控制

ChatGPT、Codex实战:长任务为什么容易跑偏?从任务拆分到Checkpoint的6层控制

Codex越来越强以后,一个很明显的变化是:我们开始敢把更大的任务交给Agent。以前可能只是:帮我写一个函数。后来变成:帮我修复这个Bug。再往后是:把认证模块重构一下,补齐测试,然后确保现有接口行…

2026/10/18 3:08:09 阅读更多 →
C++网络编程核心:从Socket到Epoll的并发服务器实践

C++网络编程核心:从Socket到Epoll的并发服务器实践

1. 项目概述:为什么C网络编程依然值得投入?如果你是一名C开发者,或者正在学习C,并且对“网络编程”这四个字感到既熟悉又陌生,甚至有点望而生畏,那么这篇文章就是为你准备的。我见过太多开发者,…

2026/10/18 3:09:07 阅读更多 →
3分钟快速上手:如何用完全离线语音识别工具保护你的隐私?

3分钟快速上手:如何用完全离线语音识别工具保护你的隐私?

3分钟快速上手:如何用完全离线语音识别工具保护你的隐私? 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz …

2026/10/18 3:10:08 阅读更多 →

最新新闻

计算机基础面试:URL全流程、三次握手与HTTP演进要点

计算机基础面试:URL全流程、三次握手与HTTP演进要点

简介:这是一份面向程序员求职与面试准备的计算机网络基础知识点PDF资料,尤其适合准备后端、前端岗位笔试面试的求职者,用于快速补齐高频考点。内容取自代码随想录知识星球精华(最强八股文)第五版计算机基础篇&#xff…

2026/10/18 9:56:37 阅读更多 →
手写BP神经网络逼近二元函数:从零实现前向反向传播

手写BP神经网络逼近二元函数:从零实现前向反向传播

简介:本资源是一份面向机器学习初学者与MATLAB实践者的BP神经网络教学实现,聚焦于不依赖任何工具箱的手动构建与训练过程,重点解决二元函数逼近这一典型非线性拟合问题。压缩包为1KB的ZIP文件,内含1个核心MATLAB源码文件&#xff…

2026/10/18 9:56:36 阅读更多 →
程序员职业倦怠自救指南:7个心态调整法,把能量省下来

程序员职业倦怠自救指南:7个心态调整法,把能量省下来

前阵子和一个做了七八年后端的朋友吃饭,他说了一句话让我印象很深:“我现在不是累,是麻木。写代码没有快感,下班不知道干什么,第二天又坐在工位前发呆。”我听完第一个反应不是安慰他,而是松了一口气——因…

2026/10/18 9:56:36 阅读更多 →
旧房改造,补的是几十年积累的“老化欠账”

旧房改造,补的是几十年积累的“老化欠账”

最近有几个老旧小区的朋友同时问我类似的问题:房子被列入旧房改造名单,到底是好事还是麻烦?要不要趁机把家里重新弄一遍?大部分人的第一反应都是——改造是不是就是刷刷外墙、修修路,做个表面文章,好让小区…

2026/10/18 9:56:36 阅读更多 →
Oracle跨版本SQL执行计划快照集:10g-19c调优实战指南

Oracle跨版本SQL执行计划快照集:10g-19c调优实战指南

简介:本资源是面向Oracle数据库管理员(DBA)与性能调优工程师的SQL Tuning Advisor(SQLT)实战工具集,聚焦10g至19c全版本兼容的SQL性能诊断与优化场景。压缩包内含205个高实用性文件,主体为160个…

2026/10/18 9:56:36 阅读更多 →
基于SpringBoot+Vue的课外活动管理系统设计与实现

基于SpringBoot+Vue的课外活动管理系统设计与实现

1. 项目整体思路与技术选型前后端分离已经是现在做课外活动管理系统的主流姿势,但真正从零开始把分支打全、逻辑理清楚,还是要费不少功夫。这套基于JavaSpringBootVue的课外活动管理系统,核心解决的是高校/中职院校里“活动发布—报名—签到—…

2026/10/18 9:55:36 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →