From: Avi Kivity <a...@redhat.com>

Scale up iterations until we measure at least 1G cycles.

Signed-off-by: Avi Kivity <a...@redhat.com>

diff --git a/kvm/user/test/x86/vmexit.c b/kvm/user/test/x86/vmexit.c
index 5088dc9..e7cb5ef 100644
--- a/kvm/user/test/x86/vmexit.c
+++ b/kvm/user/test/x86/vmexit.c
@@ -17,7 +17,7 @@ static inline unsigned long long rdtsc()
        return r;
 }
 
-#define N (1 << 22)
+#define GOAL (1ull << 30)
 
 #ifdef __x86_64__
 #  define R "r"
@@ -93,6 +93,7 @@ static void do_test(struct test *test)
 {
        int i;
        unsigned long long t1, t2;
+       unsigned iterations = 32;
         void (*func)(void) = test->func;
 
         if (test->valid && !test->valid()) {
@@ -100,11 +101,14 @@ static void do_test(struct test *test)
                return;
        }
 
-       t1 = rdtsc();
-       for (i = 0; i < N; ++i)
-            func();
-       t2 = rdtsc();
-       printf("%s %d\n", test->name, (int)((t2 - t1) / N));
+       do {
+               iterations *= 2;
+               t1 = rdtsc();
+               for (i = 0; i < iterations; ++i)
+                       func();
+               t2 = rdtsc();
+       } while ((t2 - t1) < GOAL);
+       printf("%s %d\n", test->name, (int)((t2 - t1) / iterations));
 }
 
 #define ARRAY_SIZE(_x) (sizeof(_x) / sizeof((_x)[0]))
--
To unsubscribe from this list: send the line "unsubscribe kvm-commits" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to