【发布时间】:2013-01-16 11:38:48
【问题描述】:
我只想知道如何找到特定进程在特定时间(比如 5 秒)的内存消耗
我是 linux 新手。因此,将不胜感激执行此操作的详细步骤
【问题讨论】:
-
你能定义一下“特定时间的内存消耗”对你意味着什么吗?请记住,一直为
free-d 的内存区域通常仍(内部)由系统分配(因为它将被重新使用并在稍后返回malloc)。您可能想使用valgrind
我只想知道如何找到特定进程在特定时间(比如 5 秒)的内存消耗
我是 linux 新手。因此,将不胜感激执行此操作的详细步骤
【问题讨论】:
free-d 的内存区域通常仍(内部)由系统分配(因为它将被重新使用并在稍后返回malloc)。您可能想使用valgrind
您可以使用 SNMP 来获取网络中特定设备中进程的内存和 cpu 使用情况 :)
要求:
注意事项:
HOST-RESOURCES-MIB::hrSWRunPerfCPU 是该进程消耗的系统总 CPU 资源的厘秒数。请注意,在多处理器系统上,该值可能会在 1 厘秒的实际(挂钟)时间内增加超过 1 厘秒。
HOST-RESOURCES-MIB::hrSWRunPerfMem 是分配给该进程的实际系统内存总量。
**
进程监控脚本:
**
echo "IP: "
read ip
echo "specfiy pid: "
read pid
echo "interval in seconds:"
read interval
while [ 1 ]
do
date
snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfCPU.$pid
snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfMem.$pid
sleep $interval;
done
【讨论】:
使用top -p PID,其中 PID 是进程 ID。应显示有关进程的信息,包括已使用的系统内存百分比。键入d 和一个以秒为单位的整数以更改刷新率。
【讨论】:
使用watch 定期执行您的脚本。这是一个例子:
watch 'cat /proc/status' --interval=5
watch 'ps aux' --interval=5
【讨论】:
watch 间隔,ps u -p PID 不会像top 一样快地刷新它的值
cat /proc/12488/maps...
这个之前发布的问题:
How to measure actual memory usage of an application or process?
似乎它可以彻底解决您的问题。
编辑:我个人最喜欢的用于检查进程资源使用情况的 Linux 实用程序是顶级的,尽管由于我链接的问题中解释的原因,它可能会产生误导。
【讨论】: