linux / unix进程的峰值内存使用情况

↘锁芯ラ 提交于 2020-02-27 21:11:08

是否有一个工具可以运行命令行并报告峰值RAM使用总量?

我在想象类似于/ usr / bin / time的东西


#1楼

Valgrind单线:

valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\\(.*\\)/\\1/' | sort -g | tail -n 1

注意使用--pages-as-heap来测量进程中的所有内存。 更多信息: http//valgrind.org/docs/manual/ms-manual.html


#2楼

如果进程运行至少几秒钟,那么您可以使用以下bash脚本,它将运行给定的命令行,然后打印到stderr峰值RSS(替换rss您感兴趣的任何其他属性)。 它有点轻量级,它适用于我使用Ubuntu 9.04中包含的ps (我不能说time )。

#!/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

#3楼

(这是一个已经回答的老问题..但仅仅是为了记录:)

我受到杨的剧本的启发,并提出了这个名为memusg的小工具。 我只是将采样率提高到0.1来处理很短的生活过程。 我没有监控单个进程,而是测量进程组的rss总和。 (是的,我写了很多单独的程序一起工作)它目前适用于Mac OS X和Linux。 用法必须是类似的time

memusg ls -alR / >/dev/null

它只显示当前的峰值,但我对记录其他(粗略)统计数据的轻微扩展感兴趣。

在我们开始任何严肃的分析之前,有这么简单的工具来看看它是很好的。


#4楼

在MacOS Sierra上使用:

/usr/bin/time -l commandToMeasure

您可以使用grep来获取您想要的内容。


#5楼

'htop'是最好的命令,看看哪个进程正在使用多少内存.....

有关详细信息,请访问http://manpages.ubuntu.com/manpages/precise/man1/htop.1.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!