gpt4 book ai didi

在特定 NUMA 节点上创建命名共享内存?

转载 作者:IT王子 更新时间:2023-10-29 00:22:31 43 4
gpt4 key购买 nike

类似于此post ,我想在特定的 NUMA 节点(不一定是本地)上创建一个命名的共享内存段(通过 shm_open() + mmap() 在 CentOS 7 上创建)。该帖子建议使用 numa_move_pages() 来实现。

我还有几个问题:

  1. 如果另一个进程(在不同 NUMA 的本地核心上运行)稍后启动并且 mmap() 到同一个命名共享内存段,操作系统是否会决定移动命名共享内存段此进程本地的 NUMA 的内存段?如果是,我该如何预防?

  2. 在我通过numa_move_pages()指定后,是否有其他情况将命名的共享内存段移动到另一个NUMA?

  3. 给定 /shm/dev 中的命名共享内存段,我如何检查它属于哪个 NUMA 节点?

我查看了 numactl,它的 --membind 选项关闭了我想要的,但我不确定如果两个不同的进程使用 --membind 到 2 个不同的节点。谁赢?如果 #3 得到回答,我想我可以测试一下。

谢谢!

最佳答案

我只想回答第 1 点和第 3 点。

第 1 点:

据我记得我的老师和这是什么link说:NUMA 机器上的页面可以移动到最靠近调用最多的 CPU。换句话说:如果您的页面分配在 bank 0 但直接连接到 bank 1 的 CPU 使用它的频率更高,那么您的页面将移动到 bank 1。

第 3 点:

给定一个命名的共享内存我不知道你是如何得到调用 numa 节点的,但是给定一个在这个共享内存中的指针你可以通过调用获得它的内存策略:get_mempolicy()

if flags specifies MPOL_F_ADDR, then information is returned about the policy governing the memory address given in addr. This policy may be different from the process's default policy if mbind(2) or one of the helper functions described in numa(3) has been used to establish a policy for the memory range containing addr.

来自 get_mempolicy() 的手册页 here

关于在特定 NUMA 节点上创建命名共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51692869/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com