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

标签 linux caching profiling

标题几乎概括了它。我需要基于每个线程的缓存命中/未命中之类的东西。我如何获得这些信息? Cachegrind 似乎不起作用,基于这样一个事实,即我的顺序程序给出了执行的 X 指令的计数,以及我的并行程序的 Y 指令的计数,除了 X=Y 之外,一切正常。我假设 Cachegrind 不适用于线程?我可以使用任何其他工具吗?谢谢。

最佳答案

您可以使用 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

关于linux - 如何测量多线程应用程序中的缓存性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996884/

相关文章:

python - 无法使用 python 子进程模块运行带 * 的 shell 命令

java - 像 Windows 一样的 Linux 上的想法键盘映射

linux - 无法使用 while 修改 bash 脚本 case 语句中的变量

java - 第一次执行时缓慢的 Hibernate 查询

linux - GPerfTools/pprof : what does a dashed line mean?

Linux内核数据结构

php - 迷你购物车更改未生效 - Magento 2

sql - SQL Server 是否缓存查询结果?

visual-studio-2012 - 使用 VSPerf.exe 而不是 VSPerfCmd.exe

java - 性能调整 : com. mchange.v2.resourcepool.Basicresourcepool.Awaitavailable() 方法占用应用程序的大部分运行时间