如何使用 Visual 2013 分析缓存未命中

Posted

技术标签:

【中文标题】如何使用 Visual 2013 分析缓存未命中【英文标题】:How to profile Cache misses with visual 2013 【发布时间】:2014-12-29 10:49:49 【问题描述】:

我正在尝试在 Visual Studio 2013 上对一个小型控制台应用程序进行基准测试。

我在检测模式下设置了一个性能会话,在该会话中我激活了 CPU 计数器集合,并选择了“Last Level Cache Misses”。

当我得到替补席的报告时,我看不到任何包含此信息的列,即使我查看“添加/删除列”菜单也是如此。

你能帮帮我吗?

提前致谢。

##一些额外信息

我关注了这篇博文 http://blogs.msdn.com/b/mgoldin/archive/2010/06/21/cpu-performance-counters-in-visual-studio-2010-profiler.aspx(并阅读了来自 MSDN 的文章,就像 http://msdn.microsoft.com/en-us/library/bb385772.aspx 一样) 还有我的性能会话设置:

【问题讨论】:

【参考方案1】:

在您尝试运行时检查输出日志。有没有像下面这样的线?

Warning VSP2347: The monitor was unable to start the VS performance driver.  Access is denied. Consider using the /Admin:Driver,Start and /Admin:Security options of VSPerfCmd from an elevated environment.  Performance counter data and detection of kernel mode execution is disabled.

如果是这样,请尝试以管理员身份运行 Visual Studio。如果我不以管理员身份运行,同样的事情会发生在我身上,不会出现任何列并且会显示该消息。

另外,为了保存以管理员身份运行的 Visual Studio,可以授予任何用户使用性能驱动程序的权限。见https://docs.microsoft.com/en-us/visualstudio/profiling/how-to-set-permissions?view=vs-2017。

【讨论】:

【参考方案2】:

如果您单击显示摘要(默认页面)的“当前视图”下拉菜单,请转到“调用树”,相应的列应显示在那里。

【讨论】:

以上是关于如何使用 Visual 2013 分析缓存未命中的主要内容,如果未能解决你的问题,请参考以下文章

分析例程的缓存未命中

spring-data-redis multiGet 如何处理缓存未命中?

如何在 Linux 中通过 perf 工具捕获 L3 缓存命中和未命中

代码分析器哪些参数显示缓存未命中?

为啥 perf 不报告缓存未命中?

是啥导致我的代码中的缓存未命中?