Message ID | 1424173217-9188-1-git-send-email-tim.gore@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Feb 17, 2015 at 11:40:17AM +0000, tim.gore@intel.com wrote: > From: Tim Gore <tim.gore@intel.com> > > The gem_render_linear_blits test tends to get oom killed > on low memory (< 4GB) Android systems. This is because the > test tries to allocate (sysinfo.totalram * 9 / 10) in > buffer objects and the remaining 10% of memory is not > always enough for the Android system. > After a discussion with Chris Wilson I have split this > test into a "basic" and an "apperture-thrash" subtest, > in the same way as gem_linear_blits. The basic test > uses just two buffer objects and the apperture-thrash > test is skipped if there is insuffiecient memory. > > Signed-off-by: Tim Gore <tim.gore@intel.com> > --- > tests/gem_render_linear_blits.c | 55 ++++++++++++++++++++++------------------- > 1 file changed, 30 insertions(+), 25 deletions(-) > > diff --git a/tests/gem_render_linear_blits.c b/tests/gem_render_linear_blits.c > index 60ba831..3a548d3 100644 > --- a/tests/gem_render_linear_blits.c > +++ b/tests/gem_render_linear_blits.c > @@ -80,18 +80,14 @@ check_bo(int fd, uint32_t handle, uint32_t val) > } > } > > -int main(int argc, char **argv) > +static void run_test (int fd, int count) > { > drm_intel_bufmgr *bufmgr; > struct intel_batchbuffer *batch; > uint32_t *start_val; > drm_intel_bo **bo; > uint32_t start = 0; > - int i, j, fd, count; > - > - igt_simple_init(argc, argv); > - > - fd = drm_open_any(); > + int i, j; > > render_copy = igt_get_render_copyfunc(intel_get_drm_devid(fd)); > igt_require(render_copy); > @@ -99,24 +95,6 @@ int main(int argc, char **argv) > bufmgr = drm_intel_bufmgr_gem_init(fd, 4096); > batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd)); > > - count = 0; > - if (igt_run_in_simulation()) > - count = 2; > - if (argc > 1) > - count = atoi(argv[1]); > - > - if (count == 0) > - count = 3 * gem_aperture_size(fd) / SIZE / 2; > - else if (count < 2) { > - igt_warn("count must be >= 2\n"); > - return 1; > - } > - > - if (count > intel_get_total_ram_mb() * 9 / 10) { > - count = intel_get_total_ram_mb() * 9 / 10; > - igt_info("not enough RAM to run test, reducing buffer count\n"); > - } > - > bo = malloc(sizeof(*bo)*count); > start_val = malloc(sizeof(*start_val)*count); > > @@ -153,7 +131,7 @@ int main(int argc, char **argv) > check_bo(fd, bo[i]->handle, start_val[i]); > > if (igt_run_in_simulation()) > - return 0; > + return; > > igt_info("Cyclic blits, backward...\n"); > for (i = 0; i < count * 4; i++) { > @@ -200,5 +178,32 @@ int main(int argc, char **argv) > for (i = 0; i < count; i++) > check_bo(fd, bo[i]->handle, start_val[i]); > > + intel_batchbuffer_free(batch); > + drm_intel_bufmgr_destroy(bufmgr); > +} > + > +int main(int argc, char **argv) > +{ > + static int fd = 0; static! > + int count=0; > + > + igt_subtest_init(argc, argv); > + igt_fixture { > + fd = drm_open_any(); > + } > + > + igt_subtest("basic") { > + run_test(fd, 2); > + } > + > + igt_subtest("apperture-thrash") { > + if (argc > 1) > + count = atoi(argv[1]); With automated testing we want to perform the same test over and over again. If it is called aperture-thrash, let's make sure we do! If anyone ever wants to manually run this with varying amounts of objects: first they should consider enhancing the test to capture the scenario of concern, then secondly add the manual option. > + if (count == 0) > + count = 3 * gem_aperture_size(fd) / SIZE / 2; > + igt_require(count > 1); > + intel_require_memory(count, SIZE, CHECK_RAM); > + run_test(fd, count); > + } > igt_exit(); > } > -- > 2.3.0 >
On 2015-02-18 12:45, Chris Wilson wrote: > > + igt_subtest("apperture-thrash") { > + if (argc > 1) > + count = atoi(argv[1]); > ITYM "aperture", not "apperture". Regards: David Weinehall --------------------------------------------------------------------- Intel Finland Oy Registered Address: PL 281, 00181 Helsinki Business Identity Code: 0357606 - 4 Domiciled in Helsinki This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.
> -----Original Message----- > From: Chris Wilson [mailto:chris@chris-wilson.co.uk] > Sent: Wednesday, February 18, 2015 10:46 AM > To: Gore, Tim > Cc: intel-gfx@lists.freedesktop.org; Wood, Thomas > Subject: Re: [PATCH i-g-t] tests/gem_render_linear_blits: split into two > subtests > > On Tue, Feb 17, 2015 at 11:40:17AM +0000, tim.gore@intel.com wrote: > > From: Tim Gore <tim.gore@intel.com> > > > > The gem_render_linear_blits test tends to get oom killed on low memory > > (< 4GB) Android systems. This is because the test tries to allocate > > (sysinfo.totalram * 9 / 10) in buffer objects and the remaining 10% of > > memory is not always enough for the Android system. > > After a discussion with Chris Wilson I have split this test into a > > "basic" and an "apperture-thrash" subtest, in the same way as > > gem_linear_blits. The basic test uses just two buffer objects and the > > apperture-thrash test is skipped if there is insuffiecient memory. > > > > Signed-off-by: Tim Gore <tim.gore@intel.com> > > --- > > tests/gem_render_linear_blits.c | 55 > > ++++++++++++++++++++++------------------- > > 1 file changed, 30 insertions(+), 25 deletions(-) > > > > diff --git a/tests/gem_render_linear_blits.c > > b/tests/gem_render_linear_blits.c index 60ba831..3a548d3 100644 > > --- a/tests/gem_render_linear_blits.c > > +++ b/tests/gem_render_linear_blits.c > > @@ -80,18 +80,14 @@ check_bo(int fd, uint32_t handle, uint32_t val) > > } > > } > > > > -int main(int argc, char **argv) > > +static void run_test (int fd, int count) > > { > > drm_intel_bufmgr *bufmgr; > > struct intel_batchbuffer *batch; > > uint32_t *start_val; > > drm_intel_bo **bo; > > uint32_t start = 0; > > - int i, j, fd, count; > > - > > - igt_simple_init(argc, argv); > > - > > - fd = drm_open_any(); > > + int i, j; > > > > render_copy = igt_get_render_copyfunc(intel_get_drm_devid(fd)); > > igt_require(render_copy); > > @@ -99,24 +95,6 @@ int main(int argc, char **argv) > > bufmgr = drm_intel_bufmgr_gem_init(fd, 4096); > > batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd)); > > > > - count = 0; > > - if (igt_run_in_simulation()) > > - count = 2; > > - if (argc > 1) > > - count = atoi(argv[1]); > > - > > - if (count == 0) > > - count = 3 * gem_aperture_size(fd) / SIZE / 2; > > - else if (count < 2) { > > - igt_warn("count must be >= 2\n"); > > - return 1; > > - } > > - > > - if (count > intel_get_total_ram_mb() * 9 / 10) { > > - count = intel_get_total_ram_mb() * 9 / 10; > > - igt_info("not enough RAM to run test, reducing buffer > count\n"); > > - } > > - > > bo = malloc(sizeof(*bo)*count); > > start_val = malloc(sizeof(*start_val)*count); > > > > @@ -153,7 +131,7 @@ int main(int argc, char **argv) > > check_bo(fd, bo[i]->handle, start_val[i]); > > > > if (igt_run_in_simulation()) > > - return 0; > > + return; > > > > igt_info("Cyclic blits, backward...\n"); > > for (i = 0; i < count * 4; i++) { > > @@ -200,5 +178,32 @@ int main(int argc, char **argv) > > for (i = 0; i < count; i++) > > check_bo(fd, bo[i]->handle, start_val[i]); > > > > + intel_batchbuffer_free(batch); > > + drm_intel_bufmgr_destroy(bufmgr); > > +} > > + > > +int main(int argc, char **argv) > > +{ > > + static int fd = 0; > > static! > > > + int count=0; > > + > > + igt_subtest_init(argc, argv); > > + igt_fixture { > > + fd = drm_open_any(); > > + } > > + > > + igt_subtest("basic") { > > + run_test(fd, 2); > > + } > > + > > + igt_subtest("apperture-thrash") { > > + if (argc > 1) > > + count = atoi(argv[1]); > > With automated testing we want to perform the same test over and over > again. If it is called aperture-thrash, let's make sure we do! > > If anyone ever wants to manually run this with varying amounts of > objects: first they should consider enhancing the test to capture the scenario > of concern, then secondly add the manual option. > Hi Chris, are you suggesting that I remove the command line option for count? Tim > > + if (count == 0) > > + count = 3 * gem_aperture_size(fd) / SIZE / 2; > > + igt_require(count > 1); > > + intel_require_memory(count, SIZE, CHECK_RAM); > > + run_test(fd, count); > > + } > > igt_exit(); > > } > > -- > > 2.3.0 > > > > -- > Chris Wilson, Intel Open Source Technology Centre
On Mon, Feb 23, 2015 at 09:25:22AM +0000, Gore, Tim wrote: > > > + igt_subtest("apperture-thrash") { > > > + if (argc > 1) > > > + count = atoi(argv[1]); > > > > With automated testing we want to perform the same test over and over > > again. If it is called aperture-thrash, let's make sure we do! > > > > If anyone ever wants to manually run this with varying amounts of > > objects: first they should consider enhancing the test to capture the scenario > > of concern, then secondly add the manual option. > > > > Hi Chris, are you suggesting that I remove the command line option for count? Yes, I don't think it makes much sense to keep it. Whilst you are here, could you add a third subtest for "swap-thrash" (the check is intel_require_memory(CHECK_RAM | CHECK_SWAP), and I'll let you work out how to compute count :) -Chris >
diff --git a/tests/gem_render_linear_blits.c b/tests/gem_render_linear_blits.c index 60ba831..3a548d3 100644 --- a/tests/gem_render_linear_blits.c +++ b/tests/gem_render_linear_blits.c @@ -80,18 +80,14 @@ check_bo(int fd, uint32_t handle, uint32_t val) } } -int main(int argc, char **argv) +static void run_test (int fd, int count) { drm_intel_bufmgr *bufmgr; struct intel_batchbuffer *batch; uint32_t *start_val; drm_intel_bo **bo; uint32_t start = 0; - int i, j, fd, count; - - igt_simple_init(argc, argv); - - fd = drm_open_any(); + int i, j; render_copy = igt_get_render_copyfunc(intel_get_drm_devid(fd)); igt_require(render_copy); @@ -99,24 +95,6 @@ int main(int argc, char **argv) bufmgr = drm_intel_bufmgr_gem_init(fd, 4096); batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd)); - count = 0; - if (igt_run_in_simulation()) - count = 2; - if (argc > 1) - count = atoi(argv[1]); - - if (count == 0) - count = 3 * gem_aperture_size(fd) / SIZE / 2; - else if (count < 2) { - igt_warn("count must be >= 2\n"); - return 1; - } - - if (count > intel_get_total_ram_mb() * 9 / 10) { - count = intel_get_total_ram_mb() * 9 / 10; - igt_info("not enough RAM to run test, reducing buffer count\n"); - } - bo = malloc(sizeof(*bo)*count); start_val = malloc(sizeof(*start_val)*count); @@ -153,7 +131,7 @@ int main(int argc, char **argv) check_bo(fd, bo[i]->handle, start_val[i]); if (igt_run_in_simulation()) - return 0; + return; igt_info("Cyclic blits, backward...\n"); for (i = 0; i < count * 4; i++) { @@ -200,5 +178,32 @@ int main(int argc, char **argv) for (i = 0; i < count; i++) check_bo(fd, bo[i]->handle, start_val[i]); + intel_batchbuffer_free(batch); + drm_intel_bufmgr_destroy(bufmgr); +} + +int main(int argc, char **argv) +{ + static int fd = 0; + int count=0; + + igt_subtest_init(argc, argv); + igt_fixture { + fd = drm_open_any(); + } + + igt_subtest("basic") { + run_test(fd, 2); + } + + igt_subtest("apperture-thrash") { + if (argc > 1) + count = atoi(argv[1]); + if (count == 0) + count = 3 * gem_aperture_size(fd) / SIZE / 2; + igt_require(count > 1); + intel_require_memory(count, SIZE, CHECK_RAM); + run_test(fd, count); + } igt_exit(); }