我一直在尝试使用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)
答案 0 :(得分:5)
据我所知,Linux中没有实现峰值内存使用量,所以时间不会报告。大多数人使用次要页面错误的数量(1 == 4Kb块)作为所用内存量的指示。
请参阅示例here Linus Torvalds如何使用它来查找git性能。
我知道测量它的唯一方法是使用'ulimit'并使用二进制搜索来找到所需的最少内存量:)
答案 1 :(得分:3)
确实,时间并不普遍支持所有扩展功能。
还有valgind的替代品,例如mempatrol和电栅栏,它们没有相同的开销(但具有较少的花哨功能)。实际上,Valgrind实际上是荒谬的,并且你在运行时付出了代价。
您还可以查看使用systemtap脚本来获得类似的结果。
top也很有用。