- u_longlong_t pool_busy_ns;
- u_longlong_t pool_max_ns;
- u_longlong_t pool_idle_ns = 0;
-
- pool_busy_ns = lparstats.pool_busy_time - lparstats_old.pool_busy_time;
- pool_max_ns = lparstats.pool_max_time - lparstats_old.pool_max_time;
- if (pool_max_ns > pool_busy_ns)
- pool_idle_ns = pool_max_ns - pool_busy_ns;
+ u_longlong_t pool_idle_cticks;
+ double pool_idle_cpus;
+ double pool_busy_cpus;
+
+ /* We're calculating "busy" from "idle" and the total number of
+ * CPUs, because the "busy" member didn't exist in early versions
+ * of libperfstat. It was added somewhere between AIX 5.3 ML5 and ML9. */
+ pool_idle_cticks = lparstats.pool_idle_time - lparstats_old.pool_idle_time;
+ pool_idle_cpus = CLOCKTICKS_TO_TICKS ((double) pool_idle_cticks) / (double) ticks;
+ pool_busy_cpus = ((double) lparstats.phys_cpus_pool) - pool_idle_cpus;
+ if (pool_busy_cpus < 0.0)
+ pool_busy_cpus = 0.0;