关于linux:使用GNU”时间”命令来测量内存使用情况的问题

problem with the GNU “time” command to measure memory usage

我一直在尝试使用时间命令/ usr / bin / time来测量Linux系统上程序的峰值内存消耗。
与我尝试使用的可执行文件无关,对于运行时间,我可以获得正确的答案,但是内存使用率始终为0。

时间的典型输出如下:

8.68user 0.04system 0:08.73elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+16outputs (0major+20366minor)pagefaults 0swaps

我不理解的零是:

0avgtext+0avgdata 0maxresident

我在Google上四处搜寻,我发现GNU时间实际上无法计算出
手册页中引用的内存使用情况数据。我对么?
为了达到同样的效果,我可以使用什么替代命令? (无需锻炼valgrind)


据我所知,

峰值内存使用率未在Linux中实现,因此时间不会报告它。大多数人使用次要的页面错误数(1 == 4Kb块)来指示所使用的内存量。

例如,在这里查看Linus Torvalds如何使用它来查找git性能。

否则,我唯一想衡量的方法是使用'ulimit'并使用二进制搜索来查找所需的最小内存量:)


确实,时间并不普遍支持所有扩展功能。

有valgrind替代品,例如mempatrol和电篱笆,它们没有相同的开销(但花哨的功能较少)。实际上,Valgrind太强大了,而您需要在运行时为此付费。

您也可以考虑使用systemtap脚本来实现类似的结果。

top也非常有用。