使用大页面分配内存和numa_tonode_memory给出“总线错误”

时间:2016-06-12 01:26:52

标签: numa huge-pages

我正在尝试使用巨大的TLB页面(1GB)分配2GB缓冲区,并将内存区域绑定到特定的numa节点。

要使用巨大的TLB页面分配缓冲区,我使用以下代码:

shmid = shmget (IPC_PRIVATE, buf_size,
                SHM_HUGETLB | IPC_CREAT | SHM_R | SHM_W);
buf = (uint64_t *) shmat (shmid, 0, 0);

然后,我打电话给:

numa_tonode_memory (buf, buf_size, 3);

将缓冲区移动到特定节点。

当我运行程序时,一旦我访问大于1GB的缓冲区偏移量,程序就会因“总线错误(核心转储)”而停止。

删除numa_tonode_memory可以避免错误,但是,它也会破坏在特定节点上分配内存的目的。

我想知道这个问题是否有任何解决方法,

谢谢,

0 个答案:

没有答案