tests/gem_render_linear_blits: split into two subtests
PATCH v3 1/1 tests/gem_render_linear_blits: split into two subtests
From: Tim Gore <[email protected]>
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.
v2: Following comment from Chris Wilson:
a) Remove the command line option for count.
b) Add a third subtest to ensure swap is tested
v3: Replace some leading spaces with tabs
--- tests/gem_render_linear_blits.c | 69 +++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 26 deletions(-)
tests/gem_render_linear_blits.c +43 -26
@@ -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);
@@ -128,7 +106,7 @@ int main(int argc, char **argv)gem_write (fd, bo[i]->handle,0 , linear,sizeof (linear)); } -igt_info ("Verifying initialisation...\n" ); +igt_info ("Verifying initialisation - %d buffers of %d bytes\n" , count,SIZE );for (i =0 ; i < count; i++)check_bo (fd, bo[i]->handle, start_val[i]);
@@ -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,44 @@ int main(int argc, char **argv)for (i =0 ; i < count; i++)check_bo (fd, bo[i]->handle, start_val[i]); +/* release resources */ +for (i =0 ; i < count; i++) { +drm_intel_bo_unreference (bo[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 ); + } + +/* the rest of the tests are too long for simulation */ +igt_skip_on_simulation (); + + igt_subtest("apperture-thrash") { + count =3 *gem_aperture_size (fd) /SIZE /2 ; +intel_require_memory (count,SIZE ,CHECK_RAM ); +run_test (fd, count); + } + + igt_subtest("swap-thrash") { +uint64_t swap_mb =intel_get_total_swap_mb (); +igt_require (swap_mb >0 ); + count = ((intel_get_avail_ram_mb () + (swap_mb /2 )) *1024 *1024 ) /SIZE ; +intel_require_memory (count,SIZE ,CHECK_RAM |CHECK_SWAP ); +run_test (fd, count); + } +igt_exit (); }
Signature · 6 lines
2.3.0 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoted 100 lines · On Mon, Mar 02, 2015 at 03:33:27PM +0000, [email protected] wrote:
From: Tim Gore <[email protected]>
The
gem_render_linear_blitstest 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 asgem_linear_blits. The basic test uses just two buffer objects and the apperture-thrash test is skipped if there is insuffiecient memory.v2: Following comment from Chris Wilson:
a) Remove the command line option for count.
b) Add a third subtest to ensure swap is testedv3: Replace some leading spaces with tabs
Signed-off-by Tim Gore <[email protected]>--- tests/gem_render_linear_blits.c | 69 +++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 26 deletions(-)tests/gem_render_linear_blits.c +8
-26@@ -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);@@ -128,7 +106,7 @@ int main(int argc, char **argv)gem_write (fd, bo[i]->handle,0 , linear,sizeof (linear)); } -igt_info ("Verifying initialisation...\n" ); +igt_info ("Verifying initialisation - %d buffers of %d bytes\n" , count,SIZE );for (i =0 ; i < count; i++)check_bo (fd, bo[i]->handle, start_val[i]);@@ -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,44 @@ int main(int argc, char **argv)for (i =0 ; i < count; i++)check_bo (fd, bo[i]->handle, start_val[i]); +/* release resources */ +for (i =0 ; i < count; i++) { +drm_intel_bo_unreference (bo[i]); + }
tests/gem_render_linear_blits.c int main(int argc, char **argv) · line 194
Quoted 10 lines
tests/gem_render_linear_blits.c +10
-0+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);
Please use the igt_main block instead of open-coding it. Same for your other patch.
tests/gem_render_linear_blits.c int main(int argc, char **argv) · line 203
Quoted 9 lines
tests/gem_render_linear_blits.c +9
-0+ igt_fixture { + fd =drm_open_any (); + } + + igt_subtest("basic") { +run_test (fd,2 ); + } + +/* the rest of the tests are too long for simulation */
Spaces instead of tabs for indent.
Quoted 25 lines
tests/gem_render_linear_blits.c +16
-0+igt_skip_on_simulation (); + + igt_subtest("apperture-thrash") { + count =3 *gem_aperture_size (fd) /SIZE /2 ; +intel_require_memory (count,SIZE ,CHECK_RAM ); +run_test (fd, count); + } + + igt_subtest("swap-thrash") { +uint64_t swap_mb =intel_get_total_swap_mb (); +igt_require (swap_mb >0 ); + count = ((intel_get_avail_ram_mb () + (swap_mb /2 )) *1024 *1024 ) /SIZE ; +intel_require_memory (count,SIZE ,CHECK_RAM |CHECK_SWAP ); +run_test (fd, count); + } +igt_exit (); }Signature · 6 lines
2.3.0 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 7 lines
Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx