chpstat: Fix scaling of DPU utilization calculation

chpstat incorrectly reports DPU utilization as fraction instead of
percent. Fix this by scaling utilization values to 100%.

Reviewed-by: Jan Höppner <hoeppner@linux.ibm.com>
Reviewed-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
Peter Oberparleiter
2025-08-08 14:47:22 +02:00
committed by Jan Höppner
parent 54b3c9ef24
commit e1692b7079
2 changed files with 16 additions and 8 deletions

View File

@@ -281,13 +281,17 @@ static void calc_ext_metrics(struct cmg_data_t *data, u32 ticks)
if (cmcb->dpu_num_cores == 0)
return;
/* dpu_util = dpu_exec_time_cpc / (t * dpu_num_cores) */
/* dpu_util = 100 * dpu_exec_time_cpc / (t * dpu_num_cores) */
delta = field_delta(dpu_exec_time_cpc, ext_a, ext_b);
m->dpu_util = delta / ((double)ticks * cmcb->dpu_num_cores);
m->dpu_util = 100.0 * delta / ((double)ticks * cmcb->dpu_num_cores);
/* dpu_util_total = dpu_channel_exec_time_cpc / (t * dpu_num_cores) */
/*
* dpu_util_total = 100 * dpu_channel_exec_time_cpc /
* (t * dpu_num_cores)
*/
delta = field_delta(dpu_channel_exec_time_cpc, ext_a, ext_b);
m->dpu_util_total = delta / ((double)ticks * cmcb->dpu_num_cores);
m->dpu_util_total = 100.0 * delta /
((double)ticks * cmcb->dpu_num_cores);
/* dpu_util_part = dpu_util_total * channel_work_units /
* channel_work_units_cpc */

View File

@@ -350,13 +350,17 @@ static void calc_ext_metrics(struct cmg_data_t *data, double seconds, u32 ticks)
if (cmcb->dpu_num_cores == 0)
return;
/* dpu_util = dpu_exec_time_cpc / (t * dpu_num_cores) */
/* dpu_util = 100 * dpu_exec_time_cpc / (t * dpu_num_cores) */
delta = field_delta(dpu_exec_time_cpc, ext_a, ext_b);
m->dpu_util = delta / ((double)ticks * cmcb->dpu_num_cores);
m->dpu_util = 100.0 * delta / ((double)ticks * cmcb->dpu_num_cores);
/* dpu_util_total = dpu_channel_exec_time_cpc / (t * dpu_num_cores) */
/*
* dpu_util_total = 100 * dpu_channel_exec_time_cpc /
* (t * dpu_num_cores)
*/
delta = field_delta(dpu_channel_exec_time_cpc, ext_a, ext_b);
m->dpu_util_total = delta / ((double)ticks * cmcb->dpu_num_cores);
m->dpu_util_total = 100.0 * delta /
((double)ticks * cmcb->dpu_num_cores);
/* dpu_util_part = dpu_util_total * channel_work_units /
* channel_work_units_cpc */