是否有一种工具可以运行命令行并报告峰值RAM使用总量?
我正在想象类似于/usr/bin/time的东西
是否有一种工具可以运行命令行并报告峰值RAM使用总量?
我正在想象类似于/usr/bin/time的东西
当前回答
time -f '%M' <run_program>
其他回答
如果进程运行了至少几秒钟,那么您可以使用以下bash脚本,它将运行给定的命令行,然后将峰值RSS打印到stderr(替代RSS您感兴趣的任何其他属性)。它有点轻量,它适用于Ubuntu 9.04中包含的ps(我不能说时间)。
#!/usr/bin/env bash
"$@" & # Run the given command line in the background.
pid=$! peak=0
while true; do
sleep 1
sample="$(ps -o rss= $pid 2> /dev/null)" || break
let peak='sample > peak ? sample : peak'
done
echo "Peak: $peak" 1>&2
/usr/bin/time可能是你想要的。喜欢的东西。
/usr/bin/time --format='(%Xtext+%Ddata %Mmax)'
详见第(1)段。
在macOS上,可以改用DTrace。“Instruments”应用是一个很好的GUI,它带有XCode afaik。
这里有一个单行程序,不需要任何外部脚本或实用程序,也不需要你通过Valgrind或time等其他程序启动进程,所以你可以将它用于任何已经运行的进程:
grep ^VmPeak /proc/$PID/status
(将$PID替换为您感兴趣的进程的PID)
在MacOS Sierra上使用:
/usr/bin/time -l commandToMeasure
你可以用grep获取你想要的。