Re: [PATCH i-g-t 03/10] gem_wsim: Show workload timing stats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 17/06/2020 17:58, Chris Wilson wrote:
Quoting Tvrtko Ursulin (2020-06-17 17:01:13)
From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>

Show average/min/max workload iteration and dropped period stats when 'p'
command is used.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
---
  benchmarks/gem_wsim.c | 19 +++++++++++++++----
  1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
index 9e5bfe6a36d4..60982cb73ba7 100644
--- a/benchmarks/gem_wsim.c
+++ b/benchmarks/gem_wsim.c
@@ -2101,7 +2101,8 @@ static void *run_workload(void *data)
         struct w_step *w;
         int throttle = -1;
         int qd_throttle = -1;
-       int count;
+       int count, missed = 0;
+       unsigned long time_tot = 0, time_min = ULONG_MAX, time_max = 0;
         int i;
clock_gettime(CLOCK_MONOTONIC, &t_start);
@@ -2121,12 +2122,19 @@ static void *run_workload(void *data)
                                 do_sleep = w->delay;
                         } else if (w->type == PERIOD) {
                                 struct timespec now;
+                               int elapsed;
clock_gettime(CLOCK_MONOTONIC, &now);
-                               do_sleep = w->period -
-                                          elapsed_us(&wrk->repeat_start, &now);
+                               elapsed = elapsed_us(&wrk->repeat_start, &now);
+                               do_sleep = w->period - elapsed;
+                               time_tot += elapsed;
+                               if (elapsed < time_min)
+                                       time_min = elapsed;
+                               if (elapsed > time_max)
+                                       time_max = elapsed;

Keep the running average?

Could do but why? I already have the count so adding up total elapsed frame time sound easiest.

Regards,

Tvrtko


                                 if (do_sleep < 0) {
-                                       if (verbose > 1)
+                                       missed++;
+                                       if (verbose > 2)
                                                 printf("%u: Dropped period @ %u/%u (%dus late)!\n",
                                                        wrk->id, count, i, do_sleep);
                                         continue;
@@ -2280,6 +2288,9 @@ static void *run_workload(void *data)
                 printf("%c%u: %.3fs elapsed (%d cycles, %.3f workloads/s).",
                        wrk->background ? ' ' : '*', wrk->id,
                        t, count, count / t);
+               if (time_tot)
+                       printf(" Time avg/min/max=%lu/%lu/%luus; %u missed.",
+                              time_tot / count, time_min, time_max, missed);
                 putchar('\n');
         }
--
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux