9

I just want to know how to find the memory consumption of a particular process for particular time(say 5 seconds)

I am new to linux. So, detailed steps of doing that will be appreciated

0x90
  • 39,472
  • 36
  • 165
  • 245
Vamsi
  • 619
  • 3
  • 9
  • 22
  • Could you define what does "memory consumption for a particular time" means to you?? Remember that a memory zone which has been `free`-d is often still (internally) allocated by the system (because it will be re-used and given back at some later `malloc`). You may want to use `valgrind` – Basile Starynkevitch Feb 01 '13 at 08:40

4 Answers4

29

Use top -p PID where PID is the process ID. Information about the process should be displayed, including percent of system memory used. Type d and an integer in seconds to change the refresh rate.

dward
  • 776
  • 5
  • 9
5

use watch to periodically execute your script. here is an example:

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

watch 'ps aux' --interval=5
0x90
  • 39,472
  • 36
  • 165
  • 245
  • if i want to check for a particular process say pid = 12468 ? – Vamsi Feb 01 '13 at 07:55
  • Presently i am using this piece to get the CPU usage and the other info of a particular process. unix95= ps -p 12994 -o pid,sz,pcpu,ruser,args,time,stime,pmem,etime I want to check this for every time interval of 5 seconds – Vamsi Feb 01 '13 at 07:58
  • 2
    use cat /proc/pid/status or whatever – 0x90 Feb 01 '13 at 08:07
  • Regardless of the `watch` interval, `ps u -p PID` will not refresh it's values as fast as `top` – dward Feb 01 '13 at 08:15
  • 1
    Or use `cat /proc/12488/maps` if you want a better understanding of the address space of process 12488... – Basile Starynkevitch Feb 01 '13 at 08:44
5

you may use SNMP to get the memory and cpu usage of a process in a particular device in network :)

Requirements:

  • the device running the process should have snmp installed and running
  • snmp should be configured to accept requests from where you will run the script below(it may be configured in snmpd.conf)
  • you should know the process id(pid) of the process you want to monitor

Notes:

  • HOST-RESOURCES-MIB::hrSWRunPerfCPU is the number of centi-seconds of the total system's CPU resources consumed by this process. Note that on a multi-processor system, this value may increment by more than one centi-second in one centi-second of real (wall clock) time.

  • HOST-RESOURCES-MIB::hrSWRunPerfMem is the total amount of real system memory allocated to this process.

**

Process monitoring script:

**

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
3

This previously posted question:

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

seems like it may thoroughly address your question.

edit: My personal favorite Linux utility for checking the resource usage of processes is top, though it can be misleading for reasons that are explained in the question I linked.

Community
  • 1
  • 1
mdunsmuir
  • 492
  • 2
  • 8
  • in the reply that you have given it is found that we can see process and their starting time, cpu usage and all. In addition to that i want to check the process memory usage for 5 seconds – Vamsi Feb 01 '13 at 07:40
  • Do you mean the *change* in memory usage over that period? My first instinct might be to write a simple script to run a command that outputs a process's memory usage every 5 seconds, and continuously compute the delta. – mdunsmuir Feb 01 '13 at 07:43