>>> Michael Schwartzkopff <mi...@clusterbau.com> schrieb am 03.02.2011 um 13:09 >>> in Nachricht <201102031309.04931.mi...@clusterbau.com>: > On Thursday 03 February 2011 12:35:34 Ulrich Windl wrote: > > 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 > > Hi, > > good idea. The only problem it that the information in /proc/stats is in > ticks > and does not give you an absolute value. So you would have to calculate the > difference yourself, which makes the task much more difficult.
OK, what about this: time (procinfo | awk '$1 == "idle" && $2 == ":" { if (sub("%", "", $5)) { print $5 } else { sub("%", "", $4); print $4} }') 99.4 real 0m0.010s user 0m0.000s sys 0m0.000s # Maybe use "print int($x)" to see an integer (I didn't know the details of /proc/stat. Those who want to might read: /usr/src/linux/kernel/sched.c, /usr/src/linux/include/linux/kernel_stat.h, /usr/src/linux/include/asm-generic/cputime.h) Regards, Ulrich P.S: The lines that are processed look like this: system: 1:21:29.98 0.6% page act: 2141840 IOwait: 3:58:58.89 1.9% page dea: 1635314 hw irq: 0:02:17.38 0.0% page flt: 766785934 sw irq: 0:13:44.90 0.1% swap in : 562 idle : 7d 21:37:23.52 90.4% swap out: 899 uptime: 2d 4:25:34.97 context : 119011606 _______________________________________________ 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