Hi Kamil,

On 14/04/2023 16:28, Kamil Konieczny wrote:
On 2023-03-28 at 13:54:29 +0100, Tvrtko Ursulin wrote:
From: Tvrtko Ursulin <[email protected]>

When numeric display is selected in the interactive mode it is more
descriptive to show client's non-normalized (by number of engines per
class) usage. Rendering of the visual representation (bar) is kept the
same.

Signed-off-by: Tvrtko Ursulin <[email protected]>

Reviewed-by: Kamil Konieczny <[email protected]>

Thanks for reviewing all three and merging them too!

Regards,

Tvrtko

---
  tools/intel_gpu_top.c | 20 +++++++++++---------
  1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index 36da016c3df0..b6827b3de9bd 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -1275,14 +1275,14 @@ static void n_spaces(const unsigned int n)
  }
static void
-print_percentage_bar(double percent, int max_len, bool numeric)
+print_percentage_bar(double percent, double max, int max_len, bool numeric)
  {
        int bar_len, i, len = max_len - 2;
        const int w = 8;
assert(max_len > 0); - bar_len = ceil(w * percent * len / 100.0);
+       bar_len = ceil(w * percent * len / max);
        if (bar_len > w * len)
                bar_len = w * len;
@@ -2010,7 +2010,8 @@ print_engine(struct engines *engines, unsigned int i, double t,
                              engine->display_name, engine_items[0].buf);
val = pmu_calc(&engine->busy.val, 1e9, t, 100);
-               print_percentage_bar(val, con_w > len ? con_w - len : 0, false);
+               print_percentage_bar(val, 100.0, con_w > len ? con_w - len : 0,
+                                    false);
printf("%s\n", buf); @@ -2292,23 +2293,24 @@ print_client(struct client *c, struct engines *engines, double t, int lines,
                       clients->max_name_len, c->print_name);
for (i = 0; c->samples > 1 && i < clients->num_classes; i++) {
-                       double pct;
+                       double pct, max;
if (!clients->class[i].num_engines)
                                continue; /* Assert in the ideal world. */
- pct = (double)c->val[i] / period_us / 1e3 * 100 /
-                             clients->class[i].num_engines;
+                       pct = (double)c->val[i] / period_us / 1e3 * 100;
/*
                         * Guard against possible time-drift between sampling
                         * client data and time we obtained our time-delta from
                         * PMU.
                         */
-                       if (pct > 100.0)
-                               pct = 100.0;
+                       max = 100.0 * clients->class[i].num_engines;
+                       if (pct > max)
+                               pct = max;
- print_percentage_bar(pct, *class_w, numeric_clients);
+                       print_percentage_bar(pct, max, *class_w,
+                                            numeric_clients);
                }
putchar('\n');
--
2.37.2

Reply via email to