Skip to content
Snippets Groups Projects
Unverified Commit c27bd516 authored by Pravein Govindan Kannan's avatar Pravein Govindan Kannan Committed by GitHub
Browse files

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: default avatarMario 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: default avatarMario Macias <mmaciasl@redhat.com>
parent 036919ce
Branches
No related tags found
No related merge requests found
Showing with 293 additions and 417 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment