我需要获取有关我的应用程序的一些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)。
  • 当发生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/

    10-14 06:25