Commit c8743295 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin

gem_wsim: Show workload timing stats

Show average/min/max workload iteration and dropped period stats when 'p'
command is used.
Signed-off-by: Tvrtko Ursulin's avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson's avatarChris Wilson <chris@chris-wilson.co.uk>
parent d8f1a651
......@@ -2117,7 +2117,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);
......@@ -2137,12 +2138,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;
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;
......@@ -2296,6 +2304,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');
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment