* [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.