Linux 对 NUMA 系统的物理内存分布信息是从系统
firmware 的 ACPI 表中获得的,最重要的是 SRAT(System Resource Affinity Table)和 SLIT(System
Locality Information Table)表,其中 SRAT
包含两个结构:
Processor Local
APIC/SAPIC Affinity Structure:记录某个 CPU 的信息;
Memory Affinity Structure:记录内存的信息;
SLIT 表则记录了各个结点之间的距离,在系统中由数组 node_distance[ ] 记录。
Linux 采用 Node、Zone 和页三级结构来描述物理内存的,如图 2
所示,
图 2 Linux 中
Node、Zone 和页的关系
. 1 结点
Linux 用一个 struct pg_data_t
结构来描述系统的内存,系统中每个结点都挂接在一个 pgdat_list 列表中,对 UMA 体系结构,则只有一个静态的 pg_data_t 结构
contig_page_data。对 NUMA 系统来说则非常容易扩充,NUMA 系统中一个结点可以对应 Linux 存储描述中的一个结点,具体描述见
linux/mmzone.h。
|
网友评论