[i-g-t] i915/gem_mmap_gtt: Replace forked-mmaped tests with a lighter variant
diff mbox series

Message ID 20190917130913.31702-1-chris@chris-wilson.co.uk
State New
Headers show
Series
  • [i-g-t] i915/gem_mmap_gtt: Replace forked-mmaped tests with a lighter variant
Related show

Commit Message

Chris Wilson Sept. 17, 2019, 1:09 p.m. UTC
Introduce a new 2-process fork test that is bound to a single cpu to
exercise contention during pagefaults. This is a much lighter variant of
the all-cpus test intended to be viable even on the legendary frozen
lakes of molasses.

References: https://bugs.freedesktop.org/show_bug.cgi?id=110882
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Martin Peres <martin.peres@linux.intel.com>
---
 tests/i915/gem_mmap_gtt.c    | 36 +++++++++++++++++++++++++-----------
 tests/intel-ci/blacklist.txt |  2 +-
 2 files changed, 26 insertions(+), 12 deletions(-)

Comments

Mika Kuoppala Sept. 17, 2019, 1:31 p.m. UTC | #1
Chris Wilson <chris@chris-wilson.co.uk> writes:

> Introduce a new 2-process fork test that is bound to a single cpu to
> exercise contention during pagefaults. This is a much lighter variant of
> the all-cpus test intended to be viable even on the legendary frozen
> lakes of molasses.
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=110882
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Cc: Martin Peres <martin.peres@linux.intel.com>
> ---
>  tests/i915/gem_mmap_gtt.c    | 36 +++++++++++++++++++++++++-----------
>  tests/intel-ci/blacklist.txt |  2 +-
>  2 files changed, 26 insertions(+), 12 deletions(-)
>
> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
> index ac439cdf8..0428a1372 100644
> --- a/tests/i915/gem_mmap_gtt.c
> +++ b/tests/i915/gem_mmap_gtt.c
> @@ -792,9 +792,6 @@ test_huge_copy(int fd, int huge, int tiling_a, int tiling_b, int ncpus)
>  	uint64_t huge_object_size, i;
>  	unsigned mode = CHECK_RAM;
>  
> -	igt_fail_on_f(intel_gen(devid) >= 11 && ncpus > 1,
> -		      "Please adjust your expectations, https://bugs.freedesktop.org/show_bug.cgi?id=110882\n");
> -
>  	switch (huge) {
>  	case -2:
>  		huge_object_size = gem_mappable_aperture_size() / 4;
> @@ -1138,17 +1135,34 @@ igt_main
>  			for (const struct copy_mode *m = copy_modes; m->suffix; m++) {
>  				igt_subtest_f("%s-copy%s", s->prefix, m->suffix)
>  					test_huge_copy(fd,
> -							s->size,
> -							m->tiling_x,
> -							m->tiling_y,
> -							1);
> +						       s->size,
> +						       m->tiling_x,
> +						       m->tiling_y,
> +						       1);
> +
> +				igt_subtest_f("cpuset-%s-copy%s", s->prefix, m->suffix) {
> +					cpu_set_t cpu, old;
> +
> +					sched_getaffinity(0, sizeof(old), &old);
> +
> +					CPU_ZERO(&cpu);
> +					CPU_SET(0, &cpu);
> +					igt_assert(sched_setaffinity(0, sizeof(cpu), &cpu) == 0);
> +					test_huge_copy(fd,
> +						       s->size,
> +						       m->tiling_x,
> +						       m->tiling_y,
> +						       2);
> +
> +					igt_assert(sched_setaffinity(0, sizeof(old), &old) == 0);
> +				}
>  
>  				igt_subtest_f("forked-%s-copy%s", s->prefix, m->suffix)
>  					test_huge_copy(fd,
> -							s->size,
> -							m->tiling_x,
> -							m->tiling_y,
> -							ncpus);
> +						       s->size,
> +						       m->tiling_x,
> +						       m->tiling_y,
> +						       ncpus);
>  			}
>  	}
>  
> diff --git a/tests/intel-ci/blacklist.txt b/tests/intel-ci/blacklist.txt
> index 8e3dafa98..5fa91105f 100644
> --- a/tests/intel-ci/blacklist.txt
> +++ b/tests/intel-ci/blacklist.txt
> @@ -47,7 +47,7 @@ igt@gem_gtt_hog(@.*)?
>  igt@gem_gtt_speed(@.*)?
>  igt@gem_hangcheck_forcewake(@.*)?
>  igt@gem_lut_handle(@.*)?
> -igt@gem_mmap_gtt@.*(huge|swap|clflush).*
> +igt@gem_mmap_gtt@.*(huge|swap|clflush|forked).*

Dunno if this is enough for bat to pick it up. Regardless,
patch does what it says, using 2 threads on single cpu.

It should fly, even with maps of molasses.

Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>

>  igt@gem_mmap@.*(swap|huge).*
>  igt@gem_mocs_settings@.*(suspend|hibernate).*
>  igt@gem_pin(@.*)?
> -- 
> 2.23.0
Mika Kuoppala Sept. 17, 2019, 1:37 p.m. UTC | #2
Mika Kuoppala <mika.kuoppala@linux.intel.com> writes:

> Chris Wilson <chris@chris-wilson.co.uk> writes:
>
>> Introduce a new 2-process fork test that is bound to a single cpu to
>> exercise contention during pagefaults. This is a much lighter variant of
>> the all-cpus test intended to be viable even on the legendary frozen
>> lakes of molasses.
>>
>> References: https://bugs.freedesktop.org/show_bug.cgi?id=110882
>> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>> Cc: Martin Peres <martin.peres@linux.intel.com>
>> ---
>>  tests/i915/gem_mmap_gtt.c    | 36 +++++++++++++++++++++++++-----------
>>  tests/intel-ci/blacklist.txt |  2 +-
>>  2 files changed, 26 insertions(+), 12 deletions(-)
>>
>> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
>> index ac439cdf8..0428a1372 100644
>> --- a/tests/i915/gem_mmap_gtt.c
>> +++ b/tests/i915/gem_mmap_gtt.c
>> @@ -792,9 +792,6 @@ test_huge_copy(int fd, int huge, int tiling_a, int tiling_b, int ncpus)
>>  	uint64_t huge_object_size, i;
>>  	unsigned mode = CHECK_RAM;
>>  
>> -	igt_fail_on_f(intel_gen(devid) >= 11 && ncpus > 1,
>> -		      "Please adjust your expectations, https://bugs.freedesktop.org/show_bug.cgi?id=110882\n");
>> -
>>  	switch (huge) {
>>  	case -2:
>>  		huge_object_size = gem_mappable_aperture_size() / 4;
>> @@ -1138,17 +1135,34 @@ igt_main
>>  			for (const struct copy_mode *m = copy_modes; m->suffix; m++) {
>>  				igt_subtest_f("%s-copy%s", s->prefix, m->suffix)
>>  					test_huge_copy(fd,
>> -							s->size,
>> -							m->tiling_x,
>> -							m->tiling_y,
>> -							1);
>> +						       s->size,
>> +						       m->tiling_x,
>> +						       m->tiling_y,
>> +						       1);
>> +
>> +				igt_subtest_f("cpuset-%s-copy%s", s->prefix, m->suffix) {
>> +					cpu_set_t cpu, old;
>> +
>> +					sched_getaffinity(0, sizeof(old), &old);
>> +
>> +					CPU_ZERO(&cpu);
>> +					CPU_SET(0, &cpu);
>> +					igt_assert(sched_setaffinity(0, sizeof(cpu), &cpu) == 0);
>> +					test_huge_copy(fd,
>> +						       s->size,
>> +						       m->tiling_x,
>> +						       m->tiling_y,
>> +						       2);
>> +
>> +					igt_assert(sched_setaffinity(0, sizeof(old), &old) == 0);
>> +				}
>>  
>>  				igt_subtest_f("forked-%s-copy%s", s->prefix, m->suffix)
>>  					test_huge_copy(fd,
>> -							s->size,
>> -							m->tiling_x,
>> -							m->tiling_y,
>> -							ncpus);
>> +						       s->size,
>> +						       m->tiling_x,
>> +						       m->tiling_y,
>> +						       ncpus);
>>  			}
>>  	}
>>  
>> diff --git a/tests/intel-ci/blacklist.txt b/tests/intel-ci/blacklist.txt
>> index 8e3dafa98..5fa91105f 100644
>> --- a/tests/intel-ci/blacklist.txt
>> +++ b/tests/intel-ci/blacklist.txt
>> @@ -47,7 +47,7 @@ igt@gem_gtt_hog(@.*)?
>>  igt@gem_gtt_speed(@.*)?
>>  igt@gem_hangcheck_forcewake(@.*)?
>>  igt@gem_lut_handle(@.*)?
>> -igt@gem_mmap_gtt@.*(huge|swap|clflush).*
>> +igt@gem_mmap_gtt@.*(huge|swap|clflush|forked).*
>
> Dunno if this is enough for bat to pick it up. Regardless,
> patch does what it says, using 2 threads on single cpu.
>
> It should fly, even with maps of molasses.

Subtest cpuset-basic-small-copy: SUCCESS (2,965s)

Subtest cpuset-basic-small-copy-XY: SUCCESS (4,457s)
Subtest cpuset-big-copy-XY: SUCCESS (17,738s)
Subtest cpuset-medium-copy-XY: SUCCESS (8,871s)

-Mika

>
> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>
>>  igt@gem_mmap@.*(swap|huge).*
>>  igt@gem_mocs_settings@.*(suspend|hibernate).*
>>  igt@gem_pin(@.*)?
>> -- 
>> 2.23.0

Patch
diff mbox series

diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
index ac439cdf8..0428a1372 100644
--- a/tests/i915/gem_mmap_gtt.c
+++ b/tests/i915/gem_mmap_gtt.c
@@ -792,9 +792,6 @@  test_huge_copy(int fd, int huge, int tiling_a, int tiling_b, int ncpus)
 	uint64_t huge_object_size, i;
 	unsigned mode = CHECK_RAM;
 
-	igt_fail_on_f(intel_gen(devid) >= 11 && ncpus > 1,
-		      "Please adjust your expectations, https://bugs.freedesktop.org/show_bug.cgi?id=110882\n");
-
 	switch (huge) {
 	case -2:
 		huge_object_size = gem_mappable_aperture_size() / 4;
@@ -1138,17 +1135,34 @@  igt_main
 			for (const struct copy_mode *m = copy_modes; m->suffix; m++) {
 				igt_subtest_f("%s-copy%s", s->prefix, m->suffix)
 					test_huge_copy(fd,
-							s->size,
-							m->tiling_x,
-							m->tiling_y,
-							1);
+						       s->size,
+						       m->tiling_x,
+						       m->tiling_y,
+						       1);
+
+				igt_subtest_f("cpuset-%s-copy%s", s->prefix, m->suffix) {
+					cpu_set_t cpu, old;
+
+					sched_getaffinity(0, sizeof(old), &old);
+
+					CPU_ZERO(&cpu);
+					CPU_SET(0, &cpu);
+					igt_assert(sched_setaffinity(0, sizeof(cpu), &cpu) == 0);
+					test_huge_copy(fd,
+						       s->size,
+						       m->tiling_x,
+						       m->tiling_y,
+						       2);
+
+					igt_assert(sched_setaffinity(0, sizeof(old), &old) == 0);
+				}
 
 				igt_subtest_f("forked-%s-copy%s", s->prefix, m->suffix)
 					test_huge_copy(fd,
-							s->size,
-							m->tiling_x,
-							m->tiling_y,
-							ncpus);
+						       s->size,
+						       m->tiling_x,
+						       m->tiling_y,
+						       ncpus);
 			}
 	}
 
diff --git a/tests/intel-ci/blacklist.txt b/tests/intel-ci/blacklist.txt
index 8e3dafa98..5fa91105f 100644
--- a/tests/intel-ci/blacklist.txt
+++ b/tests/intel-ci/blacklist.txt
@@ -47,7 +47,7 @@  igt@gem_gtt_hog(@.*)?
 igt@gem_gtt_speed(@.*)?
 igt@gem_hangcheck_forcewake(@.*)?
 igt@gem_lut_handle(@.*)?
-igt@gem_mmap_gtt@.*(huge|swap|clflush).*
+igt@gem_mmap_gtt@.*(huge|swap|clflush|forked).*
 igt@gem_mmap@.*(swap|huge).*
 igt@gem_mocs_settings@.*(suspend|hibernate).*
 igt@gem_pin(@.*)?