我需要获取有关我的应用程序的一些NUMA相关信息(例如,我不能使用numatop
工具,但可以使用numastat
)。因此,我对/proc/vmstat
中与NUMA相关的字段有一些疑问,不确定我是否正确理解了它们的含义。
这两个显然与(新)页面的分配有关。
numa_hit
已成功分配给的页面数这个节点。
numa_miss
在此节点上分配的页面数由于预期节点上的内存不足。
如何访问已经分配的页面?我对在一个节点上分配并从另一个节点访问的页面特别感兴趣。
这是我要找的两个吗?
numa_hint_faults
numa_hint_faults_local
最后,
numa_pages_migrated
记录有多少页由于放错位置而被迁移。 如果我使用来自
libnuma
的自定义调用(例如numa_bind
)以将进程强制绑定(bind)到节点,这对我有用吗?没有自动平衡,是否有任何页面迁移以增加此计数器? 最佳答案
这些是用于分析Automatic NUMA Balancing的指标。
平衡器的工作原理如下:
下次该进程访问这些页面中的地址时,将产生故障。
这些错误是有意的,被称为NUMA提示错误(NHF)。
现在,一个进程可能具有多个线程,并且当平衡器获取地址空间的一部分时,它无法知道哪个线程将访问哪个页面,因此它不能排除已经在其中一个线程正在执行的节点本地的页面。
例如,如果该进程在节点N1和N2中具有两个线程A e B,则平衡器无法跳过页面X,即使该页面已经在节点N1(或N2)的本地内存中也是如此。
因此,有时,平衡器会发现自己处于NHF页已在最接近线程的内存中的情况,这称为本地NHF。
本地NHF在总NHF中的百分比是所分配内存的拓 flutter 结构最佳程度的估计。
关于linux -/proc/vmstat中的NUMA信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61444982/