首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何统计对远程NUMA内存节点的内存访问次数?

如何统计对远程NUMA内存节点的内存访问次数?
EN

Stack Overflow用户
提问于 2011-08-11 20:11:47
回答 3查看 1.8K关注 0票数 3

在最近的linux分布式共享内存系统上运行的多线程应用程序中,有没有一种直接的方法来计算每个线程对远程(非本地) NUMA内存节点的请求数量?

我正在考虑使用PAPI来计算互连流量。这是要走的路吗?

在我的应用程序中,线程在其整个生命周期内都绑定到特定的核心或处理器。当应用程序开始时,将按页方式分配内存,并以循环方式跨所有可用的NUMA内存节点分配内存。

感谢您的回答。

EN

回答 3

Stack Overflow用户

发布于 2013-03-25 22:35:10

如果您可以访问VTune,则硬件计数器将对本地和远程NUMA节点访问进行计数: OFFCORE_RESPONSE.ANY_DATA.OTHER_LOCAL_DRAM_0表示快速本地NUMA节点访问,OFFCORE_RESPONSE.ANY_DATA.REMOTE_DRAM_0表示较慢的远程NUMA节点访问。

计数器在VTune中的显示方式:

计数器在两种情况下的外观:

NUMA不满意代码:核心0 (NUMA节点0)递增驻留在NUMA节点1上的50 MB:

NUMA快乐代码:核心0 (NUMA节点0)增加驻留在NUMA节点0上的50 MB:

票数 4
EN

Stack Overflow用户

发布于 2016-12-03 07:28:27

我发现Intel PCM附带的pcm-numa.x工具非常有用。它告诉您每个核心访问本地或远程NUMA节点的次数。

票数 1
EN

Stack Overflow用户

发布于 2011-11-12 13:28:08

我不确定这是否符合直截了当的标准,我也不知道什么是“分布式共享内存系统”,但无论如何,在普通的Linux上,如果您有权访问源代码,您可能能够自己计算请求数。你可以用我的答案“我能从指针地址获取NUMA节点吗?”问题here来确定请求的内存在哪个节点上,并知道你的线程在哪个节点上合计远程请求。这只会告诉您使用远程内存的频率,而不是告诉您该内存何时不在本地缓存中并且必须获取,因此它可能不是您想要的。

如果您想了解远程内存上的缓存未命中,请尝试在您的问题中添加分析标记-它可能会吸引更多的读者。如果有一个分析器可以区分本地内存未命中和远程内存未命中,我也很有兴趣找出来。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7025612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档