1. 12 Dec, 2021 4 commits
    • Hou Tao's avatar
      selftests/bpf: Add benchmark for bpf_strncmp() helper · 9c42652f
      Hou Tao authored
      Add benchmark to compare the performance between home-made strncmp()
      in bpf program and bpf_strncmp() helper. In summary, the performance
      win of bpf_strncmp() under x86-64 is greater than 18% when the compared
      string length is greater than 64, and is 179% when the length is 4095.
      Under arm64 the performance win is even bigger: 33% when the length
      is greater than 64 and 600% when the length is 4095.
      
      The following is the details:
      
      no-helper-X: use home-made strncmp() to compare X-sized string
      helper-Y: use bpf_strncmp() to compare Y-sized string
      
      Under x86-64:
      
      no-helper-1          3.504 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-1             3.347 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-8          3.357 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      helper-8             3.307 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-32         3.064 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-32            3.253 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-64         2.563 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      helper-64            3.040 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-128        1.975 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-128           2.641 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-512        0.759 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-512           1.574 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-2048       0.329 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-2048          0.602 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-4095       0.117 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-4095          0.327 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      Under arm64:
      
      no-helper-1          2.806 ± 0.004M/s (drops 0.000 ± 0.000M/s)
      helper-1             2.819 ± 0.002M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-8          2.797 ± 0.109M/s (drops 0.000 ± 0.000M/s)
      helper-8             2.786 ± 0.025M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-32         2.399 ± 0.011M/s (drops 0.000 ± 0.000M/s)
      helper-32            2.703 ± 0.002M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-64         2.020 ± 0.015M/s (drops 0.000 ± 0.000M/s)
      helper-64            2.702 ± 0.073M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-128        1.604 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      helper-128           2.516 ± 0.002M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-512        0.699 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-512           2.106 ± 0.003M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-2048       0.215 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-2048          1.223 ± 0.003M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-4095       0.112 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-4095          0.796 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211210141652.877186-4-houtao1@huawei.com
      9c42652f
    • Hou Tao's avatar
      selftests/bpf: Fix checkpatch error on empty function parameter · 9a93bf3f
      Hou Tao authored
      Fix checkpatch error: "ERROR: Bad function definition - void foo()
      should probably be void foo(void)". Most replacements are done by
      the following command:
      
        sed -i 's#\([a-z]\)()$#\1(void)#g' testing/selftests/bpf/benchs/*.c
      Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211210141652.877186-3-houtao1@huawei.com
      9a93bf3f
    • Hou Tao's avatar
      bpf: Add bpf_strncmp helper · c5fb1993
      Hou Tao authored
      The helper compares two strings: one string is a null-terminated
      read-only string, and another string has const max storage size
      but doesn't need to be null-terminated. It can be used to compare
      file name in tracing or LSM program.
      Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211210141652.877186-2-houtao1@huawei.com
      c5fb1993
    • Alexei Starovoitov's avatar
      libbpf: Fix gen_loader assumption on number of programs. · 259172bb
      Alexei Starovoitov authored
      libbpf's obj->nr_programs includes static and global functions. That number
      could be higher than the actual number of bpf programs going be loaded by
      gen_loader. Passing larger nr_programs to bpf_gen__init() doesn't hurt. Those
      exra stack slots will stay as zero. bpf_gen__finish() needs to check that
      actual number of progs that gen_loader saw is less than or equal to
      obj->nr_programs.
      
      Fixes: ba05fd36 ("libbpf: Perform map fd cleanup for gen_loader in case of error")
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      259172bb
  2. 11 Dec, 2021 13 commits
  3. 10 Dec, 2021 23 commits