4 special-hardware-ats: 特殊硬件与 ATS 缺页的 NUMA 行为

发布时间:2026/9/26 16:00:35

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
延伸阅读

更多相关文章

2026/9/26 22:12:34

2 kernel-migration-flow: 内核迁移主流程

本篇讲清楚一次 UVM_MIGRATE 从 ioctl 进入内核后的完整路径,重点标注 NUMA 目标节点(dst_node_id / dest_nid)在各层如何传递。 1. 入口:uvm_api_migrate() 文件:uvm_migrate.c(uvm_api_migrate&#xff…

2026/9/27 9:56:16

995梦幻发布介绍

1. 什么是梦幻梦幻,通常指一种超越现实、带有理想化色彩的精神体验或艺术表达。它既可以指睡眠中产生的梦境,也可以指人们对美好生活的向往与想象。在文学、影视、游戏等创作领域,梦幻常被用来营造浪漫、神秘或超脱现实的氛围。2. 梦幻的常见…

2026/9/27 9:56:16

海南百度推广电话避坑指南:5个实战最佳实践

海南百度推广电话避坑指南:5个实战最佳实践 别再说模板网站太丑不够用了,那是你还没摸透推广逻辑。很多老板以为找个海南百度推广电话,扔个几百块预算就能坐等订单,结果钱花光了,咨询没几个。这背后的核心痛点,其实是 最佳实践 的缺失。…

2026/9/27 9:56:16

北京外贸营销网站建设费用及注意事项全解析

北京外贸营销网站建设费用及注意事项全解析 域名服务器搞不懂,直接导致预算超支30%?很多北京的外贸老板在询价时,只盯着开发费,却忽略了域名、服务器、SSL证书这些“隐形坑”。 北京外贸营销网站建设费用…

2026/9/27 9:56:16

cyberstrikelab pt-6 靶场教程(msf版)

发现是 Zimbra,使用 MSF 的 exploit/linux/http/zimbra_xxe_rce 模块来渗透zimbra_xxe_rce 模块详细渗透步骤在 MSF 中加载 zimbra_xxe_rce 模块后,需要依次设置以下关键参数:RHOSTS:目标 Zimbra 服务器的 IP 地址或域名&#xff…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑