Re: [PATCH v2 bpf-next 1/4] bpf: Add bloom filter map implementation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 13, 2021 at 09:04:30PM -0700, Joanne Koong wrote:
> +
> +/* For bloom filter maps, the next 4 bits represent how many hashes to use.
> + * The maximum number of hash functions supported is 15. If this is not set,
> + * the default number of hash functions used will be 5.
> + */
> +	BPF_F_BLOOM_FILTER_HASH_BIT_1 = (1U << 13),
> +	BPF_F_BLOOM_FILTER_HASH_BIT_2 = (1U << 14),
> +	BPF_F_BLOOM_FILTER_HASH_BIT_3 = (1U << 15),
> +	BPF_F_BLOOM_FILTER_HASH_BIT_4 = (1U << 16),

The bit selection is unintuitive.
Since key_size has to be zero may be used that instead to indicate the number of hash
functions in the rare case when 5 is not good enough?
Or use inner_map_fd since there is no possibility of having an inner map in bloomfilter.
It could be a union:
    __u32   max_entries;    /* max number of entries in a map */
    __u32   map_flags;      /* BPF_MAP_CREATE related
                             * flags defined above.
                             */
    union {
       __u32  inner_map_fd;   /* fd pointing to the inner map */
       __u32  nr_hash_funcs;  /* or number of hash functions */
    };
    __u32   numa_node;      /* numa node */

> +struct bpf_bloom_filter {
> +	struct bpf_map map;
> +	u32 bit_array_mask;
> +	u32 hash_seed;
> +	/* If the size of the values in the bloom filter is u32 aligned,
> +	 * then it is more performant to use jhash2 as the underlying hash
> +	 * function, else we use jhash. This tracks the number of u32s
> +	 * in an u32-aligned value size. If the value size is not u32 aligned,
> +	 * this will be 0.
> +	 */
> +	u32 aligned_u32_count;

what is the performance difference?
May be we enforce 4-byte sized value for simplicity?



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux