【问题标题】:How to find the memory consumption of a particular process in linux for every 5 seconds如何在linux中查找特定进程每5秒的内存消耗
【发布时间】:2013-01-16 11:38:48
【问题描述】:

我只想知道如何找到特定进程在特定时间(比如 5 秒)的内存消耗

我是 linux 新手。因此,将不胜感激执行此操作的详细步骤

【问题讨论】:

  • 你能定义一下“特定时间的内存消耗”对你意味着什么吗?请记住,一直为free-d 的内存区域通常仍(内部)由系统分配(因为它将被重新使用并在稍后返回malloc)。您可能想使用valgrind

标签: linux memory process pid


【解决方案1】:

您可以使用 SNMP 来获取网络中特定设备中进程的内存和 cpu 使用情况 :)

要求:

  • 运行进程的设备应该已安装并运行 snmp
  • snmp 应该配置为接受来自您将运行以下脚本的请求(它可以在 snmpd.conf 中配置)
  • 您应该知道您要监控的进程的进程 id(pid)

注意事项:

  • 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

【讨论】:

  • 内存输出将以千字节为单位
【解决方案2】:

使用top -p PID,其中 PID 是进程 ID。应显示有关进程的信息,包括已使用的系统内存百分比。键入d 和一个以秒为单位的整数以更改刷新率。

【讨论】:

  • 获取进程的PID,可以使用ps -aux | grep "process" 其中 "process" 是您要查找的进程的名称。
【解决方案3】:

使用watch 定期执行您的脚本。这是一个例子:

watch 'cat /proc/status' --interval=5

watch 'ps aux' --interval=5

【讨论】:

  • 如果我想检查一个特定的进程说 pid = 12468 ?
  • 目前我正在使用这篇文章来获取特定进程的 CPU 使用率和其他信息。 unix95= ps -p 12994 -o pid,sz,pcpu,ruser,args,time,stime,pmem,etime 我想每隔 5 秒检查一次
  • 使用 cat /proc/pid/status 之类的
  • 不管watch 间隔,ps u -p PID 不会像top 一样快地刷新它的值
  • 如果您想更好地了解进程12488的地址空间,请使用cat /proc/12488/maps...
【解决方案4】:

这个之前发布的问题:

How to measure actual memory usage of an application or process?

似乎它可以彻底解决您的问题。

编辑:我个人最喜欢的用于检查进程资源使用情况的 Linux 实用程序是顶级的,尽管由于我链接的问题中解释的原因,它可能会产生误导。

【讨论】:

  • 在你给的回复中发现我们可以看到进程及其启动时间,cpu使用率等等。除此之外,我想检查进程内存使用情况 5 秒
  • 你的意思是那个时期内存使用的变化?我的第一直觉可能是编写一个简单的脚本来运行一个命令,该命令每 5 秒输出一次进程的内存使用情况,并不断计算增量。
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 2017-02-16
  • 1970-01-01
  • 2010-10-02
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多