numam-dpdk/lib/member/rte_member_sketch_avx512.h
Leyi Rong db354bd2e1 member: add NitroSketch mode
Sketching algorithm provide high-fidelity approximate measurements and
appears as a promising alternative to traditional approaches such as
packet sampling.

NitroSketch [1] is a software sketching framework that optimizes
performance, provides accuracy guarantees, and supports a variety of
sketches.

This commit adds a new data structure called sketch into
membership library. This new data structure is an efficient
way to profile the traffic for heavy hitters. Also use min-heap
structure to maintain the top-k flow keys.

[1] Zaoxing Liu, Ran Ben-Basat, Gil Einziger, Yaron Kassner, Vladimir
Braverman, Roy Friedman, Vyas Sekar, "NitroSketch: Robust and General
Sketch-based Monitoring in Software Switches", in ACM SIGCOMM 2019.
https://dl.acm.org/doi/pdf/10.1145/3341302.3342076

Signed-off-by: Alan Liu <zaoxingliu@gmail.com>
Signed-off-by: Yipeng Wang <yipeng1.wang@intel.com>
Signed-off-by: Leyi Rong <leyi.rong@intel.com>
Tested-by: Yu Jiang <yux.jiang@intel.com>
2022-10-09 23:11:43 +02:00

36 lines
657 B
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2020 Intel Corporation
*/
#ifndef RTE_MEMBER_SKETCH_AVX512_H
#define RTE_MEMBER_SKETCH_AVX512_H
#ifdef __cplusplus
extern "C" {
#endif
#include <rte_vect.h>
#include "rte_member.h"
#include "rte_member_sketch.h"
#define NUM_ROW_VEC 8
void
sketch_update_avx512(const struct rte_member_setsum *ss,
const void *key,
uint32_t count);
uint64_t
sketch_lookup_avx512(const struct rte_member_setsum *ss,
const void *key);
void
sketch_delete_avx512(const struct rte_member_setsum *ss,
const void *key);
#ifdef __cplusplus
}
#endif
#endif /* RTE_MEMBER_SKETCH_AVX512_H */