numa_alloc_onnode() 分配的内存更多吗?
Posted
技术标签:
【中文标题】numa_alloc_onnode() 分配的内存更多吗?【英文标题】:numa_alloc_onnode() allocates memory more then it can? 【发布时间】:2014-06-23 03:32:44 【问题描述】:我尝试使用 numa_alloc_onnode() 通过运行以下代码在 32GB 节点上分配 40GB 内存。但是它不会报告任何错误。
a = (int *) numa_alloc_local (sizeof(int) * GB_8 * 5);
if (a == NULL)
printf("a error\n");
for ( i = 0; i <GB_8*5; i++ )
a[i] = (int)i;
printf("a done\n");
这是我机器的规格。 http://i.stack.imgur.com/bM2Gr.png
谁能帮忙解释一下?
【问题讨论】:
您分配 40G x sizeof(int) 而不是 40GB(假设 GB_8 为 8GB)。但这并不能回答问题 我想见你printf("0x%llX\n", (sizeof(int) * GB_8 * 5));
对不起,GB_8 = 8*1024*1024*1024/4,我已经除以4了。
【参考方案1】:
直到你真正尝试在那个记忆中存储一些东西,它只是蒸汽,想象的......甚至是虚拟的!
系统会说,SURE!你的名字里可以有这么多……但在你使用它之前,这一切都只是“纸上谈兵”。
如果您要尝试在 40+GB 的内存中存储一些东西,那么您很可能会遇到错误...取决于此时您的交换空间的大小。
overcommit
的前三个 Google 命中:
https://www.kernel.org/doc/Documentation/vm/overcommit-accounting http://www.win.tue.nl/~aeb/linux/lk/lk-9.html http://searchservervirtualization.techtarget.com/definition/memory-overcommit
请记住,在您在那里存储一些东西之前,这一切都是虚构的。
【讨论】:
以上是关于numa_alloc_onnode() 分配的内存更多吗?的主要内容,如果未能解决你的问题,请参考以下文章