gpt4 book ai didi

linux - NUMA 在虚拟内存中是如何表示的?

转载 作者:太空狗 更新时间:2023-10-29 12:12:44 26 4
gpt4 key购买 nike

有很多resources从硬件角度描述 NUMA 的架构和 performance implications编写支持 NUMA 的软件,但我还没有找到有关如何根据 NUMA 确定虚拟页面和物理框架之间的映射的信息。

更具体地说,在现代 Linux 上运行的应用程序仍然看到一个连续的虚拟地址空间。

应用程序如何判断地址空间的哪些部分映射到本地内存,哪些部分映射到另一个 NUMA 节点的内存?

如果应用程序无法回答,操作系统如何决定何时将虚拟页面映射到另一个 NUMA 节点的物理内存而不是本地物理内存?

最佳答案

一个快速的答案是让程序查看/proc/self/numa_maps。示例输出如下所示:

$ cat /proc/self/numa_maps    # dumps current zsh numa_maps
55a4d27ff000 default file=/usr/bin/zsh mapped=177 N0=177 kernelpagesize_kB=4
55a4d2ab9000 default file=/usr/bin/zsh anon=2 dirty=2 N0=2 kernelpagesize_kB=4
55a4d2abb000 default file=/usr/bin/zsh anon=6 dirty=6 N0=4 N1=2 kernelpagesize_kB=4
55a4d2ac1000 default anon=9 dirty=9 N0=4 N1=5 kernelpagesize_kB=4

每行显示的第一个字段是起始地址,允许与/proc/pid/maps 的输出相关联。那么N<node>=<pages>告诉您在每个节点上分配了多少页。

因此,如果您需要知道内存区域的 NUMA 节点号,请对该文件的输出进行平分搜索。

这里有更多信息:

https://www.kernel.org/doc/Documentation/vm/numa_memory_policy.txt https://lwn.net/Articles/486858/迈向更好的 NUMA 调度

关于linux - NUMA 在虚拟内存中是如何表示的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36709872/

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