On my systems with lots of memdebug enabled, we would hit the oomkiller 90% of the time during the initial mlock prior to allocating any objects (and about 20% of the time lockup / panic). Tweak the target allocation sizes, and include a few more breadcrumbs tracing the allocations so that we can reliably start the tests. We still do hit our shrinker and even the oom notifier, so still achieving its goal of exercising low memory and swap pressure. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- tests/i915/gem_tiled_swapping.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c index ddf2a748f..1b70c1e51 100644 --- a/tests/i915/gem_tiled_swapping.c +++ b/tests/i915/gem_tiled_swapping.c @@ -165,8 +165,9 @@ static void check_memory_layout(int fd) igt_main { + unsigned long n, count; struct thread *threads; - int fd, n, count, num_threads; + int fd, num_threads; igt_fixture { size_t lock_size; @@ -179,23 +180,30 @@ igt_main check_memory_layout(fd); /* lock RAM, leaving only 512MB available */ - lock_size = max(0, intel_get_total_ram_mb() - AVAIL_RAM); + count = intel_get_total_ram_mb() - intel_get_avail_ram_mb(); + count = max(count + 64, AVAIL_RAM); + lock_size = max(0, intel_get_total_ram_mb() - count); + igt_info("Mlocking %zdMiB of %ld/%ldMiB\n", + lock_size, + (long)intel_get_avail_ram_mb(), + (long)intel_get_total_ram_mb()); igt_lock_mem(lock_size); /* need slightly more than available memory */ - count = min(intel_get_total_ram_mb(), AVAIL_RAM) * 1.25; + count = intel_get_avail_ram_mb() + 128; + igt_info("Using %lu 1MiB objects (available RAM: %ld/%ld, swap: %ld)\n", + count, + (long)intel_get_avail_ram_mb(), + (long)intel_get_total_ram_mb(), + (long)intel_get_total_swap_mb()); bo_handles = calloc(count, sizeof(uint32_t)); igt_assert(bo_handles); - num_threads = gem_available_fences(fd); + num_threads = gem_available_fences(fd) + 1; + igt_info("Using up to %d fences/threads\n", num_threads); threads = calloc(num_threads, sizeof(struct thread)); igt_assert(threads); - igt_info("Using %d 1MiB objects (available RAM: %ld/%ld, swap: %ld)\n", - count, - (long)intel_get_avail_ram_mb(), - (long)intel_get_total_ram_mb(), - (long)intel_get_total_swap_mb()); intel_require_memory(count, 1024*1024, CHECK_RAM | CHECK_SWAP); for (n = 0; n < count; n++) { -- 2.23.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx