summaryrefslogtreecommitdiff
path: root/tests/i915/i915_pm_rc6_residency.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-04-08 13:56:50 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-04-09 07:29:47 +0100
commite6f7db50a56d2742af5c1e83e3995e00a87d776b (patch)
tree749a3110e02df93c32d3e1974a23a9a9fc2ff2c8 /tests/i915/i915_pm_rc6_residency.c
parent66a7b20f4a1f95320c0d7c8c9704749001487783 (diff)
i915/i915_pm_rc6_residency: Show where the time is spent
Sometimes the bg_load only wakes up once or twice in 3s. That's just unbelievable, so include some measurements to see how long the load spends in submission & waiting. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/i915_pm_rc6_residency.c')
-rw-r--r--tests/i915/i915_pm_rc6_residency.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c
index cd1a6c8d..a38385e8 100644
--- a/tests/i915/i915_pm_rc6_residency.c
+++ b/tests/i915/i915_pm_rc6_residency.c
@@ -291,6 +291,7 @@ static void sighandler(int sig)
static void bg_load(int i915, unsigned int flags, unsigned long *ctl)
{
+ const bool has_execlists = intel_gen(intel_get_drm_devid(i915)) >= 8;
struct drm_i915_gem_exec_object2 obj = {
.handle = batch_create(i915),
};
@@ -304,11 +305,13 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl)
sigaction(SIGINT, &act, NULL);
do {
+ uint64_t submit, wait, elapsed;
struct timespec tv = {};
igt_nsec_elapsed(&tv);
gem_execbuf(i915, &execbuf);
+ submit = igt_nsec_elapsed(&tv);
if (flags & WAITBOOST) {
gem_sync(i915, obj.handle);
if (flags & ONCE)
@@ -317,7 +320,7 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl)
while (gem_bo_busy(i915, obj.handle))
usleep(0);
}
- ctl[1]++;
+ wait = igt_nsec_elapsed(&tv);
/*
* The legacy ringbuffer submission lacks a fast soft-rc6
@@ -327,11 +330,19 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl)
*
* Fake it until we make it.
*/
- if (!gem_has_execlists(i915))
+ if (!has_execlists)
igt_drop_caches_set(i915, DROP_IDLE);
+ elapsed = igt_nsec_elapsed(&tv);
+ igt_info("Pulse took %.3fms (submit %.1fus, wait %.1fus, idle %.1fus)\n",
+ 1e-6 * elapsed,
+ 1e-3 * submit,
+ 1e-3 * (wait - submit),
+ 1e-3 * (elapsed - wait));
+ ctl[1]++;
+
/* aim for ~1% busy */
- usleep(min(igt_nsec_elapsed(&tv) / 10, 50 * 1000));
+ usleep(min(elapsed / 10, 50 * 1000));
} while (!READ_ONCE(*ctl));
}