有没有工具可以在Ubuntu上可视化显示选中进程的内存使用情况?
ps aux
可以展示一个数字快照,但我真的想要一条线,可以看着它随着我操作进程而变化,希望能够发现意外行为。
有人有什么建议吗?
有没有工具可以在Ubuntu上可视化显示选中进程的内存使用情况?
ps aux
可以展示一个数字快照,但我真的想要一条线,可以看着它随着我操作进程而变化,希望能够发现意外行为。
有人有什么建议吗?
我找不到任何真正的工具来做这件事。
但我找到了一组整洁的小脚本,可以完成此任务。
使用这个小巧的Bash循环进行日志记录:
while true; do
ps -C <ProgramName> -o pid=,%mem=,vsz= >> /tmp/mem.log
gnuplot /tmp/show_mem.plt
sleep 1
done &
这将创建一个名为 /tmp/mem.log 的内存使用日志文件。然后,使用以下脚本(放在 /tmp/show_mem.plt
中)使用 gnuplot 生成数据的图像:
set term png small size 800,600
set output "mem-graph.png"
set ylabel "VSZ"
set y2label "%MEM"
set ytics nomirror
set y2tics nomirror in
set yrange [0:*]
set y2range [0:*]
plot "/tmp/mem.log" using 3 with lines axes x1y1 title "VSZ", \
"/tmp/mem.log" using 2 with lines axes x1y2 title "%MEM"
使用默认的GNOME图像查看器打开图像时,当它发生变化时,它会不断重新加载。因此,如果所有上述循环都在后台运行,它将出现在图像查看器内运行一个令人惊叹的内存使用图形工具:)
我现在正在跟踪的进程看起来像这样:
看起来我确实有一些内存问题:(
这其中有很多是从http://brunogirin.blogspot.com.au/2010/09/memory-usage-graphs-with-ps-and-gnuplot.html中摘录的,应该给予信用。
接受的答案对我有用,但是每次想要测量内存时都要做很多复制/粘贴,让我感到有些疲倦,因此我创建了一个小工具来解决这个问题:https://github.com/parikls/mem_usage_ui
安装方法:
pip install mem_usage_ui
在shell中输入mem_usage_ui
来启动浏览器GUI界面。
下面是结果的样子:
mem_usage_ui
很好用。谢谢! - silviot可以将目标进程 $PID
的常驻集大小流式传输到 ttyplot 进行实时显示:
while :; do grep -oP '^VmRSS:\s+\K\d+' /proc/$PID/status \
| numfmt --from-unit Ki --to-unit Mi; sleep 1; done | ttyplot -u Mi
ttyplot -u Mi
可以被替换为 feedgnuplot --stream --line --point --xlen 20
,在 GUI(例如 gnuplot
的图像导出)中获得几乎相同的绘图效果。feedgnuplot 可以通过 apt-get
安装。
pgrep
命令。将 $PID
替换为 $(pgrep --newest PROGRAM)
。 - saajPython包Memory Profiler也可用于非Python可执行文件。
使用mprof
生成完整的内存使用报告,并绘制它:
mprof run <executable>
mprof plot
剧情大致如下:
它已经可以在PyPI上安装了:
pip install -U memory_profiler
我非常喜欢使用"htop"而不是"top"。它非常丰富多彩,并且具有许多选项,例如设置、搜索、反转、树形结构、排序方式、优先级和进程终止等。你可以尝试一下:
$ sudo apt-get install htop
使用Top命令可以轻松解决问题。
top -b | grep {name of process}
top -b -p {PID}
top -b -u {userid}