Hi!

I'm starting to explore Linux-HA. Examining one of the monitors, I think things 
could be made much more efficient. For example: To get the percent of idle CPU 
the monitor uses 4 processes:
top -b -n2 | grep Cpu | tail -1 | awk -F",|\.[0-9]%id" '{ print $4 }'

However awk can do the effect of grep and tail as well. My first attempt is 
this:
top -b -n2 | awk -F",|\.[0-9]%id" '/^Cpu/{ print $4; exit }'

My second attempt uses /proc/stat instead, avoiding the slow top process:
awk '$1 == "cpu" { print $7; exit }' /proc/stat

time (top -b -n2 | grep Cpu | tail -1 | awk -F",|\.[0-9]%id" '{ print $4 }')
awk: warning: escape sequence `\.' treated as plain `.'
 99

real    0m3.533s
user    0m0.008s
sys     0m0.008s

 time (top -b -n2| awk -F",|\.[0-9]%id" '/^Cpu/{ print $4; exit }')
awk: warning: escape sequence `\.' treated as plain `.'
 99

real    0m0.518s
user    0m0.000s
sys     0m0.008s

time awk '$1 == "cpu" { print $7; exit }' /proc/stat
98

real    0m0.004s
user    0m0.000s
sys     0m0.000s

Regards,
Ulrich
Occaasionally it makes sense to do something about performance in addition to 
talk about it. I've written a complex monitor for HP Serviceguard in Perl that 
uses about 2.5 seconds of CPU time per day (while running a few thousand times 
per day)


_______________________________________________
Linux-HA mailing list
Linux-HA@lists.linux-ha.org
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems

Reply via email to