]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ma_xa_benchmark: Use user time. add rcu barrier before size calc.
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Wed, 6 Feb 2019 20:23:25 +0000 (15:23 -0500)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Wed, 31 Jul 2019 14:52:40 +0000 (10:52 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
tools/testing/radix-tree/ma_xa_benchmark.c

index 91f2ae7bec7b0c4a5c3fa01f3a6008ba79bfe0bf..e7247818c6e1563bfb44c78218dbdf88d01d85f1 100644 (file)
@@ -8,6 +8,7 @@
 #define XA_DEBUG
 #include "test.h"
 #include <time.h>
+#include <sys/resource.h>
 
 #define module_init(x)
 #define module_exit(x)
@@ -30,22 +31,26 @@ int __weak main(void)
        unsigned long xa_m, mt_m;
        void *entry;
        unsigned long i, max = 100000;
+       struct rusage sru, eru;
 
 
+       /*  xarray first */
        radix_tree_init();
        DEFINE_XARRAY(xa);
        entry = &xa;
 
-       start = clock();
+       getrusage(RUSAGE_SELF, &sru);
        for (i = 0; i <= max; i++) {
                xa_store(&xa, i, entry, GFP_KERNEL);
        }
-       end = clock();
+       getrusage(RUSAGE_SELF, &eru);
 
+       start = sru.ru_utime.tv_usec;
+       end = eru.ru_utime.tv_usec;
        for (i = 0; i <= max; i++) {
                BUG_ON(entry != xa_load(&xa, i));
        }
-       /*  xarray first */
+       rcu_barrier();
        xa_t = ((double) (end - start)) / CLOCKS_PER_SEC;
        xa_m = xa_get_alloc_size();
        printk("xa %lu inserts: %fs using %luK in %d allocations\n",
@@ -61,25 +66,27 @@ int __weak main(void)
        maple_tree_init();
        DEFINE_MTREE(mt);
 
-       start = clock();
+       getrusage(RUSAGE_SELF, &sru);
        for (i = 0; i <= max; i++) {
                mtree_insert(&mt, i, entry, GFP_KERNEL);
        }
-       end = clock();
+       getrusage(RUSAGE_SELF, &eru);
+       start = sru.ru_utime.tv_usec;
+       end = eru.ru_utime.tv_usec;
        for (i = 0; i <= max; i++) {
                BUG_ON(entry != mtree_load(&mt, i));
        }
 
-       /*  xarray first */
+       rcu_barrier();
        mt_t = ((double) (end - start)) / CLOCKS_PER_SEC;
        mt_m = mt_get_alloc_size();
        printk("mt %lu inserts: %fs using %luK in %d allocations\n",
                max, mt_t, mt_m/1024, nr_allocated);
        mtree_destroy(&mt);
-       printk(" Delta : %f (%f%%)\n", xa_t - mt_t, (xa_t - mt_t)/(xa_t + mt_t) * 100);
+       printk(" Delta : %f (%f%% of xa time) %ldK\n",
+               xa_t - mt_t, (mt_t - xa_t)/xa_t * 100,
+               (signed long)(xa_m - mt_m)/1024);
        rcu_barrier();
-       if (nr_allocated)
-               printf("nr_allocated = %d\n", nr_allocated);
        printk("Done\n");
        return 0;
 }