如何测量多线程应用程序中的缓存性能?

发布于 2024-12-28 16:53:28 字数 161 浏览 0 评论 0原文

我需要像每个线程的缓存命中/未命中之类的东西。我如何获取该信息? Cachegrind 似乎不起作用,基于这样的事实:我的顺序程序给出了执行的 X 指令的计数,以及我的并行程序的 Y 的计数,除了 X=Y 之外,一切都OK。

我认为 Cachegrind 不适用于线程?我还可以使用其他工具吗?

I need something like cache hits/misses on a per thread basis. How do I obtain that information? Cachegrind doesn't seem to work, based on the fact that my sequential program gives a count of X instructions executed, and of Y for my parallel program, all OK, except for the fact that X=Y.

I assume Cachegrind is not for threads? Any other tools I could use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只有影子陪我不离不弃 2025-01-04 16:53:28

您可以使用 perf 从硬件性能计数器获取所需的信息。

尝试:

$ perf stat -e cache-misses,cache-references /bin/ls /tmp/
...

Performance counter stats for '/bin/ls /tmp/':

             3,534 cache-misses              #   16.605 % of all cache refs    
            21,283 cache-references                                            

       0.001649284 seconds time elapsed

You can use perf to get the information you want from the hardware performance counters.

try:

$ perf stat -e cache-misses,cache-references /bin/ls /tmp/
...

Performance counter stats for '/bin/ls /tmp/':

             3,534 cache-misses              #   16.605 % of all cache refs    
            21,283 cache-references                                            

       0.001649284 seconds time elapsed
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文