Re: [Intel-gfx] [PATCH igt] Bump measure_ring_size() timer interval

2018-03-05 Thread Antonio Argenziano



On 05/03/18 03:03, Chris Wilson wrote:

It appears that waiting for a 100us period whereby we are unable to
submit another batch and proclaim the ring full, may have the false
positive where the scheduler intervenes and we are signalled twice
before having slept on ring space. Increasing the interval reduces the
likelihood of the scheduler stealing the cpu from us, but does not
eliminate it. Fortuitously it appears to be a rare false positive.

For the library routine, we can fork a RT process but that seems a bit
overkill!

References: https://bugs.freedesktop.org/show_bug.cgi?id=105343
Signed-off-by: Chris Wilson 
Cc: Antonio Argenziano 


Reviewed-by: Antonio Argenziano 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH igt] Bump measure_ring_size() timer interval

2018-03-05 Thread Chris Wilson
It appears that waiting for a 100us period whereby we are unable to
submit another batch and proclaim the ring full, may have the false
positive where the scheduler intervenes and we are signalled twice
before having slept on ring space. Increasing the interval reduces the
likelihood of the scheduler stealing the cpu from us, but does not
eliminate it. Fortuitously it appears to be a rare false positive.

For the library routine, we can fork a RT process but that seems a bit
overkill!

References: https://bugs.freedesktop.org/show_bug.cgi?id=105343
Signed-off-by: Chris Wilson 
Cc: Antonio Argenziano 
---
 lib/i915/gem_ring.c   | 20 +---
 tests/gem_exec_fence.c|  4 ++--
 tests/gem_exec_schedule.c |  4 ++--
 3 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/lib/i915/gem_ring.c b/lib/i915/gem_ring.c
index 7326673a..df92e620 100644
--- a/lib/i915/gem_ring.c
+++ b/lib/i915/gem_ring.c
@@ -31,6 +31,18 @@
 #include "ioctl_wrappers.h"
 #include "igt_dummyload.h"
 
+static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
+{
+   int err;
+
+   err = 0;
+   if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf))
+   err = -errno;
+
+   errno = 0;
+   return err;
+}
+
 static void alarm_handler(int sig)
 {
 }
@@ -81,15 +93,15 @@ gem_measure_ring_inflight(int fd, unsigned int engine, enum 
measure_ring_flags f
 
sigaction(SIGALRM, , _sa);
itv.it_interval.tv_sec = 0;
-   itv.it_interval.tv_usec = 100;
+   itv.it_interval.tv_usec = 1000;
itv.it_value.tv_sec = 0;
-   itv.it_value.tv_usec = 1000;
+   itv.it_value.tv_usec = 1;
setitimer(ITIMER_REAL, , NULL);
 
last = -1;
count = 0;
do {
-   if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, ) == 0) {
+   if (__execbuf(fd, ) == 0) {
count++;
continue;
}
@@ -100,6 +112,8 @@ gem_measure_ring_inflight(int fd, unsigned int engine, enum 
measure_ring_flags f
last = count;
} while (1);
 
+   igt_assert_eq(__execbuf(fd, ), -EINTR);
+
memset(, 0, sizeof(itv));
setitimer(ITIMER_REAL, , NULL);
sigaction(SIGALRM, _sa, NULL);
diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
index 93ed3b9b..26bde788 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -551,9 +551,9 @@ static void test_keep_in_fence(int fd, unsigned int engine, 
unsigned int flags)
 
sigaction(SIGALRM, , NULL);
itv.it_interval.tv_sec = 0;
-   itv.it_interval.tv_usec = 100;
+   itv.it_interval.tv_usec = 1000;
itv.it_value.tv_sec = 0;
-   itv.it_value.tv_usec = 1000;
+   itv.it_value.tv_usec = 1;
setitimer(ITIMER_REAL, , NULL);
 
execbuf.flags |= LOCAL_EXEC_FENCE_IN;
diff --git a/tests/gem_exec_schedule.c b/tests/gem_exec_schedule.c
index 8a69ab5c..89cf4285 100644
--- a/tests/gem_exec_schedule.c
+++ b/tests/gem_exec_schedule.c
@@ -833,9 +833,9 @@ static void test_pi_ringfull(int fd, unsigned int engine)
 
sigaction(SIGALRM, , NULL);
itv.it_interval.tv_sec = 0;
-   itv.it_interval.tv_usec = 100;
+   itv.it_interval.tv_usec = 1000;
itv.it_value.tv_sec = 0;
-   itv.it_value.tv_usec = 1000;
+   itv.it_value.tv_usec = 1;
setitimer(ITIMER_REAL, , NULL);
 
last = -1;
-- 
2.16.2

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