找出进程分配的内存所在的位置

找出进程分配的内存所在的位置

我想调查特定进程的内存分配在哪里。

更具体地说:我正在具有两个物理 CPU 的 ccNUMA 计算机上运行 OpenMP 并行 Fortran 二进制文件。我担心的是这个程序在初始化变量时违反了首次接触规则。这将导致内存以非平衡方式分配,即大部分内存将仅分配在一个物理 CPU 的地址空间中,而不是在两个 CPU 之间进行平衡。反过来,这将导致内存带宽有限的应用程序的扩展能力较差。

不幸的是,我无法访问源代码。因此,查看内存分配似乎是找出答案的好方法。欢迎其他想法。

根据评论进行编辑:OpenSUSE Leap 42.3,内核版本 4.4.103-36-default

答案1

在Linux下,您可以使用以下命令查询某个进程的虚拟地址空间过程(5)&映射(1)

因此,对于进程 1234,运行cat /proc/1234/maps, pmap 1234,cat /proc/1234/numa_maps

也可以看看努马(7),numa_maps(5),设置内存策略(2),数字化(8)

相关内容