是否有一种工具可以运行命令行并报告峰值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获取你想要的。