NUMA节点的使用顺序配置

本文详细介绍了Linux内核中NUMA架构下内存分配的原理,包括numa_zonelist_order选项的作用,以及如何通过调整此选项来优化内存使用效率。通过分析不同内存查找方案的影响,探讨了在不同场景下选择内存分配策略的重要性。

/proc/sys/vm/numa_zonelist_order è

numa_zonelist_order預設為” default”,並只在支援 NUMA(Non-Uniform Memory Access Architecture)的Linux Kernel才支援這個選項.

在進行記憶體配置時,跨不同Memory Zone之間的記憶體配置會根據Zone List順序來加以決定,例如要配置GFP_KERNEL屬性的記憶體時,找尋Memory Zone的順序會是 ZONE_NORMAL -> ZONE_DMA,也就是說當Normal Zone記憶體不足時,就會嘗試透過DMA Memory Zone來尋找是否有可供使用的記憶體區塊大小.

假設在一個平台上支援兩個Memory Node,而這兩個Memory Node各自都擁有Normal Zone與DMA Zone,則找尋記憶體的順序可以為

方案1, Normal Zone in Node(0) -> DMA Zone in Node(0)->Normal Zone in Node(1)

方案2, Normal Zone in Node(0) >Normal Zone in Node(1)

-> DMA Zone in Node(0)-

與效能而言,當Node 0的Normal Zone被使用完畢,取同一個Node 0上的DMA Zone的記憶體對效能上會是比較好的,但缺點卻在於會讓在Node 0上原本相對Size就比較小的DMA Zone被Normal Zone的需求給加速耗盡. 但如果選擇方案2,會因為要跨越Node 0->Node 1而導致效能的影響,當然好處是可以透過兩個Memory Node的Normal Zone配置避免因為記憶體不足的問題把要給硬體傳輸使用的DMA Zone也給加速耗盡. (通常,Normal Zone都會比DMA Zone大上不少).

而方案1在此可稱呼為 “Node-Order”,方案2可稱呼為 “Zone-Order”,兩者思維差異在前者是先把自己Node上的記憶體耗盡後才往其它Memory Node去找,後者則是依據不同Memory Node上的Zone屬性來最佳化記憶體的使用.

在系統啟動後可以透過 “echo Z > /sys/vm/numa_zonelist_order”啟動 Zone-Order ,透過“echo N > /sys/vm/numa_zonelist_order” 啟動 Node-Order,若是執行 “echo D > /sys/vm/numa_zonelist_order” 啟動 Default-Order則預設會是以Node-Order來執行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值