summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2021-10-07 09:09:30 +0200
committerZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2021-10-15 05:54:36 +0200
commit576b0c5c73984a53cb775e31ab23f7b76dd2294e (patch)
tree795482e36191332ca1956df737f6f45a20e3604c /benchmarks
parent629a9081f3f38b506d9346f4b0b060fa006e865d (diff)
benchmarks/gem_exec_fault: Add timeout argument
Add timeout argument and change elapsed time to inner loop to be more precise in timeout processing. Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> Cc: Ashutosh Dixit <ashutosh.dixit@intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/gem_exec_fault.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/benchmarks/gem_exec_fault.c b/benchmarks/gem_exec_fault.c
index d53fab96..fe940b44 100644
--- a/benchmarks/gem_exec_fault.c
+++ b/benchmarks/gem_exec_fault.c
@@ -49,6 +49,7 @@
#include "ioctl_wrappers.h"
#define ENGINE_FLAGS (I915_EXEC_RING_MASK | I915_EXEC_BSD_MASK)
+#define DEFAULT_TIMEOUT 2.f
static double elapsed(const struct timespec *start,
const struct timespec *end)
@@ -64,7 +65,8 @@ static uint32_t batch(int fd, uint64_t size)
return handle;
}
-static int loop(uint64_t size, unsigned ring, int reps, int ncpus, unsigned flags)
+static int loop(uint64_t size, unsigned ring, int reps, int ncpus,
+ unsigned flags, float timeout)
{
struct drm_i915_gem_execbuffer2 execbuf;
struct drm_i915_gem_exec_object2 obj;
@@ -128,10 +130,14 @@ static int loop(uint64_t size, unsigned ring, int reps, int ncpus, unsigned flag
/* fault out */
obj.alignment = 1ull << 63;
__gem_execbuf(fd, &execbuf);
- }
- clock_gettime(CLOCK_MONOTONIC, &end);
- } while (elapsed(&start, &end) < 2.);
+ clock_gettime(CLOCK_MONOTONIC, &end);
+ if (elapsed(&start, &end) >= timeout) {
+ timeout = -1.0;
+ break;
+ }
+ }
+ } while (timeout > 0);
gem_sync(fd, obj.handle);
clock_gettime(CLOCK_MONOTONIC, &end);
@@ -156,8 +162,9 @@ int main(int argc, char **argv)
int reps = 1;
int ncpus = 1;
int c;
+ float timeout = DEFAULT_TIMEOUT;
- while ((c = getopt (argc, argv, "e:r:s:f")) != -1) {
+ while ((c = getopt (argc, argv, "e:r:s:ft:")) != -1) {
switch (c) {
case 'e':
if (strcmp(optarg, "rcs") == 0)
@@ -190,10 +197,15 @@ int main(int argc, char **argv)
size = 4096;
break;
+ case 't':
+ timeout = atof(optarg);
+ igt_assert_f(timeout > 0, "Timeout must be > 0\n");
+ break;
+
default:
break;
}
}
- return loop(size, ring, reps, ncpus, flags);
+ return loop(size, ring, reps, ncpus, flags, timeout);
}