监控超过 1 小时的内存消耗
Monitoring memory consumption over more than 1 hour
我正在尝试使用 Valgrind 的 massif 长时间监控进程的内存消耗。该进程处于活动状态并在特定时间间隔执行一些例行操作,我想查看所有进程的内存消耗。
我启动进程:
valgrind --tool=massif --trace-children=yes <program name> <arguments>
我的程序正在创建守护进程。
我看到 massif 为主进程创建了一个文件,该文件几乎立即退出,而另一个进程仍然存在。当我终止守护进程时,massif 会输出另一个包含守护进程 pid 的文件。但是,我注意到只有当我让进程 运行 不超过 15 分钟左右时,我才会得到第二个文件。如果我让它 运行 更多,则不会生成任何文件。 Valgrind 没有显示任何错误。
我怀疑 valgrind 无法处理如此大量的信息,对吗?关于如何以任何其他方式实现我的 objective 有什么建议吗?
我运行正在使用最新版本的 valgrind:3.12.0
如果 valgrind 遇到问题(例如内存不足的情况),
它应该产生一条错误消息。
valgrind 死时没有错误消息的可能原因是
valgrind killed -9 或被 OOM 杀死。
你可以做的检查是在另一个 window 的循环中使用 vgdb,
做类似的事情:
while true
do
vgdb .... valgrind monitor command ...
sleep 60
done
作为monitor命令,可以使用命令获取
valgrind 内存的内部状态:
vgdb v.info stats
或者,当运行在地块下时,你可以产生一个记忆
使用
每 60 秒左右拍摄一次快照
vgdb detailed_snapshot filenameXXX
(您需要更改每个快照的文件名)
有关 vgdb 和监视器命令的详细信息,请参阅 http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver。
我正在尝试使用 Valgrind 的 massif 长时间监控进程的内存消耗。该进程处于活动状态并在特定时间间隔执行一些例行操作,我想查看所有进程的内存消耗。
我启动进程:
valgrind --tool=massif --trace-children=yes <program name> <arguments>
我的程序正在创建守护进程。
我看到 massif 为主进程创建了一个文件,该文件几乎立即退出,而另一个进程仍然存在。当我终止守护进程时,massif 会输出另一个包含守护进程 pid 的文件。但是,我注意到只有当我让进程 运行 不超过 15 分钟左右时,我才会得到第二个文件。如果我让它 运行 更多,则不会生成任何文件。 Valgrind 没有显示任何错误。
我怀疑 valgrind 无法处理如此大量的信息,对吗?关于如何以任何其他方式实现我的 objective 有什么建议吗?
我运行正在使用最新版本的 valgrind:3.12.0
如果 valgrind 遇到问题(例如内存不足的情况), 它应该产生一条错误消息。 valgrind 死时没有错误消息的可能原因是 valgrind killed -9 或被 OOM 杀死。
你可以做的检查是在另一个 window 的循环中使用 vgdb, 做类似的事情:
while true
do
vgdb .... valgrind monitor command ...
sleep 60
done
作为monitor命令,可以使用命令获取 valgrind 内存的内部状态:
vgdb v.info stats
或者,当运行在地块下时,你可以产生一个记忆 使用
每 60 秒左右拍摄一次快照 vgdb detailed_snapshot filenameXXX
(您需要更改每个快照的文件名)
有关 vgdb 和监视器命令的详细信息,请参阅 http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver。