numam-dpdk/lib
Yipeng Wang 75706568a7 hash: add extendable bucket feature
In use cases that hash table capacity needs to be guaranteed,
the extendable bucket feature can be used to contain extra
keys in linked lists when conflict happens. This is similar
concept to the extendable bucket hash table in packet
framework.

This commit adds the extendable bucket feature. User can turn
it on or off through the extra flag field during table
creation time.

Extendable bucket table composes of buckets that can be
linked list to current main table. When extendable bucket
is enabled, the hash table load can always achieve 100%.
In other words, the table can always accommodate the same
number of keys as the specified table size. This provides
100% table capacity guarantee.

Although keys ending up in the ext buckets may have longer
look up time, they should be rare due to the cuckoo
algorithm.

Signed-off-by: Yipeng Wang <yipeng1.wang@intel.com>
Acked-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2018-10-26 01:04:33 +02:00
..
librte_acl eal: add macro for attribute weak 2018-10-25 02:11:23 +02:00
librte_bbdev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_bitratestats bitrate: add sanity check on parameters 2018-07-26 20:07:57 +02:00
librte_bpf bpf: fix a typo 2018-10-25 11:27:49 +02:00
librte_cfgfile build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_cmdline mk: build with _GNU_SOURCE defined by default 2018-10-22 11:28:27 +02:00
librte_compat buildtools: change license to SPDX 2018-07-26 22:45:17 +02:00
librte_compressdev compressdev: fix compression API description 2018-10-17 12:16:54 +02:00
librte_cryptodev cryptodev: fix library version 2018-10-17 12:23:40 +02:00
librte_distributor build: set compat lib as universal dependency 2018-01-30 21:59:00 +01:00
librte_eal bus/vdev: fix multi-process IPC buffer leak on scan 2018-10-25 10:28:13 +02:00
librte_efd build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ethdev ethdev: add generic MAC address rewrite actions 2018-10-18 10:24:39 +02:00
librte_eventdev eventdev: fix build 2018-10-10 21:40:40 +02:00
librte_flow_classify flow_classify: do not check for invalid socket ID 2018-10-11 10:37:45 +02:00
librte_gro build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_gso gso: support UDP/IPv4 fragmentation 2018-07-11 23:45:20 +02:00
librte_hash hash: add extendable bucket feature 2018-10-26 01:04:33 +02:00
librte_ip_frag ip_frag: add function to delete expired entries 2018-09-19 19:45:38 +02:00
librte_jobstats build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_kni kni: allocate memory dynamically for each device 2018-10-02 17:57:00 +02:00
librte_kvargs kvargs: fix processing a null list 2018-10-24 15:06:46 +02:00
librte_latencystats latency: fix timestamp marking and latency calculation 2018-10-25 10:30:13 +02:00
librte_lpm lpm6: add incremental update on delete 2018-09-19 17:11:37 +02:00
librte_mbuf mbuf: add IGMP packet type 2018-10-25 15:51:16 +02:00
librte_member remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_mempool malloc: add function to check if socket is external 2018-10-11 11:11:25 +02:00
librte_meter meter: remove experimental tag from profile API 2018-08-06 01:15:11 +02:00
librte_metrics metrics: disallow null as metric name 2018-07-26 20:30:18 +02:00
librte_net net: fix Intel prepare function for IP checksum offload 2018-09-28 01:41:02 +02:00
librte_pci use SPDX tag for 6WIND copyrighted files 2018-05-25 10:47:06 +02:00
librte_pdump mk: build with _GNU_SOURCE defined by default 2018-10-22 11:28:27 +02:00
librte_pipeline pipeline: add table action for packet decap 2018-10-12 19:33:34 +02:00
librte_port port: add symmetric crypto 2018-10-12 19:33:02 +02:00
librte_power examples/vm_power: add branch ratio policy type 2018-07-20 23:59:42 +02:00
librte_rawdev rawdev: fix missing queue count API 2018-08-01 18:25:10 +02:00
librte_reorder build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ring ring: add library version to meson build 2018-10-25 14:30:05 +02:00
librte_sched mk: build with _GNU_SOURCE defined by default 2018-10-22 11:28:27 +02:00
librte_security security: support PDCP 2018-10-24 15:12:33 +02:00
librte_table lib/librte_table: add hash function headers 2018-10-12 17:58:53 +02:00
librte_timer eal: make semantics of lcore role function more intuitive 2018-04-26 16:58:18 +02:00
librte_vhost vhost: enable postcopy protocol feature 2018-10-18 10:24:39 +02:00
Makefile lpm6: store rules in hash table 2018-09-19 17:11:17 +02:00
meson.build mk: build with _GNU_SOURCE defined by default 2018-10-22 11:28:27 +02:00