繁体   English   中英

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

[英]How to restrict ALL memory allocation to one NUMA node

我是NUMA感知的多线程编程的新手。 我编写代码时将所有线程及其内存分配限制为一个节点。 在程序的开头,我进行了以下调用:

struct bitmask *bm = numa_parse_nodestring("0");
if (bm == 0) {
    exit(1);
}
numa_bind(bm);

我的理解是,以这种方式调用numa_bind会将所有线程和所有内存分配绑定到节点0。

此外,当我从此代码启动pthread时,我使用以下命令将它们绑定到特定的CPU:

pthread_setaffinity_n

但是,当我查看/ proc // numa_maps时,仍然可以看到某些库(例如libc)已绑定到节点1上的内存。如何确保进程所需的所有内存都绑定到了节点上0?

像libc这样的共享库不能绑定到您的进程/应用程序指定的存储库。 请参阅shared-library-numa

代码倾向于被缓存在本地处理器的L3缓存中。 由于它是只读的,一旦加载到缓存中就不太可能产生任何流量。 我不会太在意它,除非您有概要分析信息显示确实存在问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM