5

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(...) )

有谁知道更好的方法?

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

4

1 回答 1

0

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

于 2012-08-15T00:01:06.017 回答