【发布时间】:2015-03-31 09:49:54
【问题描述】:
我只是想跟踪各种进程正在使用多少内存(不同的选项可以从根本上改变这个特定应用程序的内存使用情况)。我不喜欢其他地方描述的各种“查找进程 pid 和 grok /proc/pid/smaps”解决方案......
是否有替代命令可以只转储特定进程的内存使用情况?备忘录?
【问题讨论】:
我只是想跟踪各种进程正在使用多少内存(不同的选项可以从根本上改变这个特定应用程序的内存使用情况)。我不喜欢其他地方描述的各种“查找进程 pid 和 grok /proc/pid/smaps”解决方案......
是否有替代命令可以只转储特定进程的内存使用情况?备忘录?
【问题讨论】:
根据Valgrind Manual,Valgrind 会显着减慢您的应用程序:
添加的检测代码量因工具而异。 在规模的一端,Memcheck 添加代码来检查每个内存 访问并计算每个值,使其运行速度慢 10-50 倍 本地人。在光谱的另一端,最小的工具,称为 Nulgrind,根本不添加任何仪器,并且总共“仅”导致 大约减速 4 倍。
根据我的经验,Valgrind 确实将应用程序的速度降低了大约 10 倍。
您需要报告多详细的内存使用情况? top(RES 列)还不够吗?
【讨论】:
awk '{print 4*$2}' < /proc/30321/statm 它将打印 PID 30321 的 RES 内存使用情况(以千字节为单位)。请参阅“man proc”(linux.die.net/man/5/proc)了解有关/proc/${!} 是一个特殊的 shell 变量,其中包含在后台启动的最后一个进程的 PID。所以run_x & awk '{print 4*$2}' < /proc/${!}/statm 将启动“run_x”,然后打印 RES 内存 - 但请注意,这只会在启动时打印一次内存使用情况。您可能可以在命令中添加一个循环来定期打印内存使用情况。详情请查看 shell 脚本教程。
memory leaks错误的能力和Valgrind一样吗?有没有退化?
刚刚查看了“time valgrind memhog 1024m”,它大约慢了 10 倍。不要注意到“memusage”有任何减速。
【讨论】: