用于测量内存使用情况的GNU“time”命令的问题

时间:2009-06-15 21:34:44

标签: linux memory-management

我一直在尝试使用time命令/ 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)

2 个答案:

答案 0 :(得分:5)

据我所知,Linux中没有实现峰值内存使用量,所以时间不会报告。大多数人使用次要页面错误的数量(1 == 4Kb块)作为所用内存量的指示。

请参阅示例here Linus Torvalds如何使用它来查找git性能。

我知道测量它的唯一方法是使用'ulimit'并使用二进制搜索来找到所需的最少内存量:)

答案 1 :(得分:3)

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

还有valgind的替代品,例如mempatrol和电栅栏,它们没有相同的开销(但具有较少的花哨功能)。实际上,Valgrind实际上是荒谬的,并且你在运行时付出了代价。

您还可以查看使用systemtap脚本来获得类似的结果。

top也很有用。