【问题标题】:NUMA information in /proc/vmstat/proc/vmstat 中的 NUMA 信息
【发布时间】:2020-04-26 17:21:23
【问题描述】:

我需要获取有关我的应用程序的一些 NUMA 相关信息(例如,我不能使用 numatop 工具,但我可以使用 numastat)。因此,我对/proc/vmstat 中的 NUMA 相关字段有一些疑问,不确定我是否正确理解了它们的含义。

这两个显然与(新)页面的分配有关。

  • numa_hit 成功分配的页数 这个节点。

  • numa_miss 在该节点上分配的页数 因为预期节点上的内存不足。

如何访问已分配的页面?我对分配在一个节点上并从另一个节点访问的页面特别感兴趣。 这两个是我要找的吗?

  • numa_hint_faults
  • numa_hint_faults_local

最后,

  • numa_pages_migrated 记录有多少页面因为放错位置而被迁移。

如果我使用来自libnuma 的自定义调用(例如numa_bind)来强制将进程绑定到节点,这对我有用吗?如果没有自动平衡,是否会迁移任何页面来增加此计数器?

【问题讨论】:

    标签: linux performance numa


    【解决方案1】:

    这些是用于分析Automatic NUMA Balancing 的指标。

    平衡器的工作原理如下:

    1. 当被检查的进程没有被调度时,其地址空间的部分被扫描并且每个页面被标记为不存在。
      这将在进程下次访问这些页面中的地址时产生错误。
      这些错误是有意为之并称为 NUMA 提示错误 (NHF)。
    2. 当 NHF 发生时,内核会将页面迁移到故障线程的本地内存。

    现在,一个进程可能有多个线程,并且当平衡器获取地址空间的一部分时,它不知道哪个线程将访问哪个页面,因此它不能排除已经在其中一个线程所在节点的本地页面正在执行。

    例如,如果进程在节点 N1 和 N2 中有两个线程 A e B,即使页面 X 已经在节点 N1(或 N2)的本地内存中,平衡器也无法跳过页面 X。
    所以有时,平衡器会发现自己处于 NHF 页面已经在最靠近线程的内存中的情况,这被称为 本地 NHF。

    本地 NHF 占总 NHF 的百分比是对分配内存的拓扑优化程度的估计。

    【讨论】:

    • 看来你是对的,计数器似乎不受手动绑定到 numa 节点的代码的影响
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多