有没有办法为 NUMA 中的数据分配特定的内存?

Posted

技术标签:

【中文标题】有没有办法为 NUMA 中的数据分配特定的内存?【英文标题】:Is there some way to allocate specific memory for data in NUMA? 【发布时间】:2016-12-20 13:21:48 【问题描述】:

我想以我可以控制的方式在NUMA内所有节点的内存中分配内存(例如,在node1的内存中分配a,在node2的内存中分配b内存,并在node4的内存中分配c……)。

有什么办法可以做到吗?

【问题讨论】:

man7.org/linux/man-pages/man2/set_mempolicy.2.html 谢谢你。我已阅读 set_mempolicy 的描述。似乎 set_mempolicy 只是提供了一种为线程设置内存策略的方法,但我想要的是一种类似于 malloc 系列的数据级内存管理方法。 【参考方案1】:

也许您可以使用numa_alloc_onnode 函数(NUMA 策略库)来实现您的目标,但这样的分配速度很慢。

但请记住,NUMA 内存关联与在核心 [thread->core->NUMA 节点] 上运行的执行线程密切相关。我相信你知道自己在做什么。

http://man7.org/linux/man-pages/man3/numa.3.html

【讨论】:

以上是关于有没有办法为 NUMA 中的数据分配特定的内存?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Hardware--NUMA与MySQL

DPDK预分配了多少虚拟内存

为啥使用 numa_alloc_onnode() 进行分配会导致“页面不存在”?

如何将所有内存分配限制到一个 NUMA 节点

NUMA 会影响内存带宽,还是只是延迟?

numa_alloc_onnode() 分配的内存更多吗?