Windows API提供CreateFileMappingNuma函数(http://msdn.microsoft.com/en-us/library/windows/desktop/aa366539(v=vs.85).aspx)以在特定NUMA节点上创建命名共享内存空间。
到目前为止,我还没有找到Linux的等效功能。
我目前的做法如下:
有没有人知道更好的方法?
编辑:为了记录:我提议的实施确实按预期工作!
答案 0 :(得分:0)
听起来不错。请注意,在您调用shm_open()/ fruncate()的位置没有分配页面(不要忘记使用ftruncate()来设置大小!)。内核只是创建vma并等待将来的代码访问以将页面故障转换为物理内存。因此,在这种状态下调用numa_move_pages()可能会产生在相关NUMA节点中创建和填充新页面的效果。