英语

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统计信息倾斜。