I've been recently looking into upcall tracing inside OVS and its
current challenges.
The current implementation is available in
utilities/usdt-scripts/upcall_cost.py. Essentially it collects all the
events and collelates them in userspace after the data collection has
ended.
I have been working on improving this implementation using ebpf to
perform the bulk of the correlation so that the script has less work to
do. As a result, not only the script is much faster but also is more
accurate since we now don't need to send packet bytes to userspace,
reducing the ring buffer congestion.
This is a summary of the improvements of this implementation:
- More accuracy:
- 6% reduction in event misses
- 57% increase in collected events
- 982% increase in number of analyzable event sets
- Less run time:
- Total time of analysis drops from 27 minutes to 24 seconds.
- Support for fragments:
- We count the upcall cost of each fragment independently
* The numeric results correspond to a 20s iperf3 run with OVS
to upcall 100% of traffic.
Adrian Moreno (1):
usdt-scripts: use ebpf to track upcall_cost
utilities/usdt-scripts/upcall_cost.py | 2657 +++++++++++++++----------
1 file changed, 1568 insertions(+), 1089 deletions(-)
--
2.39.2
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev