Message ID | 20190917130913.31702-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [i-g-t] i915/gem_mmap_gtt: Replace forked-mmaped tests with a lighter variant | expand |
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 <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
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(@.*)?
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(-)