CPU utilization command

what is the command to find average, minimum and maximum cpu utilization in percentages for linux servers.
mkarthik415Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mrjoltcolaCommented:
top is one option

You can use vmstat to log historical.

vmstat 5

Will print a line every 5 seconds with CPU and other stats.


The uptime command will show load avg for last 1, 5 and 15 minutes, but does not show CPU %
0
martin_2110Commented:
sar -u will give you a history. the sysstat package needs to be installed. Most distros have it.
0
Kerem ERSOYPresidentCommented:
Hi,

If you might like to insall the package called systat and you can use these commands :

sar
mpstat

The usage is :

sar -u 5 10

will get statistics for 5 seconds and repeat 10 times.

mpstat 5 10

Will do this for 10 times with 5 seconds delay.

sar

Sample sar output is like this:
# sar
Linux 2.6.9-78.0.22.EL (host.domain.com.tr)        07/15/2009

12:00:01 AM       CPU     %user     %nice   %system   %iowait     %idle
12:10:01 AM       all      2.74      0.00      0.52      0.36     96.38
12:20:01 AM       all      0.99      0.00      0.32      0.06     98.62
12:30:01 AM       all      2.37      0.00      0.50      0.28     96.84
12:40:01 AM       all      1.03      0.00      0.33      0.08     98.56
12:50:01 AM       all      1.05      0.00      0.37      0.06     98.51
01:00:01 AM       all      1.23      0.00      0.37      0.12     98.27
01:10:01 AM       all      0.70      0.00      0.31      0.05     98.94
01:20:01 AM       all      0.78      0.00      0.29      0.13     98.80
01:30:01 AM       all      2.58      0.00      0.35      0.20     96.87
01:40:01 AM       all      0.65      0.00      0.24      0.03     99.08
01:50:01 AM       all      1.41      0.00      0.35      0.13     98.10
02:00:01 AM       all      0.95      0.00      0.29      0.12     98.63
02:10:01 AM       all      0.57      0.00      0.20      0.03     99.20
02:20:01 AM       all      1.13      0.00      0.33      0.06     98.47
02:30:01 AM       all      1.60      0.00      0.31      0.13     97.96
02:40:01 AM       all      1.11      0.00      0.33      0.14     98.42
02:50:01 AM       all      1.02      0.00      0.33      0.07     98.58
03:00:01 AM       all      1.95      0.00      1.13      2.16     94.75
03:10:01 AM       all      2.11      0.00      0.95      5.32     91.62
Average:          all      1.37      0.00      0.41      0.50     97.72
and

mpstat

Sample mpstat output is:

# mpstat
Linux 2.6.9-78.0.22.EL (host.domain.com.tr)        07/15/2009

03:23:38 AM  CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s
03:23:38 AM  all    1.64    0.00    0.32    0.17    0.00    0.00   97.86   1018.63

Will collect information and when executed in their own they will display the historic data of CPU utilization. You might as well use top if you want interactive display.


the command

w

will display you momentarily CPU usage like this:

# w
 03:21:56 up 12 days, 11:58,  4 users,  load average: 0.02, 0.02, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       -                02Jul09 ?xdm?   1:55m  1.66s /usr/bin/gnome-session
root     pts/1    :0.0             02Jul09 12days  0.07s  0.07s bash
root     pts/2    host.dom.com  23:35    0.00s  0.28s  0.00s w
root     pts/3    host.dom.com  03:01   18:21   0.04s  0.04s -bash

Uptime is smilar and itwill only show the first line of what w displays.

Cheers,
K.
0
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

Kerem ERSOYPresidentCommented:
With UNIX systems you mainly use :

sat, mpstat, top and uptime

commands to get an information about CPU usage.

0
mkarthik415Author Commented:
I want only average, minimum and maximum cpu utilization. I think we would require a script to get this.
0
onethreefourCommented:
How about this...
You can call the linux 'uptime' command and 'pipe' it to 'cut' with the correct flags to give you JUST the output containing the current averages:
uptime | cut -d: -f5

Using these 'averages' you could assume the lowest value to be your minimum and highest to be your maximum... It would not be a true reading, and would only cover the last 15 minutes or so of time, but is exact measurement really your main objective?  A lot of the time it is more important to simply watch trends or have alerts when maximum or minumum threshholds are broken...  Using this method could still allow you to have triggers when there are highs or lows...

0
Kerem ERSOYPresidentCommented:
then you'll need sar. since it keeps statistics in 10 minutes periods. This command below will show it. You'll need to install the package called sysstat first. On my system the sample output is :

Highest= 3.62
Lowest=1.38
Average=2.39
# sar | grep "^[0-9]" | grep -v CPU | awk 'NR==1 {print "Highest= " 100 -$8} END {print "Lowest=" 100 - $8}' ; sar | tail -1 | awk '{print "Average=" 100 - $7}'

Open in new window

0
omarfaridCommented:
you may use top in batch mode

top -b -d1 | grep stat
0
Kerem ERSOYPresidentCommented:
Only sar will give you the CPU time in 10 minutes reports. Other solutions such as uptime will give you current, 5 min1tes abck and 10 minutes back CPU load but not min, max and average.

While top in batch mode will give the status of the most active process.

Here's the line what gives you need. The sample output from my system is :

Lowest=0.8 Highest=27.5 Average=4.11

If you want you can omit Labels before the numbers.
sar | grep "^[0-9]" | grep -v CPU | awk '{print $8}' | sort -rn | awk 'NR==1 {printf "Lowest=%s ", 100-$1} END {printf "Highest=%s ", 100-$1}' ; sar | tail -1 | awk '{print "Average=" 100 - $7}'

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Linux

From novice to tech pro — start learning today.