【问题标题】:How to profile shared memory?如何配置共享内存?
【发布时间】:2023-12-02 18:23:01
【问题描述】:

我有一个峰值内存使用量为 66MB 的程序,我正在尝试使用 Valgrind Massif 对其进行分析。不幸的是,Massif 仅显示 800KB 的峰值内存使用量。另一方面,top 告诉我 65MB 是共享内存。是否可以在 Linux 中分析程序的共享内存使用情况?

【问题讨论】:

  • 我知道 /proc/pid/smap,与 /proc/pid/maps 有什么区别?它能让我看到我的程序的整个“内存寿命”吗?

标签: c++ linux profile valgrind


【解决方案1】:

至少在 Valgrind 3.7.0 中,您有以下选项可以满足您的需求: --pages-as-heap=no|yes 页面级别的配置文件内存 [no]

【讨论】:

  • 为了完整起见,让我说我每秒对/proc/pic/smaps 进行采样并对输出进行后处理,但这只会给我每个库的内存使用情况。 valgrind --tool=massif --pages-as-heap=yes 好多了!