I am trying to write a script which will fire alert mail to dba ( db2dba) when there process will
utilize CPU more than 90%. But I am unable to do so.
I am using following command to calucate CPU utilization be db2sysc process :
ps -eo pcpu,pid,comm | grep -i db2sysc | awk '{ SUM+=$1; } END { print SUM }'
But Result of above formula and topas output are not same its always different.
like I am finding from ps -eo , are you having any similar kind of command
bash-3.2$ date
Tue Dec 13 22:39:53 PST 2011
bash-3.2$ ps -eo pcpu,pid,comm | grep -i db2sysc | awk '{ SUM+=$1; } END { print SUM }'
20
=================
Topas at this particular time (Tue Dec 13 22:39:53 PST 2011) is displaying 53% is utilized by db2sysc process.
So please let me know from where I can find correct real time CPU utilization of db2sysc process.
I can only speak with certainty for linux, but I think ps always can only print cumulative CPU time or % of cpu utilization over the lifetime of a process (which is what you're getting with pcpu). This is quite different than the kind of realtime loveliness you get with top. (I'm ignorant as to what "Topas" is.)
I don't know of another way to get that kind of info from the commandline, but I'd love to hear it if you find it.
PS: This doesn't answer your question, but we can improve your ps command a little bit:
#! /bin/bash
#List processes based on %cpu and memory usage
echo "Start Time" `date`
# By default, it display the list of processes based on the cpu and memory usage #
if [ $# -eq 0 ]
then
echo "List of processes based on the %cpu Usage"
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu # sorted based on %cpu
echo "List of processes based on the memory Usage"
ps -e -orss=,args= | sort -b -k1,1n # sorted bases rss value
# If arguements are given (mem/cpu)
else
case "$1" in
mem)
echo "List of processes based on the memory Usage"
ps -e -orss=,args= | sort -b -k1,1n
;;
cpu)
echo "List of processes based on the %cpu Usage"
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu
;;
*)
echo "Invalid Argument Given \n"
echo "Usage : $0 mem/cpu"
exit 1
esac
fi
echo "End Time" `date`
exit 0
Thanks for reply !!!
Please see my command I am using same command which you are asking me to run.
I am talking about differences. Please see from topas currently I am finding following details :
Menas cpu utilization by db2sysc process as per topas's top 10 query is 60.9 %
But at the same time ps output is showing only 18.5 %.
ps -e -o pcpu,cpu,nice,state,cputime,args | grep -i db2agent | awk '{ SUM+=$1; } END { print SUM }'
18.5
---------- Post updated at 02:37 AM ---------- Previous update was at 02:13 AM ----------
is there anyone who can help me to get exact output of CPU utilization % by db2sysc process. ps command's any option is not having same % utilization as toltal I am finding from topas.
different PS command option use to provide always similar kind of output. That is commulative. so please share any other ps commands.
regarding prstat it is not working in my OS.
Please find os details :
bash-3.2$ db2pd -osinfo
Operating System Information:
OSName: AIX
NodeName: rbitapp1
Version: 5
Release: 3
Please suggest me what to do now.
If anyone is having the command which topas use in background to find CPU utilization then please share. I try to cat topas file but it is not in readable format.