numactl --membind

Posted

技术标签:

【中文标题】numactl --membind【英文标题】: 【发布时间】:2013-02-03 05:56:11 【问题描述】:

在 Linux 中使用带有 --membind 选项的 numactl 时,假设我执行以下操作:

=0,1,2 ./prog

./prog 的内存是否会分配在所有 NUMA 节点 0、1 和 2 上?或者如果 NUMA 节点 0 的内存不够,内存会只分配在 NUMA 节点 1 和 2 上吗?谢谢。

【问题讨论】:

【参考方案1】:

numactl 的手册页说:

--membind=nodes, -m nodes 
  Only allocate memory from nodes. Allocation will fail when there is not enough 
  memory available on these nodes.

所以,如果节点 0 没有足够的内存,内存将分配到节点 1,2 上。每个节点的实际内存分配比例可能取决于内存放置策略

【讨论】:

但是如果0有足够的内存,那么所有的内存都会分配到0,对吧?你说配给取决于“内存放置策略”是什么意思?是不是要使用节点0上可用的全部空闲内存(full free memory=ration),如果这还不够,那么只有它会使用节点1上的全部空闲内存,如果这还不够,那么只有它会使用节点 2?谢谢。

以上是关于numactl --membind的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb 使用numactl 启动

numactl 和 move_pages 不匹配

宋宝华:为什么numactl内存绑定对代码段不起作用

numactl 只检测一个节点,它应该是两个

numactl:NETLINK示例源码

迁移正在运行的进程的内存页