Windows API 提供了 CreateFileMappingNuma 函数(http://msdn.microsoft.com/en-us/library/windows/desktop/aa366539(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa366539(v=vs.85).aspx)在特定 NUMA 节点上创建命名共享内存空间。
到目前为止,我还没有找到Linux下的等效功能。
我当前的方法如下所示:
- 分配命名共享内存(使用 shm_open(...))
- 确定当前 NUMA 节点(使用 numa_move_pages(...))
- 将页面移动到目标节点(再次使用 numa_move_pages(...) )
有谁知道更好的方法?
编辑:郑重声明:我提议的实施确实按预期工作!
听起来不错。请注意,在调用 shm_open()/fruncate() 时没有分配页面(不要忘记 ftruncate() 设置大小!)。内核只是创建 vma 并等待将来的代码访问以将页面故障转移到物理内存中。因此,在此状态下调用 numa_move_pages() 可能会产生在相关 NUMA 节点中创建和填充新页面的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)