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>
36 lines
657 B
C
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 */
|