On Wed, Jun 1, 2022 at 10:42 AM Feng zhou <zhoufeng.zf@xxxxxxxxxxxxx> wrote: > +struct { > + __uint(type, BPF_MAP_TYPE_HASH); > + __type(key, u32); > + __type(value, u64); > + __uint(max_entries, MAX_ENTRIES); > +} hash_map_bench SEC(".maps"); > + > +u64 __attribute__((__aligned__(256))) percpu_time[256]; aligned 256 ? What is the point? > +u64 nr_loops; > + > +static int loop_update_callback(__u32 index, u32 *key) > +{ > + u64 init_val = 1; > + > + bpf_map_update_elem(&hash_map_bench, key, &init_val, BPF_ANY); > + return 0; > +} > + > +SEC("fentry/" SYS_PREFIX "sys_getpgid") > +int benchmark(void *ctx) > +{ > + u32 key = bpf_get_prandom_u32() % MAX_ENTRIES + MAX_ENTRIES; What is the point of random ? just key = MAX_ENTRIES would be the same, no? or key = -1 ? > + u32 cpu = bpf_get_smp_processor_id(); > + u64 start_time = bpf_ktime_get_ns(); > + > + bpf_loop(nr_loops, loop_update_callback, &key, 0); > + percpu_time[cpu & 255] = bpf_ktime_get_ns() - start_time; > + return 0; > +} > -- > 2.20.1 >