1 :Original: Documentation/mm/numa.rst 2 3 :翻译: 4 5 司延腾 Yanteng Si <siyanteng@loongson.cn> 6 7 :校译: 8 9 10 始于1999年11月,作者: <kanoj@sgi.com> 11 12 ========================== 13 何为非统一内存访问(NUMA)? 14 ========================== 15 16 这个问题可以从几个视角来回答: 17 18 从硬件角度看,NUMA系统是一个由多 19 本地内存和/或IO总线。为了简洁起 20 本文中称这些组件/装配为“单元” 21 22 每个“单元”都可以看作是系统的 23 不会在任何给定的单元上填充。NUMA 24 链接是NUMA系统互连的常见类型。这 25 他单元有多个距离。 26 27 对于Linux,感兴趣的NUMA平台主要是 28 所有的内存都是可见的,并且可以 29 系统互连在硬件中处理。 30 31 内存访问时间和有效的内存带宽取 32 有多远。例如,连接到同一单元的C 33 更高的带宽。 NUMA平台可以在任何 34 35 平台供应商建立NUMA系统并不只是为 36 内存带宽的一种手段。然而,为了 37 [cache misses]到“本地”内存——同 38 39 这就自然而然有了Linux软件对NUMA系 40 41 Linux将系统的硬件资源划分为多个 42 上,对一些架构的细节进行了抽象 43 总线。同样,对“较近”节点的内 44 的访问时间和更高的有效带宽。 45 46 对于一些架构,如x86,Linux将“隐 47 的任何CPU重新分配到代表有内存的 48 的CPU与一个给定的节点相关联,会 49 50 此外,对于某些架构,同样以x86为 51 有的节点或者非NUMA平台的系统内存 52 分。NUMA仿真对于在非NUMA平台上测 53 可以作为一种内存资源管理机制。[ 54 55 对于每个有内存的节点,Linux构建 56 使用统计和锁来调解访问。此外,L 57 中的一个或多个]构建了一个有序的 58 时要访问的区/节点。当一个区没有 59 “fallback 回退”。 60 61 由于一些节点包含多个包含不同类 62 节点上的相同区类型,或同一节点 63 代表了相对稀缺的资源。Linux选择 64 离排序的远程节点之前,它会尝试 65 66 默认情况下,Linux会尝试从执行请 67 图从请求来源的节点的适当分区列 68 满足请求,内核将检查所选分区列 69 70 本地分配将倾向于保持对分配的内 71 一些内存的任务后来不从该内存迁 72 中[见 Documentation/scheduler/sched-domains. 73 远的调度域中。然而,调度器并没 74 以在节点之间迁移,远离其初始节 75 76 系统管理员和应用程序设计者可以 77 序接口,如sched_setaffinity(2),来限 78 Linux NUMA内存策略修改内核的默认本 79 Documentation/admin-guide/mm/numa_memory_polic 80 81 系统管理员可以使用控制组和CPUsets 82 的内存。 [见 Documentation/admin-guide/cg 83 84 在不隐藏无内存节点的架构上,Linu 85 内存的节点,“本地内存节点”— 86 将是内核在建立分区列表时选择的 87 最近的可用内存来完成。这是同一 88 其他附近的节点。 89 90 一些内核分配不希望或不能容忍这 91 得到通知说该节点没有空闲内存。 92 93 一个典型的分配模式是使用内核的n 94 节点ID,然后只从返回的节点ID请求 95 路径。板块内核内存分配器就是这 96 内核分析子系统就是这样的一个例 97 98 如果架构支持——不隐藏无内存节 99 子系统如果试图完全从无内存的节 100 以使用numa_mem_id()或cpu_to_mem()函数来 101 一个节点,默认的本地页分配将从
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.