From: Liam R. Howlett Date: Wed, 6 Feb 2019 20:23:25 +0000 (-0500) Subject: ma_xa_benchmark: Use user time. add rcu barrier before size calc. X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=57fb59c23fc7ccab0923f71463a57a591ed363dc;p=users%2Fjedix%2Flinux-maple.git ma_xa_benchmark: Use user time. add rcu barrier before size calc. Signed-off-by: Liam R. Howlett --- diff --git a/tools/testing/radix-tree/ma_xa_benchmark.c b/tools/testing/radix-tree/ma_xa_benchmark.c index 91f2ae7bec7b..e7247818c6e1 100644 --- a/tools/testing/radix-tree/ma_xa_benchmark.c +++ b/tools/testing/radix-tree/ma_xa_benchmark.c @@ -8,6 +8,7 @@ #define XA_DEBUG #include "test.h" #include +#include #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; }