Numa策略命中/未命中统计¶
/sys/devices/system/node/node*/numastat
所有单位都是页。Hugepages有单独的计数器。
numa_hit,numa_miss和numa_foreign计数器反映了进程从它们首选的节点分配内存的能力。如果它们成功,则首选节点上的numa_hit会递增,否则首选节点上的numa_foreign会递增,而分配成功的节点上的numa_miss会递增。
通常,首选节点是进程执行的CPU的本地节点,但是诸如内存策略之类的限制可能会改变这一点,因此还有两个基于CPU本地节点的计数器。local_node类似于numa_hit,并且在同一节点上的CPU从节点分配时递增。other_node类似于numa_miss,并且在来自不同节点的CPU成功分配时递增。请注意,没有类似于numa_foreign的计数器。
更详细地说明
numa_hit |
一个进程想要从此节点分配内存,并且成功了。 |
numa_miss |
一个进程想要从另一个节点分配内存,但最终从此节点获取了内存。 |
numa_foreign |
一个进程想要在此节点上分配,但最终从另一个节点获取了内存。 |
local_node |
一个进程在此节点的CPU上运行,并从此节点获取了内存。 |
other_node |
一个进程在不同节点的CPU上运行,并从此节点获取了内存。 |
interleave_hit |
交错想要从此节点分配并且成功了。 |
为了更易于阅读,您可以使用numactl软件包中的numastat实用程序 (http://oss.sgi.com/projects/libnuma/)。请注意,它目前仅在具有少量CPU的计算机上运行良好。
请注意,在具有无内存节点的系统上(其中一个节点具有CPU但没有内存),numa_hit,numa_miss和numa_foreign统计信息可能会严重倾斜。在当前的内核实现中,如果一个进程首选一个无内存节点(即,因为它运行在其本地CPU之一上),则该实现实际上将具有内存的最近节点之一视为首选节点。结果,这种分配不会增加无内存节点上的numa_foreign计数器,并且会使最近节点的numa_hit,numa_miss和numa_foreign统计信息倾斜。