All of lore.kernel.org
 help / color / mirror / Atom feed
* [jimc:wk-merge-v8-all 50/50] lib/test_bonsai_tree.c:51:13: warning: stack frame size (2392) exceeds limit (2048) in 'benchmark_scale'
@ 2026-09-03 10:08 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-03 10:08 UTC (permalink / raw)
  To: Jim Cromie,  Łukasz Bartosik; +Cc: oe-kbuild-all

tree:   https://github.com/jimc/linux.git wk-merge-v8-all
head:   15fc7b4f50950618237402fdf3a05eb0caaff2cc
commit: 15fc7b4f50950618237402fdf3a05eb0caaff2cc [50/50] foo
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20260903/202609031226.lb3jf1Z7-lkp@intel.com/config)
compiler: clang version 22.1.8 (https://github.com/llvm/llvm-project ca7933e47d3a3451d81e72ac174dcb5aa28b59d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260903/202609031226.lb3jf1Z7-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609031226.lb3jf1Z7-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> lib/test_bonsai_tree.c:51:13: warning: stack frame size (2392) exceeds limit (2048) in 'benchmark_scale' [-Wframe-larger-than]
      51 | static void benchmark_scale(unsigned int num_intervals)
         |             ^
   1 warning generated.


vim +/benchmark_scale +51 lib/test_bonsai_tree.c

6befb245966f5a Jim Cromie 2026-09-02   50  
6befb245966f5a Jim Cromie 2026-09-02  @51  static void benchmark_scale(unsigned int num_intervals)
6befb245966f5a Jim Cromie 2026-09-02   52  {
6befb245966f5a Jim Cromie 2026-09-02   53  	struct flat_interval *flat_table;
6befb245966f5a Jim Cromie 2026-09-02   54  	struct bonsai_tree bt;
6befb245966f5a Jim Cromie 2026-09-02   55  	struct maple_tree mt;
6befb245966f5a Jim Cromie 2026-09-02   56  	ktime_t t0, t1;
6befb245966f5a Jim Cromie 2026-09-02   57  	u64 bonsai_build_ns, maple_build_ns;
6befb245966f5a Jim Cromie 2026-09-02   58  	u64 bonsai_seq_ns, maple_seq_ns, bsearch_seq_ns;
6befb245966f5a Jim Cromie 2026-09-02   59  	u64 bonsai_rnd_ns, maple_rnd_ns, bsearch_rnd_ns;
6befb245966f5a Jim Cromie 2026-09-02   60  	unsigned long *rnd_keys;
6befb245966f5a Jim Cromie 2026-09-02   61  	unsigned int i, step = 16;
6befb245966f5a Jim Cromie 2026-09-02   62  	volatile void *sink = NULL;
6befb245966f5a Jim Cromie 2026-09-02   63  	size_t flat_bytes, bonsai_bytes, maple_bytes;
6befb245966f5a Jim Cromie 2026-09-02   64  
6befb245966f5a Jim Cromie 2026-09-02   65  	flat_table = kmalloc_array(num_intervals, sizeof(*flat_table), GFP_KERNEL);
6befb245966f5a Jim Cromie 2026-09-02   66  	rnd_keys = kmalloc_array(1024, sizeof(*rnd_keys), GFP_KERNEL);
6befb245966f5a Jim Cromie 2026-09-02   67  	if (!flat_table || !rnd_keys) {
6befb245966f5a Jim Cromie 2026-09-02   68  		kfree(flat_table);
6befb245966f5a Jim Cromie 2026-09-02   69  		kfree(rnd_keys);
6befb245966f5a Jim Cromie 2026-09-02   70  		pr_err("failed to allocate test buffers for N=%u\n", num_intervals);
6befb245966f5a Jim Cromie 2026-09-02   71  		return;
6befb245966f5a Jim Cromie 2026-09-02   72  	}
6befb245966f5a Jim Cromie 2026-09-02   73  
6befb245966f5a Jim Cromie 2026-09-02   74  	for (i = 0; i < num_intervals; i++) {
6befb245966f5a Jim Cromie 2026-09-02   75  		flat_table[i].start = (unsigned long)i * step;
6befb245966f5a Jim Cromie 2026-09-02   76  		flat_table[i].end = flat_table[i].start + step - 1;
6befb245966f5a Jim Cromie 2026-09-02   77  		flat_table[i].val = (void *)(unsigned long)(i + 1);
6befb245966f5a Jim Cromie 2026-09-02   78  	}
6befb245966f5a Jim Cromie 2026-09-02   79  	for (i = 0; i < 1024; i++) {
6befb245966f5a Jim Cromie 2026-09-02   80  		unsigned int idx = get_random_u32_below(num_intervals);
6befb245966f5a Jim Cromie 2026-09-02   81  		rnd_keys[i] = flat_table[idx].start + get_random_u32_below(step);
6befb245966f5a Jim Cromie 2026-09-02   82  	}
6befb245966f5a Jim Cromie 2026-09-02   83  
6befb245966f5a Jim Cromie 2026-09-02   84  	flat_bytes = num_intervals * sizeof(struct flat_interval);
6befb245966f5a Jim Cromie 2026-09-02   85  
6befb245966f5a Jim Cromie 2026-09-02   86  	/* 0. Benchmark Bonsai Tree Build */
6befb245966f5a Jim Cromie 2026-09-02   87  	bonsai_init(&bt);
6befb245966f5a Jim Cromie 2026-09-02   88  	bonsai_init_hint(&bt, num_intervals, GFP_KERNEL);
6befb245966f5a Jim Cromie 2026-09-02   89  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02   90  	for (i = 0; i < num_intervals; i++) {
6befb245966f5a Jim Cromie 2026-09-02   91  		bonsai_store_range(&bt, flat_table[i].start, flat_table[i].end,
6befb245966f5a Jim Cromie 2026-09-02   92  				   flat_table[i].val, GFP_KERNEL);
6befb245966f5a Jim Cromie 2026-09-02   93  	}
6befb245966f5a Jim Cromie 2026-09-02   94  	bonsai_seal(&bt);
6befb245966f5a Jim Cromie 2026-09-02   95  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02   96  	bonsai_build_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02   97  	bonsai_bytes = bt.node_count * BONSAI_NODE_SIZE;
6befb245966f5a Jim Cromie 2026-09-02   98  
6befb245966f5a Jim Cromie 2026-09-02   99  	/* 1. Benchmark Maple Tree Build */
6befb245966f5a Jim Cromie 2026-09-02  100  	mt_init_flags(&mt, 0);
6befb245966f5a Jim Cromie 2026-09-02  101  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  102  	for (i = 0; i < num_intervals; i++) {
6befb245966f5a Jim Cromie 2026-09-02  103  		mtree_store_range(&mt, flat_table[i].start, flat_table[i].end,
6befb245966f5a Jim Cromie 2026-09-02  104  				  flat_table[i].val, GFP_KERNEL);
6befb245966f5a Jim Cromie 2026-09-02  105  	}
6befb245966f5a Jim Cromie 2026-09-02  106  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  107  	maple_build_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  108  	maple_bytes = (num_intervals / 10 + 1) * 256;
6befb245966f5a Jim Cromie 2026-09-02  109  
6befb245966f5a Jim Cromie 2026-09-02  110  	/* 2. Sequential Lookup Benchmark */
6befb245966f5a Jim Cromie 2026-09-02  111  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  112  	for (i = 0; i < NUM_LOOKUPS; i++) {
6befb245966f5a Jim Cromie 2026-09-02  113  		unsigned long key = (i % num_intervals) * step + 4;
6befb245966f5a Jim Cromie 2026-09-02  114  		sink = bsearch_lookup(flat_table, num_intervals, key);
6befb245966f5a Jim Cromie 2026-09-02  115  	}
6befb245966f5a Jim Cromie 2026-09-02  116  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  117  	bsearch_seq_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  118  
6befb245966f5a Jim Cromie 2026-09-02  119  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  120  	for (i = 0; i < NUM_LOOKUPS; i++) {
6befb245966f5a Jim Cromie 2026-09-02  121  		unsigned long key = (i % num_intervals) * step + 4;
6befb245966f5a Jim Cromie 2026-09-02  122  		sink = bonsai_lookup(&bt, key);
6befb245966f5a Jim Cromie 2026-09-02  123  	}
6befb245966f5a Jim Cromie 2026-09-02  124  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  125  	bonsai_seq_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  126  
6befb245966f5a Jim Cromie 2026-09-02  127  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  128  	for (i = 0; i < NUM_LOOKUPS; i++) {
6befb245966f5a Jim Cromie 2026-09-02  129  		unsigned long key = (i % num_intervals) * step + 4;
6befb245966f5a Jim Cromie 2026-09-02  130  		sink = mtree_load(&mt, key);
6befb245966f5a Jim Cromie 2026-09-02  131  	}
6befb245966f5a Jim Cromie 2026-09-02  132  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  133  	maple_seq_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  134  
6befb245966f5a Jim Cromie 2026-09-02  135  	/* 3. Random Lookup Benchmark */
6befb245966f5a Jim Cromie 2026-09-02  136  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  137  	for (i = 0; i < NUM_LOOKUPS; i++) {
6befb245966f5a Jim Cromie 2026-09-02  138  		sink = bsearch_lookup(flat_table, num_intervals, rnd_keys[i & 1023]);
6befb245966f5a Jim Cromie 2026-09-02  139  	}
6befb245966f5a Jim Cromie 2026-09-02  140  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  141  	bsearch_rnd_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  142  
6befb245966f5a Jim Cromie 2026-09-02  143  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  144  	for (i = 0; i < NUM_LOOKUPS; i++) {
6befb245966f5a Jim Cromie 2026-09-02  145  		sink = bonsai_lookup(&bt, rnd_keys[i & 1023]);
6befb245966f5a Jim Cromie 2026-09-02  146  	}
6befb245966f5a Jim Cromie 2026-09-02  147  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  148  	bonsai_rnd_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  149  
6befb245966f5a Jim Cromie 2026-09-02  150  	t0 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  151  	for (i = 0; i < NUM_LOOKUPS; i++) {
6befb245966f5a Jim Cromie 2026-09-02  152  		sink = mtree_load(&mt, rnd_keys[i & 1023]);
6befb245966f5a Jim Cromie 2026-09-02  153  	}
6befb245966f5a Jim Cromie 2026-09-02  154  	t1 = ktime_get();
6befb245966f5a Jim Cromie 2026-09-02  155  	maple_rnd_ns = ktime_to_ns(ktime_sub(t1, t0));
6befb245966f5a Jim Cromie 2026-09-02  156  
6befb245966f5a Jim Cromie 2026-09-02  157  	pr_info("=== Benchmark N = %4u intervals (1M lookups) ===\n", num_intervals);
6befb245966f5a Jim Cromie 2026-09-02  158  	pr_info("  Memory   : Flat=%zu B | Bonsai=%zu B (nodes=%u, h=%u) | Maple=~%zu B\n",
6befb245966f5a Jim Cromie 2026-09-02  159  		flat_bytes, bonsai_bytes, bt.node_count, bt.height, maple_bytes);
6befb245966f5a Jim Cromie 2026-09-02  160  	pr_info("  Build    : Bonsai=%llu us | Maple=%llu us\n",
6befb245966f5a Jim Cromie 2026-09-02  161  		bonsai_build_ns / 1000, maple_build_ns / 1000);
6befb245966f5a Jim Cromie 2026-09-02  162  	pr_info("  Seq Look : BSearch=%llu ns/op | Bonsai=%llu ns/op | Maple=%llu ns/op\n",
6befb245966f5a Jim Cromie 2026-09-02  163  		bsearch_seq_ns / NUM_LOOKUPS, bonsai_seq_ns / NUM_LOOKUPS, maple_seq_ns / NUM_LOOKUPS);
6befb245966f5a Jim Cromie 2026-09-02  164  	pr_info("  Rnd Look : BSearch=%llu ns/op | Bonsai=%llu ns/op | Maple=%llu ns/op\n",
6befb245966f5a Jim Cromie 2026-09-02  165  		bsearch_rnd_ns / NUM_LOOKUPS, bonsai_rnd_ns / NUM_LOOKUPS, maple_rnd_ns / NUM_LOOKUPS);
6befb245966f5a Jim Cromie 2026-09-02  166  
6befb245966f5a Jim Cromie 2026-09-02  167  	bonsai_destroy(&bt);
6befb245966f5a Jim Cromie 2026-09-02  168  	mtree_destroy(&mt);
6befb245966f5a Jim Cromie 2026-09-02  169  	kfree(flat_table);
6befb245966f5a Jim Cromie 2026-09-02  170  	kfree(rnd_keys);
6befb245966f5a Jim Cromie 2026-09-02  171  	(void)sink;
6befb245966f5a Jim Cromie 2026-09-02  172  }
6befb245966f5a Jim Cromie 2026-09-02  173  

:::::: The code at line 51 was first introduced by commit
:::::: 6befb245966f5aba1109cfd718a7cf4dd7f13375 lib/test_bonsai_tree: Add benchmark for Bonsai vs Maple vs Binary Search

:::::: TO: Jim Cromie <jim.cromie@gmail.com>
:::::: CC: Jim Cromie <jim.cromie@gmail.com>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-03 10:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03 10:08 [jimc:wk-merge-v8-all 50/50] lib/test_bonsai_tree.c:51:13: warning: stack frame size (2392) exceeds limit (2048) in 'benchmark_scale' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.