【问题标题】:Get the location of a memory in NUMA在NUMA中获取内存的位置
【发布时间】:2014-08-18 04:04:28
【问题描述】:

我目前正在开发具有 2 个节点的 NUMA 系统。我得到了一个指向某个内存的指针,但是我不知道它在哪个节点。有什么办法可以得到内存的节点号吗?

(获取当前线程的节点掩码不起作用的原因是,该节点的内存已满,所以即使该线程与当前节点关联,它仍然可能在相邻节点上分配内存.因此,我正在寻求一种直接获取内存位置的方法。)

【问题讨论】:

    标签: c memory memory-management numa numactl


    【解决方案1】:

    这在 Linux 上使用 numa_move_pages 是可行的。这只是move pages 的糖。如果你不向它传递任何节点,它会返回 status 中指针的 N​​UMA 节点的 id。 请注意,您的指针需要指向驻留在物理内存中的页面(即已经出现页面错误),否则您将获得 ENOENT。

    【讨论】:

      【解决方案2】:

      您可能需要检查 NUMA API:http://linux.die.net/man/3/numa。粗略一看,numa_alloc_onnode()numa_get_run_node_mask() 非常有用。

      可能API中的一些函数组合可以帮助你解决你想知道节点号的原因。

      【讨论】:

      • 感谢您的回答。我想到了这一点,但似乎它不起作用,因为我当前的节点可能已满,并且内存可能分配在另一个节点上。所以我正在寻找一种直接的方法来获取内存位置......
      猜你喜欢
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 2018-04-02
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多