我尝试使用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
有人可以帮忙解释一下吗?
答案 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
请记住,直到你在那里存放东西,无论如何都是想象的。