NUMA感知命名的共享内存的Linux(NUMA-aware named shared memory

2019-09-21 05:00发布

在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(...)再次)

有谁知道一个更好的办法?

编辑:为了记录:如预期我所建议的实现不工作!

Answer 1:

这听起来很正确的。 请注意,有没有在点分配的页面,您拨打的shm_open()/ fruncate()(不要忘记ftruncate()设置大小!)。 内核简单地创建了VMA并等待将来的代码访问故障的页面到物理内存。 因此调用numa_move_pages()在这种状态下将可能有创建和填充在相关NUMA节点新页面的效果。



文章来源: NUMA-aware named shared memory for Linux