使用GNU "time"命令测量内存使用情况的问题

7
我一直在尝试使用time命令(/usr/bin/time)来测量Linux系统上程序的峰值内存消耗。无论我尝试哪个可执行文件,我都能得到正确的运行时间,但内存使用量始终为0。
time的典型输出如下所示:
8.68user 0.04system 0:08.73elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+16outputs (0major+20366minor)pagefaults 0swaps
我不理解的零是:
0avgtext+0avgdata 0maxresident
我已经在Google上搜索过,而且我知道GNU time实际上无法计算其手册中提到的那些内存使用数据。我的理解正确吗?有没有其他类似的命令可以达到相同的效果?(而无需使用valgrind)
2个回答

6
我所知道的是,在Linux中没有实现峰值内存使用情况,因此时间不会报告它。大多数人使用次要页面错误的数量(1 == 4Kb块)作为内存使用量的指标。
例如,Linus Torvalds在这里使用它来查看git性能。
否则,我所知道的唯一测量方法是使用“ulimit”并使用二进制搜索找到最少需要的内存量 :)

4

可以肯定的是,时间并不支持所有扩展功能。

除了像mempatrol和electric fence这样没有相同开销(但功能更少)的替代品外,还有valgrind。实际上,valgrind对此过于强大,运行时会受到影响。

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

top也非常有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接