ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

专栏目录:Linux 内存管理子系统的进化——从 MM 到 HMM

专栏目录:Linux 内存管理子系统的进化——从 MM 到 HMM 专栏定位本专栏意在讲清楚现代异构系统存储管理技术HMM该技术是现代 GPU 实现SVM的基础设施。专栏面向有一定内核基础的开发者从 Linux MM 的经典机制出发沿进化脉络逐步引出 HMM每篇文章遵循经典 MM 怎么做 → 为什么不够 → 如何扩展的三段式结构。开篇建立全局视野理解为什么需要学习 HMM以及整个专栏的学习路线。#标题核心内容-1Linux 内存管理子系统的进化从 MM 到 HMM专栏概述MM 到 HMM 的进化脉络章节结构导航0专栏导读为什么需要从 MM 理解 HMM异构计算的硬件背景GPU/CXL/SmartNICHMM 解决什么问题进化时间线总览学习路线图第一篇章经典 MM 基础第 1-5 篇建立 MM 模型为后续扩展做铺垫。按自顶向下的逻辑组织地址空间 → 区域划分 → 物理存储 → 映射机制 → 按需分配 → 内存回收。#标题核心内容1虚拟地址空间与 VMA进程的私有世界如何划分进程地址空间布局mm_structvm_area_structvm_flags权限/类型VMA 查找与合并maple tree2struct page 与 PFNVMA 背后的物理存储page/folio 结构体引用计数与 flagsPFN ↔ page 转换memmap 数组为什么 HMM 需要设备内存也有 struct page3页表连接虚拟与物理的桥梁五级页表PGD→PTEPTE 格式与标志位页表遍历过程/proc/pid/pagemap实验4缺页处理按需分配的艺术handle_mm_fault()全流程匿名页/文件页/写时复制FAULT_FLAG_*标志mmap_lock5页面回收与交换内存不够时怎么办LRU 链表kswapd/direct reclaimswap entry 编码do_swap_page()换入流程第二篇章MM 的通用框架第 6-9 篇这些框架最初为 CPU 内存设计后来被 HMM 复用#标题核心内容6页表遍历框架walk_page_range() 的设计哲学mm_walk_ops回调表各级 entry 回调PGWALK_RDLOCK/WRLOCK如何写一个自定义 walker7NUMA 与页面迁移把页面搬到正确的地方NUMA 拓扑migrate_pages()三阶段迁移 PTEmigration entry自动 NUMA 均衡8MMU Notifier上KVM 催生的页表变化通知问题背景KVM EPT 同步mmu_notifier_ops注册/注销生命周期invalidate 回调语义9MMU Notifier下mmu_interval_notifier 与序列号协议区间树设计mmu_interval_read_begin/retryblockable 判定与 HMM 的关系预告第三篇章设备内存的引入第 10-14 篇MM 进化的关键转折——让设备内存成为一等公民#标题核心内容10异构计算的挑战为什么 MM 需要进化GPU 编程模型的痛点显式拷贝 vs 统一寻址CUDA Unified Memory / HSA 的需求内核需要解决什么11ZONE_DEVICE为设备内存创建 struct page为什么需要 struct pageZONE_DEVICE 的实现原理memremap_pages()热插拔内存类型枚举12dev_pagemap设备内存区域的控制面dev_pagemap结构体详解dev_pagemap_opsmigrate_to_ram / folio_free生命周期管理13非驻留 PTE 的新成员Device Private Exclusive Entryswap entry 编码回顾device private entry 的编码与语义device exclusive entrymake_device_exclusive()14设备页面迁移migrate_vma 三阶段详解migrate_vma_setup/pages/finalizeMIGRATE_PFN_* 标志锁协议与 NUMA 迁移的对比migrate_device_*()第四篇章HMM 核心机制第 15-18 篇胶水层的全貌——700 行代码如何粘合一切#标题核心内容15HMM 总览架构、数据结构与 API 全景hmm_range结构体hmm_pfn_flags编码HMM 与 MMU Notifier/ZONE_DEVICE/migrate_vma 的关系图16hmm_range_fault() 逐行解析上遍历与 PFN 提取入口流程walk_page_range()调用各级回调实现正常 PTE 的 PFN 提取17hmm_range_fault() 逐行解析下非驻留 PTE 与 fault 策略swap/migration/device entry 处理FAULT_FLAG_REMOTE缺页序列号 retry 逻辑错误返回语义18HMM 与 DMA从 PFN 到总线地址HMM DMA helpersdma_map_page()集成P2PDMA 标志scatter-gather 构建第五篇章实际驱动应用第 19-23 篇从测试模块到生产级 GPU 驱动#标题核心内容19test_hmm内核自测模块的最佳实践模块结构ZONE_DEVICE 注册hmm_range_fault 使用migrate_vma 使用用户态自测流程20drm_gpusvmDRM 子系统的 HMM 通用封装设计目标drm_gpusvm_rangenotifier 管理页面获取与映射驱动接入接口21Intel Xe基于 HMM 的 GPU 共享虚拟内存与页面迁移xe_svm 架构基于 drm_gpusvm 的集成错误恢复性能优化策略22AMD KFD SVM完整的双向迁移实现kfd_svm 架构CPU→VRAM 迁移流程VRAM→CPU 回迁与 ROCm 用户态的配合23amdgpu HMMuserptr BO 的页表同步amdgpu_hmm 的 notifier 注册hmm_range_fault 获取用户页面与 TTM 的集成第五篇章实际驱动应用第 24-27 篇从测试模块到生产级 GPU 驱动#标题核心内容24大页与 HMMTHP 和 HugeTLB 的处理THP和HugeTLB的处理25HMM 与其他子系统的交互专栏总结从模块关系角度理解27从 MM 到 HMM 的设计哲学专栏总结附录#标题内容A术语表PFN、VMA、ZONE_DEVICE、migration entry 等核心术语速查B专栏配套技术用例程序代码集给出了每章配套的验证和演示程序。但hmm最好的演示程序还是看内核提供的hmm和单元测试
返回列表