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

时间:2014-06-23 03:32:45

标签: c memory malloc numa

我尝试使用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

有人可以帮忙解释一下吗?

1 个答案:

答案 0 :(得分:0)

直到你真正试图在那个记忆中存储东西,它只是蒸汽,想象......虚拟甚至!

系统会说,当然!你可以用你的名字拥有那么多......但是在你使用它之前,它只是'在纸面上'。

如果您尝试在40 + GB内存中存储某些内容,那么您很可能会遇到错误...取决于此时交换空间的大小。

overcommit的前三次点击:

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

请记住,直到你在那里存放东西,无论如何都是想象的。