]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'bpf_hash-locking'
authorDavid S. Miller <davem@davemloft.net>
Tue, 29 Dec 2015 20:13:45 +0000 (15:13 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Dec 2015 20:13:45 +0000 (15:13 -0500)
commit8de3c4649294176f95a2ce7af465f2327953d8de
tree78d96a346886b3797d563e598dac08e18898f16b
parent310afe63de2f09a9010175ea7ca3f0597c9e92f3
parentfb9dde8d92f03b8d6651caec1fd00f9ed7ab5fbf
Merge branch 'bpf_hash-locking'

Ming Lei says:

====================
bpf: hash: use per-bucket spinlock

This patchset tries to optimize ebpf hash map, and follows
the idea:

        Both htab_map_update_elem() and htab_map_delete_elem()
        can be called from eBPF program, and they may be in kernel
        hot path, it isn't efficient to use a per-hashtable lock
        in this two helpers, so this patch converts the lock into
        per-bucket spinlock.

With this patchset, looks the performance penalty from eBPF
decreased a lot, see the following test:

        1) run 'tools/biolatency' of bcc before running block test;

        2) run fio to test block throught over /dev/nullb0,
        (randread, 16jobs, libaio, 4k bs) and the test box
        is one 24cores(dual sockets) VM server:
        - without patchset:  607K IOPS
        - with this patchset: 1184K IOPS
        - without running eBPF prog: 1492K IOPS

TODO:
        - remove the per-hashtable atomic counter

V2:
        - fix checking on buckets size
V1:
        - fix the wrong 3/3 patch
====================

Signed-off-by: David S. Miller <davem@davemloft.net>