Get the memory and cpu usage


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Get the memory and cpu usage
# 1  
Old 02-17-2013
Get the memory and cpu usage

what is the best way to get the memory and cpu usage of a process on any system?

this is relatively simple. however, i'm looking for a unified method that would work on linux, sunos, hpux, aix.

Code:
ps -ef | egrep myprocess | awk '{print $4}' ---> there could be several instances of 'myprocess' running. so this command would have to add up the usage of all of them.

any ideas?

the ideal command would output something like this:

Code:
myprocess(17),cpu-usage(60%),memory-usage(40%)

# 2  
Old 02-18-2013
Code:
ps -ae -o user,pid,ppid,project,zone,class,pri,lwp,psr,pset,pmem,etime,time,tty,args

should give you the process wide cpu/memory utilization, however if you are going to take this from within the system or kernel statistical data it comes primarily from different methods.
# 3  
Old 02-19-2013
you can better opt for top command.
Eg: top or top | grep user/process_name
# 4  
Old 02-19-2013
For regular system monitoring I recommend to install "Xymon".
I use the following script to get a quick overview of the system, works on Linux and Solaris:
Code:
#!/bin/sh
set -f
PATH=/usr/xpg4/bin:/usr/bin:/bin:/usr/sbin:/usr/ucb
export PATH
 
if [ -x /usr/sbin/swap ]; then
 vmempct=`swap -s |
 awk '{gsub("([0-9])k","\1"); print int($9*100/($11+$9))}'
 `
else
 # To compensate the Linux memory strategy, put a f=2 factor
 vmempct=`free |
 awk '/^[Mm]em/ {used+=$3/f; free+=$4/f} /^[Ss]wap/ {used+=$3; free+=$4} END {print int(used*100/(free+used))}' f=2
 `
fi
printf "%-10s %d %%\n" "#vmemory:" $vmempct
load=`uptime | awk '{sub(".*[Ll]oad[^0-9]*",""); sub("[^0-9.].*$",""); print $0*100}'`
if [ -f /proc/cpuinfo ]; then
 cores=`grep -ic '^processor' /proc/cpuinfo`
else
 cores=`psrinfo | grep -c .`
 # With regards to CMT system throughput, put a p=1/2 factor
 case `uname -i` in
 SUNW,*T[125][0-9][0-9]*) cores=`expr $cores / 2`
 ;;
 esac
fi
printf "%-10s %d %%\n" "#cpu:" `expr $load / $cores`
disk=`PATH=/usr/ucb:$PATH df /tmp /var/tmp | awk '{sub("%$","",$5)} $5+0>max {max=$5} END {print max+0}'`
printf "%-10s %d %%\n" "#disk:" $disk
#assume 8 users per core maximum:
users | awk 's[$1]++==0 {++users} END {
printf "%-10s %-3d , %d %%\n","#users:",users,users*100/8/cores
}' RS=" " cores=$cores
#assume 24000 processes maximum (Solaris default pidmax=30000) and 30000 threads maximum (Linux default pid_max=32768)
ps -Le -o pid= |
 awk 's[$1]++==0 {proc++} END {
printf "%-10s %-3d , %d %%\n","#procs:",proc,proc*100/24000
printf "%-10s %-3d , %d %%\n","#threads:",NR,NR*100/30000
}'
#assume 3000 ttys maximum
ttys=`who | grep -c .`
printf "%-10s %-3d , %d %%\n" "#ttys:" $ttys `expr $ttys \* 100 / 3000`
#all in one variable:
allprocs=`ps -e -o user= -o pcpu= -o vsz= -o rss=`
#assume 600 processes maximum:
echo "#procs per user, top 3:"
echo "$allprocs" |
 awk '{s[$1]++} END {for(i in s) printf " %-9s %-3d , %d %%\n",i,s[i],int(s[i]*100/600)}' |
 sort -n -k 2,2 |
 tail -3
#assume 3000 threads maximum:
echo "#threads per user, top 3:"
ps -Le -o user= |
 awk '{s[$1]++} END {for(i in s) printf " %-9s %-3d , %d %%\n",i,s[i],int(s[i]*100/3000)}' |
 sort -n -k 2,2 |
 tail -3
echo "#cpu% per user, top 3:"
scale=$cores
[ `uname -s` = SunOS ] && scale=1 # Solaris ps is already scaled!
echo "$allprocs" |
 awk '{s[$1]+=$2} END {for(i in s) printf " %-9s %2.1f\n",i,s[i]/c}' c=$scale |
 sort -n -k 2,2 |
 tail -3
echo "#vmemoryMB per user, top 3:"
echo "$allprocs" |
 awk '{s[$1]+=$3} END {for(i in s) printf " %-9s %4.1f\n",i,s[i]/1024}' |
 sort -n -k 2,2 |
 tail -3
echo "#residentMB per user, top 3:"
echo "$allprocs" |
 awk '{s[$1]+=$4} END {for(i in s) printf " %-9s %4.1f\n",i,s[i]/1024}' |
 sort -n -k 2,2 |
 tail -3

This User Gave Thanks to MadeInGermany For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Cpu and memory usage scripts

All I am writing a script to generate an email when cpu and memory usage is high for 5 min continuously help me urgent I wrote below scritpt LOAD=75.00 CPU_LOAD= 'sar -P all 300 5 |grep 'Average.all* '| awk -F " " '(print 100.0 -$NF)'' IF }; ECHO "pLEASE CHECK YOUR PROCESS ON YOUR... (1 Reply)
Discussion started by: anil529
1 Replies

2. UNIX for Advanced & Expert Users

How often should I monitor the CPU and memory usage ?

Hi all, When you monitor the CPU and memory usage, how often do you do it ? Do it too often or too rarely will both cause the problem. So does anyone have hand-on experience ? And for my case, the requirement says that when CPU usage is above X% or memory usage is above Y%, I should reject... (5 Replies)
Discussion started by: qiulang
5 Replies

3. AIX

How to monitor the IBM AIX server for I/O usage,memory usage,CPU usage,network..?

How to monitor the IBM AIX server for I/O usage, memory usage, CPU usage, network usage, storage usage? (3 Replies)
Discussion started by: laknar
3 Replies

4. UNIX for Dummies Questions & Answers

CPU Utilization and Memory Usage

Can any one suggest me, how to get the last week's (Last n weeks) average CPU utilization and Memory usage? (2 Replies)
Discussion started by: siba.s.nayak
2 Replies

5. Solaris

current CPU usage, memory usage, disk I/O oid(snmp)

Hi, I want to monitor the current cpu usage, monitor usage , disk I/o and network utlization for solaris using SNMP. I want the oids for above tasks. can you please tell me that Thank you (2 Replies)
Discussion started by: S_venkatesh
2 Replies

6. HP-UX

how can I find cpu usage memory usage swap usage and logical volume usage

how can I find cpu usage memory usage swap usage and I want to know CPU usage above X% and contiue Y times and memory usage above X % and contiue Y times my final destination is monitor process logical volume usage above X % and number of Logical voluage above can I not to... (3 Replies)
Discussion started by: alert0919
3 Replies

7. UNIX for Dummies Questions & Answers

cpu, memory and virtual memory usage

Hi All, Does anyone know what the best commands in the UNIX command line are for obtaining this info: current CPU usage memory usage virtual memory usage preferably with date and time parameters too? thanks ocelot (4 Replies)
Discussion started by: ocelot
4 Replies

8. UNIX for Dummies Questions & Answers

recording cpu and memory usage

Is there a way for me to record cpu and memory usage over time without buying and installing new software? I know I can use top to see the current state, but can I record that data somehow? (2 Replies)
Discussion started by: cshih31
2 Replies

9. Programming

CPU usage and memory usage

Please tell me solaris functions/api for getting following information 1- Function that tells how much memory used by current process 2- Function that tells how much memory used by all running processes 3- Function that tells how much CPU is used by current process 4- Function that tells how... (1 Reply)
Discussion started by: mansoorulhaq
1 Replies

10. Programming

Monitor CPU usage and Memory Usage

how can i monitor usages of CPU, Memory, Hard disk etc. under SUN Solaries through a c program or java program i want to store that data into database so i can show it graphically thanks in advance (2 Replies)
Discussion started by: Gajanad Bihani
2 Replies
Login or Register to Ask a Question