[dpdk-dev] [PATCH v2 0/6] Add read-write concurrency to rte_hash library
Yipeng Wang
yipeng1.wang at intel.com
Fri Jun 29 14:24:51 CEST 2018
This patch set adds the read-write concurrency support in rte_hash.
A new flag value is added to indicate if read-write concurrency is needed
during creation time. Test cases are implemented to do functional and
performance tests.
The new concurrency model is based on rte_rwlock. When Intel TSX is
available and the users indicate to use it, the TM version of the
rte_rwlock will be called. Both multi-writer and read-write concurrency
are protected by the rte_rwlock instead of the x86 specific RTM
instructions, so the x86 specific header rte_cuckoo_hash_x86.h is removed
and the code is infused into the main .c file.
A new rte_hash_count API is proposed to count how many keys are inserted
into the hash table.
v2->v1:
1. Split each commit into two commits for easier review (Pablo).
2. Add more comments in various places (Pablo).
3. hash: In key insertion function, move duplicated key checking to
earlier location and protect it using locks. Checking duplicated key
should happen first and data updates should be protected.
4. hash: In lookup bulk function, put signature comparison in lock,
since writers could happen between signature match on two buckets.
5. hash: Add write locks to reset function as well to protect resets.
5. test: Fix 32-bit compilation error in read-write test (Pablo).
6. test: Check total physical core count in read-write test. Don't
test with thread count that larger than physical core count.
7. Other minor fixes such as typos (Pablo).
Yipeng Wang (6):
hash: make duplicated code into functions
hash: add read and write concurrency support
test: add tests in hash table perf test
test: add test case for read write concurrency
hash: fix to have more accurate key slot size
hash: add new API function to query the key count
lib/librte_hash/meson.build | 1 -
lib/librte_hash/rte_cuckoo_hash.c | 695 +++++++++++++++++++++-------------
lib/librte_hash/rte_cuckoo_hash.h | 18 +-
lib/librte_hash/rte_cuckoo_hash_x86.h | 164 --------
lib/librte_hash/rte_hash.h | 14 +
lib/librte_hash/rte_hash_version.map | 8 +
test/test/Makefile | 1 +
test/test/test_hash.c | 12 +
test/test/test_hash_multiwriter.c | 9 +
test/test/test_hash_perf.c | 36 +-
test/test/test_hash_readwrite.c | 645 +++++++++++++++++++++++++++++++
11 files changed, 1155 insertions(+), 448 deletions(-)
delete mode 100644 lib/librte_hash/rte_cuckoo_hash_x86.h
create mode 100644 test/test/test_hash_readwrite.c
--
2.7.4
More information about the dev
mailing list