On Wed, Jan 19, 2022 at 8:48 PM Song Liu <songliubraving@xxxxxx> wrote: > > > > > On Jan 19, 2022, at 8:14 PM, Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > > > On Wed, Jan 19, 2022 at 03:06:19PM -0800, Song Liu wrote: > >> > >> +/* > >> + * BPF program pack allocator. > >> + * > >> + * Most BPF programs are pretty small. Allocating a hole page for each > >> + * program is sometime a waste. Many small bpf program also adds pressure > >> + * to instruction TLB. To solve this issue, we introduce a BPF program pack > >> + * allocator. The prog_pack allocator uses HPAGE_PMD_SIZE page (2MB on x86) > >> + * to host BPF programs. > >> + */ > >> +#define BPF_PROG_PACK_SIZE HPAGE_PMD_SIZE > >> +#define BPF_PROG_MAX_PACK_PROG_SIZE HPAGE_PMD_SIZE > > > > We have a synthetic test with 1M bpf instructions. How did it JIT? > > Are you saying we were lucky that every BPF insn was JITed to <2 bytes x86? > > Did I misread the 2MB limit? > > The logic is, if the program is bigger than 2MB, we fall back to use > module_alloc(). This limitation simplifies the bpf_prog_pack allocator. Ahh. Missed this part of the diff. Makes sense.