Ivana Varekova ca9eb93
diff -up sysstat-9.0.6.1/mpstat.c.tl sysstat-9.0.6.1/mpstat.c
Ivana Varekova ca9eb93
--- sysstat-9.0.6.1/mpstat.c.tl	2009-09-12 20:59:04.000000000 +0200
Ivana Varekova ca9eb93
+++ sysstat-9.0.6.1/mpstat.c	2010-04-19 10:42:01.000000000 +0200
Ivana Varekova ca9eb93
@@ -272,10 +272,21 @@ void write_stats_core(int prev, int curr
Ivana Varekova ca9eb93
 			/* Recalculate itv for current proc */
Ivana Varekova 9c3e1f0
 			pc_itv = get_per_cpu_interval(scc, scp);
Ivana Varekova 9c3e1f0
 
Ivana Varekova ca9eb93
-			if (!pc_itv) {
Ivana Varekova 9c3e1f0
-				/* Current CPU is offline */
Ivana Varekova ca9eb93
+			/* if the CPU is offline it is omited from /proc/stat
Ivana Varekova ca9eb93
+			   so the sum of all values is zero */
Ivana Varekova ca9eb93
+			if ((scc->cpu_user    + scc->cpu_nice   + scc->cpu_sys   +
Ivana Varekova ca9eb93
+			     scc->cpu_iowait  + scc->cpu_idle   + scc->cpu_steal +
Ivana Varekova ca9eb93
+			     scc->cpu_hardirq + scc->cpu_softirq) == 0) {
Ivana Varekova 9c3e1f0
 				printf("    0.00    0.00    0.00    0.00    0.00    0.00"
Ivana Varekova ca9eb93
 				       "    0.00    0.00    0.00\n");
Ivana Varekova ca9eb93
+				continue;
Ivana Varekova ca9eb93
+			}
Ivana Varekova ca9eb93
+
Ivana Varekova ca9eb93
+			/* if the CPU is tickless  then
Ivana Varekova ca9eb93
+			  there is no change in CPU values but the sum of values is not null */
Ivana Varekova ca9eb93
+			if (!pc_itv) {
Ivana Varekova ca9eb93
+				printf("    0.00    0.00    0.00    0.00    0.00    0.00"
Ivana Varekova ca9eb93
+				       "    0.00    0.00  100.00\n");
Ivana Varekova 9c3e1f0
 			}
Ivana Varekova 9c3e1f0
 			else {
Ivana Varekova 9c3e1f0
 				printf("  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f"
Ivana Varekova ca9eb93
@@ -643,6 +654,14 @@ void rw_mpstat_loop(int dis_hdr, int row
Ivana Varekova ca9eb93
 			scc = st_cpu[curr]  + cpu;
Ivana Varekova ca9eb93
 			scp = st_cpu[!curr] + cpu;
Ivana Varekova ca9eb93
 			*scc = *scp;
Ivana Varekova ca9eb93
+			scc->cpu_user = 0;
Ivana Varekova ca9eb93
+			scc->cpu_nice = 0;
Ivana Varekova ca9eb93
+			scc->cpu_sys = 0;
Ivana Varekova ca9eb93
+			scc->cpu_iowait = 0;
Ivana Varekova ca9eb93
+			scc->cpu_idle = 0;
Ivana Varekova ca9eb93
+			scc->cpu_steal = 0;
Ivana Varekova ca9eb93
+			scc->cpu_hardirq = 0;
Ivana Varekova ca9eb93
+			scc->cpu_softirq = 0;
Ivana Varekova ca9eb93
 		}
Ivana Varekova ca9eb93
 
Ivana Varekova ca9eb93
 		/* Get time */