第 9 章 NUMA
过去,AMD64 和 Intel 64 系统中的所有内存都可被所有 CPU 平等地访问。无论 CPU 执行操作,已知一致性内存访问(UMA)的访问时间都是一样的。
最近 AMD64 和 Intel 64 处理器时,这个行为不再是这种情况。在非一致性内存访问(NUMA)中,系统内存被分成多个 NUMA 节点,对应于套接字或一组对系统内存本地子集相同的访问延迟的特定 CPU。
本章论述了虚拟环境中的内存分配和 NUMA 调优配置。
9.1. NUMA 内存分配策略
以下策略定义了如何从系统的节点分配内存:
Strict
- 严格策略意味着,如果无法在目标节点上分配内存,分配将失败。指定 NUMA nodeset 列表,而不定义内存模式属性默认为
strict
模式。 Interleave
- 内存页面会在由节点设置指定的节点上分配,但以轮循方式分配。
Preferred
- 内存从单个首选内存节点分配。如果没有足够的内存可用,可以从其他节点分配内存。
要启用预期的策略,将其设置为域 XML 文件的 <
;memory mode
> 元素的值:
<numatune> <memory mode='preferred' nodeset='0'> </numatune>
重要
如果以
strict
模式过量使用内存,且客户机没有足够的 swap 空间,内核会终止一些客户机进程来检索额外的内存。红帽建议使用 preferred
分配并指定单个节点集(例如,nodeset='0')以防止这种情况。