]> git.baikalelectronics.ru Git - kernel.git/commit
bpf: Remove usage of kmem_cache from bpf_mem_cache.
authorAlexei Starovoitov <ast@kernel.org>
Fri, 2 Sep 2022 21:10:57 +0000 (14:10 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 5 Sep 2022 13:33:07 +0000 (15:33 +0200)
commita499ec03f5945e6e9f9ff08f70968d90cd0da2c1
tree48a88881f31da2404ee51871c6e57869ee9ccf62
parent3c775f5ed3a1bc4343db6d2b8d3fa2d0bc5d34c9
bpf: Remove usage of kmem_cache from bpf_mem_cache.

For bpf_mem_cache based hash maps the following stress test:
for (i = 1; i <= 512; i <<= 1)
  for (j = 1; j <= 1 << 18; j <<= 1)
    fd = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, i, j, 2, 0);
creates many kmem_cache-s that are not mergeable in debug kernels
and consume unnecessary amount of memory.
Turned out bpf_mem_cache's free_list logic does batching well,
so usage of kmem_cache for fixes size allocations doesn't bring
any performance benefits vs normal kmalloc.
Hence get rid of kmem_cache in bpf_mem_cache.
That saves memory, speeds up map create/destroy operations,
while maintains hash map update/delete performance.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20220902211058.60789-16-alexei.starovoitov@gmail.com
kernel/bpf/memalloc.c