mbox

[v2,0/4] add new k32v64 hash table

Message ID cover.1586369591.git.vladimir.medvedkin@intel.com (mailing list archive)
Headers

Message

Vladimir Medvedkin April 8, 2020, 6:19 p.m. UTC
  Currently DPDK has a special implementation of a hash table for
4 byte keys which is called FBK hash. Unfortunately its main drawback
is that it only supports 2 byte values.
The new implementation called K32V64 hash
supports 4 byte keys and 8 byte associated values,
which is enough to store a pointer.

It would also be nice to get feedback on whether to leave the old FBK
and new k32v64 implementations or deprecate the old one?

v2:
- renamed from rte_dwk to rte_k32v64 as was suggested
- reworked lookup function, added inlined subroutines
- added avx512 key comparizon routine
- added documentation
- added statistic counters for total entries and extended entries(linked list)

Vladimir Medvedkin (4):
  hash: add k32v64 hash library
  hash: add documentation for k32v64 hash library
  test: add k32v64 hash autotests
  test: add k32v64 perf tests

 app/test/Makefile                         |   1 +
 app/test/autotest_data.py                 |  12 ++
 app/test/meson.build                      |   3 +
 app/test/test_hash_perf.c                 |  83 +++++++++
 app/test/test_k32v64_hash.c               | 229 ++++++++++++++++++++++++
 doc/api/doxy-api-index.md                 |   1 +
 doc/guides/prog_guide/index.rst           |   1 +
 doc/guides/prog_guide/k32v64_hash_lib.rst |  66 +++++++
 lib/Makefile                              |   2 +-
 lib/librte_hash/Makefile                  |   4 +-
 lib/librte_hash/meson.build               |   5 +-
 lib/librte_hash/rte_hash_version.map      |   6 +-
 lib/librte_hash/rte_k32v64_hash.c         | 279 ++++++++++++++++++++++++++++++
 lib/librte_hash/rte_k32v64_hash.h         | 214 +++++++++++++++++++++++
 14 files changed, 901 insertions(+), 5 deletions(-)
 create mode 100644 app/test/test_k32v64_hash.c
 create mode 100644 doc/guides/prog_guide/k32v64_hash_lib.rst
 create mode 100644 lib/librte_hash/rte_k32v64_hash.c
 create mode 100644 lib/librte_hash/rte_k32v64_hash.h