【问题标题】:Does running Valgrind slow down my application?运行 Valgrind 会减慢我的应用程序吗?
【发布时间】:2015-03-31 09:49:54
【问题描述】:

我只是想跟踪各种进程正在使用多少内存(不同的选项可以从根本上改变这个特定应用程序的内存使用情况)。我不喜欢其他地方描述的各种“查找进程 pid 和 grok /proc/pid/smaps”解决方案......

是否有替代命令可以只转储特定进程的内存使用情况?备忘录?

【问题讨论】:

    标签: linux memory valgrind


    【解决方案1】:

    根据Valgrind Manual,Valgrind 会显着减慢您的应用程序:

    添加的检测代码量因工具而异。 在规模的一端,Memcheck 添加代码来检查每个内存 访问并计算每个值,使其运行速度慢 10-50 倍 本地人。在光谱的另一端,最小的工具,称为 Nulgrind,根本不添加任何仪器,并且总共“仅”导致 大约减速 4 倍。

    根据我的经验,Valgrind 确实将应用程序的速度降低了大约 10 倍。

    您需要报告多详细的内存使用情况? topRES 列)还不够吗?

    【讨论】:

    • top(RES 栏)很好,我只是想要一种自动的方式来做。
    • 然后也许可以尝试这样的事情:awk '{print 4*$2}' < /proc/30321/statm 它将打印 PID 30321 的 RES 内存使用情况(以千字节为单位)。请参阅“man proc”(linux.die.net/man/5/proc)了解有关/proc//statm 文件。
    • 有没有一种 bash 方法可以在一行中找到 pid?即 "run_x; awk '{print 4*$2}' /${xxy}/statm"?
    • 是的,${!} 是一个特殊的 shell 变量,其中包含在后台启动的最后一个进程的 PID。所以run_x & awk '{print 4*$2}' < /proc/${!}/statm 将启动“run_x”,然后打印 RES 内存 - 但请注意,这只会在启动时打印一次内存使用情况。您可能可以在命令中添加一个循环来定期打印内存使用情况。详情请查看 shell 脚本教程。
    • @oliver,如果使用Nulgrind,发现memory leaks错误的能力和Valgrind一样吗?有没有退化?
    【解决方案2】:

    刚刚查看了“time valgrind memhog 1024m”,它大约慢了 10 倍。不要注意到“memusage”有任何减速。

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      相关资源
      最近更新 更多