【问题标题】:Retrieve memory and cache misses: executables and scripts检索内存和缓存未命中:可执行文件和脚本
【发布时间】:2016-03-18 22:06:05
【问题描述】:

我需要找到一些理论上容易,但实际上很棘手的东西。

在 OSX 下有一堆工具,其中一些是:

  • 预编译的 java jar,
  • 预编译可执行文件,可以生成和调用其他程序,
  • bash/python/perl 脚本调用一些预编译的可执行文件,

我需要查找和分类内存和缓存事件。预编译是指我无法访问源代码。

详细来说,我需要找出总体占用的内存、页面错误和虚拟内存事件,但更重要的是,L1/L2/L3 缓存未命中。这意味着我还需要跟踪所有生成的进程,而不仅仅是主程序。

欢迎任何提示!

【问题讨论】:

  • 我不知道 OSX,但在我知道的系统(Windows、Linux 或 FreeBSD)上,我会在标准监控工具中进行搜索。我认为他们应该满足您的要求的最大部分。然后我会在系统库中查找仍然存在的内容......

标签: python bash perl caching profiling


【解决方案1】:

我认为你应该使用 Valgrind。要获得内存使用情况的完整报告:

valgrind --tool=massif --stacks=yes

这将为您提供堆和堆栈内存使用情况。然后将信息存储在文件massif.out.????你可以阅读

ms_print massif.out.?????

我已经写了一篇关于这个的帖子:post

Valgrind 还记录缓存事件,它为您提供缓存未命中和缓存事件的完整详细输出:

valgrind --tool=cachegrind prog

然后对于地块,您有一个工具可以读取详细输出:

cg_annotate <filename>

请参阅完整的documentation 以了解输出。 选项 --trace-children=yes 允许分析生成的孩子

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多