-
- Downloads
Performance optimization using eBPF aggregation (#39)
* Add ebpf flows with per-cpu hashmap * Add flags to perform eviction * Add protocol to the evicted entry * Add new headers to record * tracer looksup the map on evicted entry * Handle tcp reset flag * Handle rst flag * Enable timeout based eviction of ingress/egress maps * ongoing performance measurements * Add in logic in README * Formatting changes to readme * Format changes * Correct the byte count * Minor edits for tracer * ebpf code with right byte count * Update README.md * Update README.md * Latest measurements with multiflow and cpu,mem * Add chart for throughput * Cosmetic changes to measurements * v6 support * Logic for time calculation * Cleanup of ebpf code * Remove prints and cleanup * Minor comments * Remove unused lines * bpf binary minor edit * Alignment corrections * Remove extra comments Co-authored-by:Mario Macias <mmaciasl@redhat.com> * Refactor my_flow_id to id * bug: Add direction variable while export * Remove printf * Handle hash collisions and improper deletions * Remove stray debug entry * Correct lint errors * Add monotime module for CLOCK_MONOTONIC * Use monotime instead of cgo * Add monotime to go.sum * Add monotime package to vendor * tidy imports * EvictionTimeout as duration * fixed testmain * Fixed tests * fixing getPingFlows verification * modify comment * fix e2e test version * Fix flow timing issue with reference time * Tidy to fix lint errors * fix errors in merge * Remove TCP flag based eviction * Remove TCP FIN/RST handling * Remove redundant fields * Simplify eBPF code optimizations (#49) * simplifying ebpf agent * version not really working well * almost-working tests but I suspect that monotonic time could be doing bad stuff there * not-yet-100% working tests * reusing same bpfObjects for all the interfaces. That should decrease memory usage * define max_entries at userspace * avoid if/elses in C code map operations * fixed compilation of unit tests * wip: re-enable ring-buffer flows * moved accounter inside tracer * one single tracer for all the qdiscs and filters * evict flows on ringbuffer * Minor changes * properly tested (and fixed) userspace accounter * move eBPF system setup to flowtracer creation * Discard old flows from being aggregated * Fix zero-valued aggregated flows * fix timestamp checking for flow discarding * Unify ingress/egress maps * Fixed build and test * Updated generated eBPF binaries * fix bug that caused that first flow could have start time == 0 Co-authored-by: Pravein <Pravein Govindan Kannan> Co-authored-by:
Mario Macias <mmaciasl@redhat.com>
Showing
- Makefile 2 additions, 2 deletionsMakefile
- bpf/README.md 50 additions, 0 deletionsbpf/README.md
- bpf/flow.h 30 additions, 27 deletionsbpf/flow.h
- bpf/flows.c 120 additions, 57 deletionsbpf/flows.c
- docs/measurements.pptx 0 additions, 0 deletionsdocs/measurements.pptx
- e2e/basic/common.go 2 additions, 2 deletionse2e/basic/common.go
- e2e/basic/flow_test.go 19 additions, 8 deletionse2e/basic/flow_test.go
- e2e/cluster/base/03-flp.yml 1 addition, 1 deletione2e/cluster/base/03-flp.yml
- e2e/cluster/kind_test.go 5 additions, 0 deletionse2e/cluster/kind_test.go
- e2e/kafka/manifests/20-flp-transformer.yml 1 addition, 1 deletione2e/kafka/manifests/20-flp-transformer.yml
- go.mod 1 addition, 0 deletionsgo.mod
- go.sum 2 additions, 0 deletionsgo.sum
- pkg/agent/agent.go 46 additions, 85 deletionspkg/agent/agent.go
- pkg/agent/agent_darwin.go 0 additions, 4 deletionspkg/agent/agent_darwin.go
- pkg/agent/agent_linux.go 0 additions, 16 deletionspkg/agent/agent_linux.go
- pkg/agent/agent_test.go 0 additions, 201 deletionspkg/agent/agent_test.go
- pkg/agent/config.go 3 additions, 3 deletionspkg/agent/config.go
- pkg/agent/filter.go 5 additions, 7 deletionspkg/agent/filter.go
- pkg/ebpf/bpf_bpfeb.go 6 additions, 3 deletionspkg/ebpf/bpf_bpfeb.go
- pkg/ebpf/bpf_bpfeb.o 0 additions, 0 deletionspkg/ebpf/bpf_bpfeb.o
Loading
Please register or sign in to comment