测量Linux中NUMA节点缓存未命中/命中的工具?
问题描述:
我正在AMD阿布扎比架构上执行多线程程序,它有8个NUMA域。我正在使用numactl在不同核心中分配线程,并尝试使用不同的内存策略。我想测量由NUMA域安排的缓存未命中/命中,但是使用像perf这样的工具获得了总计数器。我已经浏览过numastat,likwid和hpctoolkit等工具。你知道有哪些工具可以获得由NUMA域隔开的标准性能计数器吗?测量Linux中NUMA节点缓存未命中/命中的工具?
答
numastat不足以满足您的需求吗?
>numastat
node0 node1 node2 node3
numa_hit 2511148413 2668024472 2541805396 2631938751
numa_miss 687767 186973 510852 79546
numa_foreign 544853 1772504 1306738 1461626
interleave_hit 14268 14291 14281 14309
local_node 2509822983 2667700745 2541325673 2631417570
other_node 2013197 510700 990575 600727
node4 node5 node6 node7
numa_hit 2551615375 2287945142 2199394273 2506262343
numa_miss 1178554 1863536 2037710 1278384
numa_foreign 1709984 541463 241266 244888
interleave_hit 14287 14274 14291 14294
local_node 2551212630 2278515165 2198877939 2505436756
other_node 1581299 11293513 2554044 2103971
+0
嗨,谢谢你的回答。 Numastat没有提供足够的信息,因为只显示请求的页面是否在特定节点中,而没有考虑哪个节点请求该页面。我想知道有多少请求在其域和特定节点之外创建了特定节点。你明白我的意思吗? – Jofe
在perf stat中使用--per-socket参数允许我获得所需的计数器。尽管不是我想要的,因为在AMD架构中每个插座有2个NUMA节点。 – Jofe