首页 > 代码库 > linux 内存管理

linux 内存管理

linux 引入了 Node的概念

 

7 bootmem_data_t bootmem_node_data[MAX_NUMNODES] __initdata

其中MAX_NUMNODES
0005 #ifdef CONFIG_NODES_SHIFT
0006 #define NODES_SHIFT     CONFIG_NODES_SHIFT
0007 #else
0008 #define NODES_SHIFT     0
0009 #endif
0010 
0011 #define MAX_NUMNODES    (1 << NODES_SHIFT)
0012 
0013 #define NUMA_NO_NODE    (-1)

每个node 都很多 zone 分区

我自己系统上面内存是6G 就一个node

页大小是 4k

内核打印

contig_page_data.node_zones[0].zone_start_pfn,  contig_page_data.node_zones[0].present_pages

zone_start_pfn DMA = 16 -> 3949  ~ 16M
zone_start_pfn NORMAL = 4096-> 221990 900M
zone_start_pfn HIGH = 228350 -> 1304269  50000M
zone_start_pfn MOVIABLE = 0  size = 0

 

取代了 之前版本的 for_each_zone