支持NUMA的Linux命名共享内存

Ben*_*Ben 5 linux memory shared numa

Windows API提供CreateFileMappingNuma函数(http://msdn.microsoft.com/en-us/library/windows/desktop/aa366539(v=vs.85).aspx)以在特定NUMA上创建命名共享内存空间节点.

到目前为止,我还没有找到Linux的等效功能.

我目前的方法如下:

  1. 分配命名的共享内存(使用shm_open(...))
  2. 确定当前的NUMA节点(使用numa_move_pages(...))
  3. 将页面移动到目标节点(再次使用numa_move_pages(...))

有谁知道更好的方法?

编辑:为了记录:我提出的实施确实按预期工作!

And*_*oss 0

听起来不错。请注意,在调用 shm_open()/fruncate() 时没有分配页面(不要忘记 ftruncate() 设置大小!)。内核只是创建 vma 并等待将来的代码访问以将页面故障转移到物理内存中。因此,在此状态下调用 numa_move_pages() 可能会产生在相关 NUMA 节点中创建和填充新页面的效果。