diff mbox

tests/gem_exec_lut_handle

Message ID 1426673972-16752-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter March 18, 2015, 10:19 a.m. UTC
Reduce default number of repeats a lot. High repeat count is only
useful for microbenchmarking, not that much for regression testing.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87131
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 tests/gem_exec_lut_handle.c | 38 +++++++++++++++++++++++++++++++++++---
 1 file changed, 35 insertions(+), 3 deletions(-)

Comments

Chris Wilson March 18, 2015, 11:19 a.m. UTC | #1
On Wed, Mar 18, 2015 at 11:19:32AM +0100, Daniel Vetter wrote:
> Reduce default number of repeats a lot. High repeat count is only
> useful for microbenchmarking, not that much for regression testing.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87131

This just to hide the regression that exec got a lot slower?
-Chris
Daniel Vetter March 18, 2015, 1:50 p.m. UTC | #2
On Wed, Mar 18, 2015 at 11:19:46AM +0000, Chris Wilson wrote:
> On Wed, Mar 18, 2015 at 11:19:32AM +0100, Daniel Vetter wrote:
> > Reduce default number of repeats a lot. High repeat count is only
> > useful for microbenchmarking, not that much for regression testing.
> > 
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87131
> 
> This just to hide the regression that exec got a lot slower?

Well 10% or so afaik. But in general I think we need to grow more smarts
so that microbenchmarks don't chew too much cpu time. Eventually I'd like
to integrate them somehow in our performance testing in a new igt mode or
something like that ...

And I haven't seen a lot of activity to track down the reloc regression
itself.
-Daniel
Chris Wilson March 18, 2015, 2:53 p.m. UTC | #3
On Wed, Mar 18, 2015 at 02:50:43PM +0100, Daniel Vetter wrote:
> And I haven't seen a lot of activity to track down the reloc regression
> itself.

The cause was obvious. The essence is the multiple redundant atomic
operations added to execbuffer.
-Chris
diff mbox

Patch

diff --git a/tests/gem_exec_lut_handle.c b/tests/gem_exec_lut_handle.c
index c2d490f94cd6..e2e31f233cd5 100644
--- a/tests/gem_exec_lut_handle.c
+++ b/tests/gem_exec_lut_handle.c
@@ -113,9 +113,32 @@  static int exec(int fd, int num_exec, int num_relocs, unsigned flags)
 			&execbuf);
 }
 
+int repeats = 10;
+
+static int opt_handler(int opt, int opt_index)
+{
+	switch (opt) {
+	case 'r':
+		igt_warn("meh\n");
+		repeats = atoi(optarg);
+		igt_warn("meh\n");
+		break;
+	default:
+		igt_assert(0);
+	}
+
+	return 0;
+}
+
 #define ELAPSED(a,b) (1e6*((b)->tv_sec - (a)->tv_sec) + ((b)->tv_usec - (a)->tv_usec))
-igt_simple_main
+int main(int argc, char **argv)
 {
+	const char *help_str =
+	       "  --repeats\t\tNumber of repeats to run the microbenchmarks for.";
+	static struct option long_options[] = {
+		{"repeats", 1, 0, 'r'},
+		{ 0, 0, 0, 0 }
+	};
 	uint32_t batch[2] = {MI_BATCH_BUFFER_END};
 	int fd, n, m, count;
 	const struct {
@@ -128,6 +151,9 @@  igt_simple_main
 		{ .name = NULL },
 	}, *p;
 
+	igt_simple_init_parse_opts(&argc, argv, "", long_options,
+				   help_str, opt_handler);
+
 	igt_skip_on_simulation();
 
 	fd = drm_open_any();
@@ -160,7 +186,7 @@  igt_simple_main
 
 				do_or_die(exec(fd, n, m, 0 | p->flags));
 				gettimeofday(&start, NULL);
-				for (count = 0; count < 1000; count++)
+				for (count = 0; count < repeats; count++)
 					do_or_die(exec(fd, n, m, 0 | p->flags));
 				gettimeofday(&end, NULL);
 				gem_sync(fd, gem_exec[MAX_NUM_EXEC].handle);
@@ -168,7 +194,7 @@  igt_simple_main
 
 				do_or_die(exec(fd, n, m, USE_LUT | p->flags));
 				gettimeofday(&start, NULL);
-				for (count = 0; count < 1000; count++)
+				for (count = 0; count < repeats; count++)
 					do_or_die(exec(fd, n, m, USE_LUT | p->flags));
 				gettimeofday(&end, NULL);
 				gem_sync(fd, gem_exec[MAX_NUM_EXEC].handle);
@@ -204,4 +230,10 @@  igt_simple_main
 			igt_info("\n");
 		}
 	}
+
+	igt_info("Used %i rounds for testing.\n"
+		 "Increase for more accurate results when microbenchmarking with --repeats\n",
+		 repeats);
+
+	igt_exit();
 }